問題タブ [libav]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
video - libav を使用してメモリ ストリームにビデオを書き込む
libav を使用して、ネットワークからビデオ パケットを正常にキャプチャしています。現在、ヘッダーやパケットなどを書き込むことができる AVFormatContext オブジェクトがあります。ポイントは、必要に応じて、このコンテキストのすべてをファイルにダンプしたいということです。私は何をすべきか ?
前もって感謝します, ディダック・ペレス
c++ - libavを使用してメモリからビデオファイルをデコードします
ビデオファイル全体がメモリにあり、libavを使用してフレーム全体をデコードするとします。どうすればいいですか?重要なのは、avformat_open_input()関数を使用してファイルから直接読み取ることができますが、メモリに保存されているファイルから読み取る必要があるということです。
私のAVIOContextの実装:
私の現在のコード:
前もって感謝します、
DídacPérez
c++ - LibAv/FFMpeg のスレッドセーフ?
LibAV/FFMpeg はスレッドセーフですか? 例えば。あるスレッドで AVFormatContext* を使用してファイルから読み取り、読み取りパケットを別のスレッドで単純にミューテックスを追加してデコードできますか、それともライブラリのスレッドの安全性は「わからない、気にしない」タイプの取引ですか? libav がエンコーダー スレッドの基本的なサポートを持っていることは知っていますが、複数のスレッド (ソース -> デコーダー -> フィルター -> エンコーダー -> シンク) に分割するブラックボックス タイプのアプローチを試し、複雑さを理解しようとしています。そのようなの。
ffmpeg とスレッドの経験があり、これに関連するその他の情報を教えていただけると幸いです。
ffmpeg - RTSPをコンピューター時間と同期する
私はlibavを使用してRTSPネットワークソースからビデオストリームを受信することに成功しています。重要なのは、コンピューターの時刻をビデオキャプチャと同期させる必要があるということです。つまり、コンピューターのどの日時が最初のフレーム(pts = 0)に対応するかを知る必要があります。私のAPI呼び出しは次のとおりです。
上記の呼び出しで、フレームの読み取りに成功しましたが、ptsが0であるため、最初のフレームに対応する正確な絶対日時を知る方法を知る必要があります。time()関数またはGetSystemTimeを使用できるかもしれません。 (私はWindowsを使用しています)上記の2つの呼び出しの間にありますが、libavがどのように機能するかは実際にはわかりません。
ffmpeg - キーフレームはキーフレームではありませんか?AV_PKT_FLAG_KEYはAV_PICTURE_TYPE_Iにデコードされません
フラグにAV_PKT_FLAG_KEYを含むパケットをデコードした後、Iフレームを取得することを期待していましたが、代わりにPフレームを取得しました。
に電話した後:
健全性チェックとして以下を印刷します。
出力を返します:
私が期待していたとき:
ここで、「1」==AV_PKT_FLAG_KEY。「I」はAV_PICTURE_TYPE_Iを指し、
この動作は正しいですか?(私はMPEG2ビデオをデコードしています)。
ffmpeg - ffmpegのキーフレーム生成を制御する方法は?
ffmpegのwrite_frame関数に介入し、出力データを別々のファイルに書き込むセグメンターを作成しています。セグメント化された各ファイルには、約3秒のビデオのセグメントが含まれています。
コードは次のようになります。
一般的に、すべてのセグメントには少なくとも3秒のビデオデータが含まれ、キーフレームで始まります。
問題は、出力ビデオの長さが大きく異なり、3秒が含まれるものもあれば、5または6が含まれるものもあることです。
トランスコーディング中にffmpegがキーフレームを生成する方法に起因する問題が疑われます。2つの隣接するキーフレーム間の「距離」が6秒の場合、6秒のセグメントが得られます。
これが私の質問です:
ffmpegが不規則な間隔でキーフレームを生成するというのは本当ですか(そして間隔時間は最大数秒(例:6)になる可能性があります)?
ffmpegキーフレームの生成をどのように制御できますか?(これにはffmpegコマンドの引数があるはずです、-force_key_framesかもしれませんが、よくわかりません)
stdvector - std::vector の使用libav エンコード/デコード例の fread() の代わりに
fread を使用してファイルを読み込む api-example.c を取得しようとしています。代わりに memcpy (など) を使用しますstd::vector<char>
。(圧縮アーカイブからメモリに読み込んだため)。これを達成する方法についての提案や例はありますか?
元の api-example http://svn.perian.org/ffmpeg/libavcodec/api-example.c
私の現在の「進捗状況」 http://pastebin.com/Ag0KfEsg
c++ - libav* を使用して KLV パケットを H.264 ビデオにエンコードするにはどうすればよいですか?
現在、libav* を使用して H.264 ビデオをエンコードしています。KLVPackets をビットストリームに追加したいのですが、実装する場所がわかりません。
avcodec 内に struct がありますが、それをフレーム メタデータに書き出す方法がわかりません
現在の FFMPEG コード (関連するコードのみを残します):
私が作業できる例を知っている人はいますか?
c++ - raw pcm から OGG Vorbis への libav オーディオ エンコーディングの例
現在、複数の独自フォーマットのゲーム メディア アセットを変換し、よりオープンなフォーマットに変換するツールに取り組んでいます。libav ライブラリhttp://libav.org/を使用して、WAV、mp3、ect 形式から生の pcm にデコードしstd::vector<char>
(正常に完了しました)、それを ogg vorbis にエンコードしようとしています。ドキュメントでを使用しようとしてapi-example.c
います。https://github.com/FFmpeg/FFmpeg/blob/master/doc/examples/decoding_encoding.cしかし、トーン生成が終了し、AVPacket エンコーディングが開始する場所で立ち往生しているため、ほとんど進歩していません。
std::vector
ファイル(できればogg vorbis)に書き出す生のpcmファイル(または)からのオーディオエンコーディングの実例を教えてもらえますか?
c++ - C++ プログラムで libav とともに libvo-aacenc を使用する
この録音を記録して aac にエンコードするプログラムを作成しています。この作業を行う Linux および libfaac 用の関数を作成しました。今、このプログラムを Windows 用に作成する必要があります。libvo-aacenc を使用する必要があることはわかっていますが、コードで何を変更すればよいかわかりません。どうすればよいか教えていただけますか? これが私のコードです。