問題タブ [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.

0 投票する
2 に答える
1139 参照

mp4 - libavformatを使用して断片化されたmp4ファイルをプログラムで出力する方法は?

moov アトムは通常ファイルの最後に記述されるため、フラグメント化されていない mp4 ファイルでは使用できないライブ ストリーミング用の mp4 ファイル形式を使用したい。断片化された mp4 ファイルを生成して、ライブ ストリーミング用にネットワーク経由で転送する必要があります。libavformat を使用しています。問題は、断片化されていない mp4 ファイルは libavformat で簡単に書き込めるのですが、断片化された mp4 ファイルの書き方がわかりません。では、libavformat を使用して断片化された mp4 ファイルを書き込む方法は?

0 投票する
1 に答える
11327 参照

audio - pcm オーディオを .mp4 コンテナ ファイルに保存できません

pcm オーディオ ファイルを .mp4 ファイルに保存することはできますか?

ffmpegコマンド「ffmpeg -i tempA.wav -acodec copy temp.mp4」を使用しましたが、mp4コンテナファイルに保存できません。

「tempA.wav」から #0、wav を入力:

再生時間: 00:01:36.51、ビットレート: 128 kb/s

[mp4 @ 0x7d70e0] タグ [1][0][0][0]/0x00000001 は出力コーデック ID '65536' と互換性がありません

#0、mp4 を「temp.mp4」に出力:

ストリーム マッピング:

ストリーム #0.0 -> #0.0

出力ファイル #0 のヘッダーを書き込めませんでした (コーデック パラメータが正しくありませんか?)

.AVI (ffmpeg -i tempA.wav -acodec copy temp.avi) & .MOV ( ffmpeg -i tempA.wav -acodec copy temp.mov) ファイル形式への変換は問題なく動作します。

0 投票する
1 に答える
620 参照

libavcodec - libav の RTP 機能を使用するにはどうすればよいですか?

SIP プラットフォームでの RTP オーディオ ストリーミングおよび録音用の独自のメディア エンジンがあります。次に、RTP ビデオのストリーミングと録画のサポートを実装する必要があります。libavを使用する予定です。

libav を使用したビデオ ストリーミングと録画のドキュメントとコード スニペットを検索しました。また、http://libav.org/documentation.htmlも調べましたが、何の手がかりも得られませんでした。

libav に関連する他の場所にあるコード スニペット (例) のほとんどは古くなっています。

私は RTSP 機能を使用したくなく、RTP インターフェースのみに関心があります。参照できるドキュメントはありますか?

ヘルプやポインタをいただければ幸いです...

ありがとう、アマール。

0 投票する
0 に答える
1432 参照

ffmpeg - FFMPEG libavformat 内部バッファリング

C++ オーディオ ストリーミングおよび再生アプリケーションに FFMPEG を使用しています。

avformat_open_input関数を使用して、外部圧縮オーディオ ファイルへの URL を開き、 av_read_frame を使用してストリーミングに進みます。次に、各パケットについて、データを直接デコードし、OpenAL を使用してオーディオ バッファーにキューに入れます。

私の質問は、FFMPEG が外部 URL からの圧縮データを内部的にプリバッファリングするかどうかです。

av_read_frame を呼び出さなくても、FFMPEG はバックグラウンドでデータをダウンロードし続けます?

それとも、オーディオ再生が枯渇するのを避けるために、できるだけ多くのパケットを事前にダウンロードする中間バッファを維持するのは私の責任ですか?

もしそうなら、それはどれくらい内部的にバッファ/ダウンロードしますか? これを設定できますか?

ドキュメントを調べましたが、これに関する情報は見つかりませんでした。

ありがとう。

更新: このスレッドhttp://ffmpeg.zeranoe.com/forum/viewtopic.php?f=15&t=376によると、 libav はデフォルトで AVFormatContext::max_analyze_duration に応じて約 5MB プリバッファする必要があります。ただし、この動作に気づいていません。max_analyze_duration を変更しても変わらないようです。

プロセスのメモリ消費を監視すると、avformat_open_input を呼び出した後も増加しません。低速ネットワークをシミュレートすると、パケットがバッファリングされていないかのように、av_read_frame が直接動作を停止します。

0 投票する
2 に答える
885 参照

ffmpeg - 単一の h264 ビデオ ストリームのコンテナ

生の264ファイルを出力する単純なh264エンコーダーのコードがあります。再生可能なコンテナーにビデオを直接出力するように拡張したいと考えています。VLCで再生できるものであればどちらでも構いません。では、この生の H264 ファイルにラッパーを含める最も簡単な方法は何でしょうか?

私が Web で調べたところ、人々は ffmpeg と libavformat を使用していましたが、私はスタンドアロン コードを使用したいと考えています。オーディオ、字幕、チャプターなどの派手なものは必要なく、ビデオ ストリームだけが必要です。

ありがとう!

0 投票する
1 に答える
841 参照

audio - AES 暗号化を使用した FFMPEG libavformat 読み取りおよび書き込みヘッダー

次の libavformat 関数を使用して、オーディオ ファイル (さまざまな形式) を読み取り、それをディスク上の新しいファイルに書き込みます。

  • avformat_open_input (新しいストリームの読み取りを開始)
  • avio_open (新しいファイルの書き込み開始)
  • avformat_write_header (読み始めたのと同じヘッダーを書きます)
  • av_read_frame (フレーム取得)
  • av_write_frame (フレームからディスクへの書き込み)

これに暗号化を追加することが可能かどうか疑問に思っています。これは、ヘッダー部分または while ファイルのいずれかです。つまり、実際に新しいファイルに書き込む前にデータを暗号化し、次に読み取る前に復号化したいということです。

AES 暗号化を使用して読み取り時に暗号化し、書き込み時に復号化する FFMPEG サポートはありますか?

そうでない場合、上記の関数を使用するときに読み書きされているデータを傍受して変更できる方法はありますか?

libavutil には AES 暗号化/復号化関数 (aes.h 内) があることは知っていますが、使用している他の libavformat 関数にそれを適合させる方法に関する適切な情報が見つかりません。

ありがとう

0 投票する
1 に答える
4045 参照

ffmpeg - SDL 2.0 で画面に AVFrame を表示する

このチュートリアルの助けを借りて、ffmpeg と SDL の最新の開発ライブラリを使用して、いくつかのコードに取り組んでいます。デコードされたフレーム (AVFrame) を画面に表示する必要があるところに行き詰まりました。上記のタスク、つまり、 SDL 2.0 の最新の API を使用して画面に AVFrame を表示する傾向があります(SDL_Window の使用に加えてレンダラーとテクスチャを使用します)。率直に言って、私はSDL_RendererSDL_Texture 、およびそれらに関連する関数の専門家ではありません。しかし、私は SDL 2.0 の公式サイトにあるドキュメントを読んで、それらを調べています。

SDL 2.0 API を使用して次のことを行う方法はありますか:

  • ネイティブのフレーム形式をYUVのフレーバーに変換して表示します。

    (また)

  • 可能であれば、ネイティブ形式から変換せずにフレームを表示します。

レンダラーとテクスチャを使用して上記を実行したいと考えています。彼らと一緒に仕事をする簡単な方法はないようです。

上記のタスクを実行するための手順を案内してくれる人はいますか?

PS : 明示的に試したことはありませんが、AVFrame 形式 (ネイティブ) を RGB に変換することで、AVFrame を画面に表示する方法をいくつか見つけました。しかし、計算コストが高いため、ネイティブ フレーム フォーマット (ほとんどが YUV) から RGB への変換は必要ありません。

フォーマット間の変換は sws_scale() によって行われます