2011-09-27 57 views
8

私は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に同時に読み込ませようとしました。これはある程度はうまくいきますが、ファイルから同時に読み書きすることは危険です。誰が何が起こるかは分かります!

+0

私は同様のことをやろうとしています。あなたはパイプ/ etcについて説明する記事を見つけましたか? –

+2

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

答えて

9

私は以前は同じことを試してみましたが、ここで私はそれをやりました。

OpenCVのビデオデコードバックエンドは実際にはffmpegなので、すべてのfacitilitesはOpenCVでも利用できます。すべてのインターフェイスが公開されているわけではありませんが、いくつか問題がありますが、rtpストリームアドレスをOpenCVに送信できます。

cap.open("rtp://xxx.xxx.xxx.xxx:1234"); 

重要:OpenCVのは、パスワードで保護されたRTPストリームにアクセスすることができません。これを行うには、ユーザー名とパスワードを提供する必要があります。公開されるAPIはありません。

+0

ファイルをrtpにストリームするために使用されたコマンドに言及してください。それにffmpegだけを使いましたか?それとも別のものをインストールする必要がありましたか? – user2565010

+0

こんにちは!あなたは、opencvを使ってネットワーク経由で送信するためにrtmpストリームにイメージを書き戻す方法を教えてください。ありがとう! –

関連する問題