私はrtpからffmpegへのビデオストリームを受信しています。これをライブストリーミング処理用のOpenCVツールにパイプしたいと思っています。着信データをファイルに送信して再生できる(または再生経由で再生する)ことができるため、rtpリンケージが機能しています。ファイルとウェブカメラからビデオをキャプチャできるので、私のOpenCVの実装も機能的です。ffmpegからビデオをストリームし、OpenCVでキャプチャ
問題はOpenCVへのストリーミングです。これは名前付きパイプを使って行うことができると聞いています。まず、ffmpegの出力をパイプに流し込み、OpenCVにこのパイプを開いて処理を開始させることができました。私は、RTPからのストリームを引き出し、それを送信するために私のffmpegのコマンドを使用し
$ mkfifo stream_pipe
次へ:によって私はCygwinのbashで名前付きパイプを作る
を:私が試した
パイプ:、これは名前付きパイプにストリームを送信について移動する正しい方法であれば
$ ffmpeg -f avi -i rtp://xxx.xxx.xxx.xxx:1234 -f avi -y out.avi > stream_pipe
は私はわからないが、それはので、私のビットレートを与えるffmpegの出力のコマンドと仕事を受け入れているように見えますfpsなどがあります。
$ ./cvcap.exe stream_pipe
cvcap.cppのコードはこれに沸く:
cv::VideoCapture *pIns = new cv::VideoCapture(argv[1]);
プログラムは、このに達したときにハングアップするようだ
次は私が私のOpenCVのキャプチャ機能では、名前付きパイプを使用します私はこれが正しいことなのかどうか疑問に思っています。以前は名前付きパイプを使用していませんでしたが、これが正しい使用法であるかどうかはわかりません。さらに、OpenCVで名前付きパイプを別に処理する必要があるかどうかは分かりません。この種の入力を受け入れるにはコードを変更してください。私が言ったように、私のコードはすでにファイルとカメラの入力を受け入れています。私はちょうど入って来るストリームでハングアップしています。名前付きパイプをOpenCVに使うことができると聞いたことがあります。
ご意見やご感想をお寄せください。
UPDATE:
私は名前付きパイプは、私が意図した方法で作業することはできませんと信じています。で見たようにthis cygwinフォーラム投稿:
問題は、CygwinのFIFOの実装は非常にバグです。私はfifoをアプリケーションの最も単純なもの以外に使うのはお勧めしません。
これを行うには別の方法が必要な場合があります。私は、通常のファイルにffmpegの出力をパイプして、OpenCVに同時に読み込ませようとしました。これはある程度はうまくいきますが、ファイルから同時に読み書きすることは危険です。誰が何が起こるかは分かります!
私は同様のことをやろうとしています。あなたはパイプ/ etcについて説明する記事を見つけましたか? –
ffmpeg-usersフォーラムでこの小さな投稿http://ffmpeg-users.933282.n4.nabble.com/h264-problem-td2574908.htmlが見つかりました。私もVLC http://forum.videolan.org/viewtopic.php?f=32&t=69351と何かこれをx264と同様にしようとした人が見つかりましたhttp://forums.creativecow.net/readpost/291/84 – chembrad