0

javacpp を使用して ffmpeg プロジェクトを再コンパイルしようとしています。これを--enable-libfdk-aac有効にすると、ビルドは機能しますが、libfdk_aac を使用して audio_stream をデコードすることはできません。

: を呼び出しavcodec_find_decoder_by_name("libfdk_aac")て、次の結果を得ています。

Exception: avcodec_find_decoder() error: Unsupported audio format or codec not found: 86018.

ffmpeg ディレクトリの ccpbuild.sh を次のように変更しました。

  1. 命令の追加: --enable-libfdk-aac ENABLE 変数内

  2. 依存関係の取得:download https://github.com/mstorsjo/fdk-aac/tarball/master fdk-aac.tar.gz

  3. 開梱:tar -xzvf ../fdk-aac.tar.gz

  4. インストール: cd ../mstorsjo-fdk-aac* autoreconf -fiv ./configure --prefix=$INSTALL_PATH --disable-shared --with-pic make -j $MAKEJ make install

これらすべてを macosx プラットフォームで実行しています。

プロセスは問題ないようで、maven を使用してプロジェクトを適切にコンパイルできますが、コーデック「libfdk_aac」を呼び出すと機能しません。私は何か間違ったことをしているのだろうか、それともこのコーデックを登録する必要がある他の場所はありますか? (特にこれは外部ライブラリであるため)

どうもありがとう

4

1 に答える 1

1

最後に、ffmpeg の javacpp プリセットに問題はありません。プリセットに libfdk を追加した方法 (質問の投稿で説明したとおり) は正しかったです。

ただし、Javacv の FFmpegFrameGrabber クラスには、メディアのデコード時にオーディオ コーデックを「強制」するメソッドがありませんでした。このクラスを変更して setAudioCodecName メソッドを追加したところ、これが適切に機能するようになりました。次に、libfdk_aac (またはその他のコーデック) を設定してオーディオをデコードするか、FFmpegFrameRecorder を使用してオーディオをエンコードします。

于 2016-07-04T12:53:31.160 に答える