問題タブ [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 投票する
2 に答える
1835 参照

c++ - アラインされていないフレーム データ プレーンを使用するように avcodec を強制する方法は?

私は、avcodec がその AVFrame データにアラインされていないメモリを使用することを強制するオプションを高低で検索してきました。

ピクセル フォーマットによっては、AVFrame->data の水平面が余分なデータでパディングされ、パフォーマンスのためにメモリに配置される場合があります。

例: ピクセルあたり 4 バイトの 1920 * 1080 ビデオは、プレーンあたり 1920 * 4 = 7680 バイトになります。

このビデオをデコードする場合、avcodec を使用すると、プレーンごとに 7808 バイトが作成されます。

これにより、7808 - 7680 = 128 バイトの余分なパディングが追加されます。

私の目的のために、avcodec にアラインされていないデータを使用させて、フレーム データの連続したチャンク全体をコピーできるようにしたいと考えています。

ヘッダーに次のフラグが見つかりました。

この AVCodecContext.flags を CODEC_FLAG_UNALIGNED に設定すると、AVFrame->data が整列されていないことが想定されますが、そうではありません。

正しい場所を見ているのか、このフラグを正しく使用しているのかわかりません。

よろしく、

おさるのジョージ

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

opencv - OpenCV 2.4.8 を使用する gstreamer パイプライン プログラムが実行時エラーをスローする

Windows x64 では、OpenCV 2.4.8 を使用する gstream パイプライン プログラムが、ライブラリ avcodec-55.dll にないプロシージャ エントリ ポイント findHomography に関する実行時エラーをスローします。

ダイアログボックスの正確なメッセージは次のとおりです。

「プロシージャ エントリ ポイント ?findHomography@cv@@YA?AVMat@AEBV_InputArray@1@0HNAEBV_OutputArray@1@@Z が、ダイナミック リンク ライブラリ avcode-55.dll に見つかりませんでした。」

この問題をデバッグする方法や何を試すべきかわかりません。同様の問題に遭遇したり、そのような問題をデバッグする方法を提案したりした場合は、ご指摘いただきありがとうございます。

よろしく、アミット!

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

c++ - avcodec YUV から RGB

libswscale を使用して YUV フレームを RGB に変換しようとしています。

これが私のコードです:

私のプログラムは、sws_scale 関数で SEGFAULT を実行します。

VideoFrame は、デコードされたフレームを保持する AVFrame 構造体です。

これは、YUV フレームが次のような配列を返す avcodec_decode_video2 から来ているためだと思います。

YUV420P には理論的には 1 つの平面しかありません (ウィキペディアによると、YUV420P は平面フォーマットであり、Y、U、V データがグループ化されています)。そのため、swscaleを使用して、Y、U、VデータがRGB24に分離されている配列を変換する方法がわかりません。

私を助けてください、ありがとう:)

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

ffmpeg - avcodec_open は非圧縮形式でのみ機能します

コンテキスト: libffmpeg.so という名前のファイルがあります。これはAPKAndroid複数FFMPEGCodecs. したがって、これはエンコーディング オプションを有効にしてコンパイルされ、この .so ファイルにはすべてのコーデックがどこかに含まれていることを当然のことと考えています。このファイルはコンパイルされています(プロファイルARMと呼ばれるもの)。ARMEABIAndroid

APIから呼び出す相互運用機能を備えた非常に完全なクラスもありますffmpeg。この の起源が何であれstatic library、すべての通話応答は良好で、ほとんどのエンドポイントが存在します。そうでない場合は、それらを追加するか、非推奨のものを修正します。

を作成したい場合ffmpeg Encoder、返されたエンコーダは正しいです。

今、私はに問題がありCodecsます。問題は、好奇心から言ってみましょう - すべてのコーデックのリストを反復処理して、 avcodec_open 呼び出しで開くことができるコーデックを確認することです...

...その後、圧縮されていないコーデックのみが機能しています。(YUV、FFmpeg ビデオ 1 など)

私の仮説は次のとおりです。

  • .so ファイルへのコンパイル時に欠落していたオプション
  • av_open_codec 呼び出しは、呼び出しで参照した AVCodecContext のプロパティに応じて動作します。

非圧縮コーデックの最小限のセットのみが返されるのはなぜですか?

[編集]

@ronald-s-bultjeの回答により、AVCodecContext APIの説明を読むようになりました。エンコーダーで使用する場合、「ユーザーが設定する必要があります」という必須フィールドがたくさんあります。これらのパラメータに値を設定するAVCodecContextと、ほとんどのナイス コーデックが利用可能になります。