2016-05-03 21 views
0

Wir versuchen, ffmpeg-Projekt mit javacpp zu rekompilieren und mit --enable-libfdk-aac aktiviert, funktioniert der Build, aber wir können libfdk_aac nicht verwenden, um einen audio_stream zu dekodieren.Javacpp: Hinzufügen von libfdk_aac zu ffmpeg-Voreinstellungen nicht möglich

Wir fordern: avcodec_find_decoder_by_name("libfdk_aac") und bekommen folgendes Ergebnis:

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

Wir haben die ccpbuild.sh im ffmpeg Verzeichnis in folgenden Weise geändert:

  1. das Hinzufügen Befehl: --enable-libfdk-aac in der Variable ENABLE

  2. Die Abhängigkeit erhalten: download https://github.com/mstorsjo/fdk-aac/tarball/master fdk-aac.tar.gz

  3. Auspacken es: tar -xzvf ../fdk-aac.tar.gz

  4. es installieren: cd ../mstorsjo-fdk-aac* autoreconf -fiv ./configure --prefix=$INSTALL_PATH --disable-shared --with-pic make -j $MAKEJ make install

ich das alles auf einem Mac OS X-Plattform renne.

Der Prozess scheint in Ordnung zu sein, und ich kann das Projekt ordnungsgemäß mit Maven kompilieren, aber dann funktioniert es nicht, wenn ich den Codec "libfdk_aac" aufrufen. Ich habe mich gefragt, ob ich etwas falsch mache, oder gibt es einen anderen Ort, an dem ich diesen Codec registrieren muss? (Vor allem, da es sich um eine externe Bibliothek)

Vielen Dank

Antwort

0

Am Ende gibt es kein Problem mit den javacpp Voreinstellungen für ffmpeg. Die Art, wie wir libfdk im Preset hinzugefügt haben (wie ich es in meinem Fragepost beschrieben habe), war korrekt.

In der Klasse FFmpegFrameGrabber in Javacv fehlte uns jedoch eine Methode, um einen Audio-Codec beim Decodieren des Datenträgers zu "erzwingen". Wir haben diese Klasse geändert, um eine setAudioCodecName-Methode hinzuzufügen, die nun ordnungsgemäß funktioniert. Wir können dann libfdk_aac (oder einen anderen Codec) einstellen, um Audio zu dekodieren oder Audio mit dem FFmpegFrameRecorder zu kodieren.