圧縮されていないオーディオとビデオをあるプロセスから別のプロセスにパイプしたい。
それはそれがいくつかの容器に詰められるべきであることを意味します。タスクに最適なのはどれですか?
私は試した ffmpeg -i ... -vcodec rawvideo -acodec pcm_s16le -f ... -y test
、しかしそれはほとんど失敗します。結果として得られるMatroskaファイルは、ffmpeg(mplayerではない)と考えた場合にのみ再生可能であり、AVIはパイプからはうまく再生されません。
更新:
のように見えます
ffmpeg -i ... -vcodec rawvideo -acodec pcm_s16le -f avi -y - | mplayer -cache 200000 -noconsolecontrols -
多かれ少なかれ安定して動作します。 -f matroska
はgstreamer/ffplayでも機能しますが、mplayer/vlcでは機能しません。
「あるプロセスから別のプロセスへ」と言ったとき、ビデオがまだディスクに存在していないことに気づきませんでした。そうは言っても、.ts
形式のバリアントを使用するのがおそらく最善でしょう。ビデオが最初にディスクに存在しない状態で、あるプロセスから別のプロセスにビデオを直接ストリーミングしようとしたことはありませんが、.ts
ファイルをディスクに書き込み、ファイルがまだディスクに書き込まれている間に、別のプロセスを介して読み取ります。ディスクの書き込みにはおそらく方法がありますが、それが何であるかはわかりません。