問題タブ [libavformat]
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.
ffmpeg - FFmpeg の libavformat API を使用したダイレクト ストリーム コピーで作成されたファイルの再生が 3600 fps で速すぎる
私は、H.264 および AAC を含む MP4 ファイルをストリーミングに適した MPEG-TS セグメントに変換する libavformat API ラッパーに取り組んでいます。再エンコードせずに単純なストリーム コピーを行っているだけですが、作成したファイルは 24 fps ではなく3600 fpsでビデオを再生します。
ffprobe https://gist.github.com/chrisballinger/6733678からの出力の一部を次に示します。破損したファイルは以下のとおりです。
ffmpeg を介して手動で送信された同じ入力ファイルには、適切なタイムスタンプ情報が含まれています。
libavformat のセットアップのどこかに問題があると思います: https://github.com/OpenWatch/FFmpegWrapper/blob/master/FFmpegWrapper/FFmpegWrapper.m#L349ここで、必要な ffmpeg.c からのコードの束を転用しました。ダイレクト ストリーム コピーの場合。
3600 は「マジック ナンバー」(60*60) のように見えるため、タイム スケールを適切に設定していないのと同じくらい簡単かもしれませんが、自分のコードが ffmpeg/avconv 自体から分岐している場所がわかりません。
ここでも同様の質問がありますが、彼らは私ほど遠くまで到達したとは思いません: Muxing a H.264 Annex B & AAC stream using libavformat with vcopy/acopy
c - libavformat / ffmpeg cプログラム「入力形式が適切ではありません」
こんにちは、C ffmpeg ライブラリを使用してビデオをエンコードしようとしています。何らかの理由で、フォーマット コンテキストを作成しようとすると、次のエラーが表示されます。
[NULL @ 0x7ff574006600] Requested output format 'mp4' is not a suitable output format
私のffmpegがx264フラグでコンパイルされていることを知っています。
ffmpeg -i test.mov test.mp4
正常に動作します。また、生成されたすべての pch ファイルとリンクしており、libav* ライブラリの他のすべては正常に動作しています。これは、私が受け取っているエラーの完全な動作例です。
ffmpeg - libavcodec でビデオをエンコードするときの非常に高いビット レート
カメラ出力をキャプチャし、libavcodec を使用してビデオを作成しようとしています。これを達成する方法の例として、私はffmpeg muxing exampleを使用しました。
問題は、AVCodecContext のビットレートを 400000 に設定したにもかかわらず、4 秒のビデオのサイズが ~15mb でビットレートが ~30000 kb/s であることです (この値は kb/s ではなくビット/秒であると考えています)。 .
また、コマンド ラインから ffmpeg を使用してビデオを録画しようとしましたが、ビットレートは ~700 kb/s です。
ビットレートが保持されず、結果のファイルが非常に大きくなる理由を知っている人はいますか? コーデック コンテキストを初期化するために使用したコードは次のとおりです。
初期化部分:
ffmpeg - libavformat でマルチプレクサ オプションをどのように設定しますか?
libavformat マルチプレクサー「hlsenc.c」を使用しようとしています....マルチプレクサーのコードを見ると、マルチプレクサーは AVOption メカニズムを介してパラメーターをサポートしているように見えます...たとえば、hlsenc.c マルチプレクサーは AVOption をサポートしています。 「hls_time」というパラメーター...
適切な出力形式を見つけるために av_guess_format("hls",NULL,NULL) を使用していますが、これらのオプションをどのように設定しますか?
(インターネット上のすべてのサンプルがコーデックのオプションを設定しているようです...マルチプレクサのオプションを設定したい)。
video - ffmpegでPTS値を確実に取得しますか?
照会されたときに次のフレームとプレゼンテーションのタイムスタンプを提供するメソッドを作成しようとしています。コードは現在、次のようになっています。
私はここまでドレンジャーのチュートリアルに従ってきましたが、フレームの PTS 値を確実に取得するのに行き詰まりました ( http://www.dranger.com/ffmpeg/tutorial05.html )。返される PTS 値は常に 0 です。
また、get_buffer()
廃止されたため、get_buffer2()
メソッドを使用してグローバルpts値を設定しています。ただし、このrelease_buffer
メソッドも廃止されており、代替品が見つからないようです。これにより、チュートリアルで説明されている方法は、このタスクを達成するための最良の方法ではない可能性があると私は信じています.
要するに、最新の ffmpeg を使用して、フレームの pts 値を確実に取得する最良の方法は何ですか?
video - FFMPEG: コーデックのコンテキストを定義することは必須ですか?
私はデコーダーコードを持っています。に統合しようとしていffmpeg framework
ます。
ここにある HOW TO を参照しています: http://wiki.multimedia.cx/index.php?title=FFmpeg_codec_howto
その記事によると、decoder_name.c
ファイルに構造を定義する必要があります。
構造の例を以下に示します。
どこ、
ただし、上記の記事によると、私の疑問は.priv_data_size
、何らかのコンテキストのサイズを保持するという別のフィールドがあるということです。
.priv_data_size
上記の記事によると、構造体のすべてのパラメーターを定義する必要はないため、このフィールドを持つことは必須ですかAVCodec
。さらに、デコーダーにそのようなコンテキストはありません。
libavcodec
ただし、 ffmpegの他の利用可能なデコーダーのコードを調べると、すべてのデコーダーがこれを定義していることがわかります。これを指定しない場合、デコーダは機能しますか? このため、先に進むことができません。同じことを評価するガイダンスを提供してください。
- 前もって感謝します。
c - libavformat のメモリ アクセス関数 (malloc、realloc など) を独自のカスタム関数でオーバーライドする方法
libavformat-dev パッケージを使用して、ビットレート、期間などのメディア ファイル プロパティを取得しています。ただし、libavformat が使用するシステム関数の代わりに、カスタムの malloc、calloc、realloc 関数を使用したいと考えています。カスタム関数を libavformat に登録する方法はありますか?