問題タブ [avcodec]

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 投票する
1 に答える
239 参照

c++ - ffmpeg - AVCodecContext の要素にアクセスする

AVCodecContext *av_ctx私のプログラムで私のいくつかのメンバーにアクセスしたい。32bit 版でコンパイルすると問題ないのですが、64bit 版に変更すると、この要素がシフトしたように動作します。

たとえばav_ctx->coded_width、 andを取得して (場合によってはand とav_ctx->coded_heightは異なります)、それらをいくつかの変数に格納します。このプログラムを 32 ビット バージョンでデバッグすると問題ありませんが、64 ビット バージョンではこの値が間違っていて、構造を確認すると、次の 2 つの要素 (と) が必要な値を持っていることがわかります。av_ctx->widthav_ctx->heightav_ctx->gop_sizeav_ctx->pix_fmt

AVCodecContext私は宣言をチェックしましたavcodec.h、そしてそれは(構造宣言の上のコメントで)言います:

ユーザー アプリケーションからこれらのフィールドにアクセスするには、AVOptions (av_opt* / av_set/get*()) を使用してください。

これはこれらの要素を取得する正しい方法かもしれないと思いますが、このAVOptionsが何であるかわかりません。検索しましたが、それが何であるか、どのように使用できるかを見つけることができませんでした。

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

ffmpeg - avcodec_encode_audio2()/avcodec_encode_video2() を avcodec_send_frame() および avcodec_receive_packet() に置き換える方法は?

リンクの多重化の例では、推奨されていない/の代わりにavcodec_send_frame()andを使用しようとしています。のavcodec_receive_packet()avcodec_encode_audio2()avcodec_encode_video2()

そして

関数と関数got_packetを使用するときに変数を割り当てるものと、その場合のコードの変更方法. 私はこれまでにこれを試しましたavcodec_send_frame()avcodec_receive_packet()

しかし、機能しておらず、機能させるのに苦労しています。

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

http-live-streaming - HLS/MPEG-TS への AAC の avcodec 構成 ([mpegts @ 0x7fc4c00343c0] AAC ビットストリームが ADTS 形式ではなく、余分なデータが欠落している)

ビデオを H264 にエンコードし、生の PCM サンプルを HLS ストリーミング用の AAC にエンコードしています。ビデオは問題なく動作しますが、libavcodec での AAC エンコーダーの構成に問題があります。

この SO の質問は次のように述べています。

AAC をトランスポート ストリームに入れる方法は 2 つあります。

1. ADTS 構文 (MPEG2 スタイル) を使用します

このような場合、PMT の stream_type は 0x0F (ADTS トランスポート構文を使用した ISO/IEC 13818-7 オーディオ) として指定する必要があります。

そのため、SBR と PS を使用せずに、「古い」(MPEG2) AAC バージョンのみを使用するように制限されています。

2. LATM+LOAS/AudioSyncStream 構文 (MPEG4 スタイル) を使用します。

このような場合、PMT の stream_type は 0x11 (LATM トランスポート構文を使用した ISO/IEC 14496-3 オーディオ) として指定する必要があります。

また、SBR や PS などの「新しい」(MPEG4) AAC 機能をすべて使用できます。

さらに、DVB 標準 ETSI TS 101 154 は次のように要求しています。HEv1/HEv2 AAC は LATM 構文を使用して送信されます。

しかし、多くの検索を行った後、これらのいずれかを行う方法に関するドキュメントが見つかりません。MPEG-TS マルチプレクサに (HLS への出力用に) 渡される前に、ADTS または LATM でエンコードされたオーディオを取得するために、以下の構成に欠けているものは何ですか?

AAC コーデックを設定する現在のコードでエラーが発生する[mpegts @ 0x7fc4c00343c0] AAC bitstream not in ADTS format and extradata missing

AAC エンコーダーのセットアップ(簡潔にするためにエラー チェックを削除)

HLS MUX のセットアップ

エンコードループ

出力

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

ffmpeg - ffmpeg を使用したビデオ フレームの抽出

ffmpeg を使用したフレーム抽出の問題で立ち往生しています。私は filmora や shotkut などのビデオ エディターで特定のフレーム期間を指摘しています (どちらも最大 2 ミリ秒までコヒーレントです)。次に、ffmpeg でその期間を使用して、ネイティブ フレームレートですべてのフレームを抽出しています。ただし、抽出された最初のフレームと、エディター (vlc、wondershare、filmora はすべて同じ) の対応する画像の両方が異なるのを見ると、完全な一貫性が得られません。

以下にコマンドの例を示します。

ffmpeg -i "/mnt/sda1/Downloaded_Videos/25mm_Videos/24- 12_21/0840.mp4" -ss 00:09:50.18 -to 00:10:49.22 /mnt/sda1/ExtractedFrames/25mm/24Dec_test/frame %5d_0r_0840_00095018_00095 png

抽出されたフレームframe_0_0r_0840_00095018_00095018.pngは、タイムスタンプ : 00:09:50.18に移動するときに、エディターおよび vlc プレーヤーに読み込まれた画像またはフレームとは異なります。