0

ビデオをキャプチャして圧縮し、mpeg2 ts として多重化したいと思います。これはすべて、ffmpeg ライブラリを使用すると非常に簡単ですが、ファイルに書き込む代わりに、ts パケットをバッファーにキャプチャし、このストリームを他の方法で使用することをお勧めします。これを行う簡単な方法はありますか?

エンコードされたフレームを今すぐファイルに書き込むには、av_interleaved_write_frame(oc, &pkt) を使用します。OC は、ファイル名とフォーマットが定義された出力コンテキストです。pkt は、圧縮されたフレームを含む AVPacket です。av_interlaced_write_frame は、ファイルの多重化と書き込みを行っています。

私が最終的に達成したいのは、同じ ts ストリームを複数のファイルに書き込み、互いに独立して異なるファイルの書き込みを開始および停止することです。ストリームごとに新しいマルチプレクサを開始するのは効率が悪いように思われます。TS ストリームは正しく再生されるためにヘッダーや正しいエンディングを必要としないためです (私が読んだものが正しい場合)。

私は ffmpeg コードで良い例を見つけようとして途方に暮れており、ライブラリは十分に文書化されていません。この件に関するご意見をお待ちしております。ありがとうございました!

4

1 に答える 1

1

最後にそれが機能しました。これを行う 1 つの方法は、avio_alloc_context を使用して、ストリームで必要なことを行うコールバックを設定することです。この男はそれの良い例を持っています:

https://github.com/EvilTengil/kinect-streamer/blob/master/src/kstreamer/ffv1_depth_encoder.cpp

于 2012-05-31T07:22:50.513 に答える