LINUX.ORG.RU

не собирается ffmpeg c libstagefright

 ,


0

1

Указал export NDK=<ndk-path>

запустил

tools/build_libstagefright

А он мне

Fetching Android system headers
fatal: destination path '../android-source/frameworks/base' already exists and is not an empty directory.
fatal: destination path '../android-source/system/core' already exists and is not an empty directory.
Fetching Android libraries for linking
ERROR: libstagefright_h264 not found

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solving the problem.

При чем про первом запуске на чистом ффмпеге ошибок

fatal: destination path '../android-source/frameworks/base' already exists and is not an empty directory.
fatal: destination path '../android-source/system/core' already exists and is not an empty directory

Но ERROR: libstagefright_h264 not found тоже есть. Кто собирал? Как быть?

Собираю на Ubuntu 12.04.1

★★★★★

Ты разобрался с получением libstagefright? Откуда ты ее берешь?

Если посмотреть дерево исходников Android, то декодера h264 там нет.

Хотя, к примеру, если посмотреть содержимое /system/lib/ galaxy s2

shell@android:/system/lib $ ls *stage*
libstagefright.so
libstagefright_amrnb_common.so
libstagefright_avc_common.so
libstagefright_enc_common.so
libstagefright_foundation.so
libstagefright_omx.so
libstagefright_soft_aacdec.so
libstagefright_soft_amrdec.so
libstagefright_soft_g711dec.so
libstagefright_soft_h264dec.so
libstagefright_soft_mp3dec.so
libstagefright_soft_mpeg4dec.so
libstagefright_soft_vorbisdec.so
libstagefright_soft_vpxdec.so
libstagefright_yuv.so
libstagefrighthw.so

То вариантов намного больше, в том числе проприетарные кодеки.

Я не очень понимаю как это все работает, потому что в официальном NDK этой библиотеки нет, и не понятны пути использования.

mono ★★★★★ ()
Ответ на: комментарий от mono

Там скрипт из ffmpeg качает исходники и бинарники CM как я понял.И с ними и собирает.

Собственно на уровень выше создается два каталога

../android-source/

и ../android-libs

с выкаченными либами. Вот с ними он по идее и должен линковаться.

Dudraug ★★★★★ ()
Ответ на: комментарий от AF

Он качает из CM собаранные либы. Я же написал уже. То есть уже собранно все. Потом ффмпег линкует с ними. Ну нету в NDK этой либы да, зато мы указываем ее через extraldflags для configure ффмпега.

Dudraug ★★★★★ ()
Ответ на: комментарий от Dudraug

Из твоего сообщения совершенно не понятно, на каком этапе упал скрипт. Ты бы заглянул в него, да посмотрел, что он делает. Может в него какие пути захардкожены.

AF ★★★ ()
Ответ на: комментарий от AF

Там захардкожены пути тех библиотек, которые он и качает.

Он упал на configure, могу скинуть чуть позже config.log

Я по нему пробовал что-то разобрать, но пока без результатно.

Dudraug ★★★★★ ()
Ответ на: комментарий от Dudraug

Он упал на configure, могу скинуть чуть позже config.log

В таком случае кастуй в тред знатоков автолулзов.

На ЛОРе любят кричать, что автолулзы круты и удобны, вот пусть теперь и доказывают это на деле.

AF ★★★ ()
Ответ на: комментарий от AF

Алсо у ffmpeg походу самописный configure. Хотя не уверен. Но configure.ac, configure.in и прочего подобного не наблюдаю

Dudraug ★★★★★ ()

Я собрал. ffmpeg-1.1.1, android-ndk-r8d, хост OS X 10.8.2

Нужно было подхачить следующие файлы

tools/build_libstagefright

diff:

@@ -41,10 +41,10 @@ FLAGS="$FLAGS --disable-avdevice --disable-decoder=h264 --disable-decoder=h264_v
 EXTRA_CFLAGS="-I$ANDROID_SOURCE/frameworks/base/include -I$ANDROID_SOURCE/system/core/include"
 EXTRA_CFLAGS="$EXTRA_CFLAGS -I$ANDROID_SOURCE/frameworks/base/media/libstagefright"
 EXTRA_CFLAGS="$EXTRA_CFLAGS -I$ANDROID_SOURCE/frameworks/base/include/media/stagefright/openmax"
-EXTRA_CFLAGS="$EXTRA_CFLAGS -I$NDK/sources/cxx-stl/gnu-libstdc++/include -I$NDK/sources/cxx-stl/gnu-libstdc++/libs/$ABI/include"
+EXTRA_CFLAGS="$EXTRA_CFLAGS -I$NDK/sources/cxx-stl/gnu-libstdc++/4.4.3/include -I$NDK/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/$ABI/include"

 EXTRA_CFLAGS="$EXTRA_CFLAGS -march=armv7-a -mfloat-abi=softfp -mfpu=neon"
-EXTRA_LDFLAGS="-Wl,--fix-cortex-a8 -L$ANDROID_LIBS -Wl,-rpath-link,$ANDROID_LIBS -L$NDK/sources/cxx-stl/gnu-libstdc++/libs/$ABI"
+EXTRA_LDFLAGS="-Wl,--fix-cortex-a8 -L$ANDROID_LIBS -Wl,-rpath-link,$ANDROID_LIBS -L$NDK/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/$ABI"
 EXTRA_CXXFLAGS="-Wno-multichar -fno-exceptions -fno-rtti"
 DEST="$DEST/$ABI"
 FLAGS="$FLAGS --prefix=$DEST"

И ./libavcodec/libstagefright.cpp

diff:

@@ -36,6 +36,7 @@
 extern "C" {
 #include "avcodec.h"
 #include "libavutil/imgutils.h"
+#include "libavcodec/internal.h"
 }

 #define OMX_QCOM_COLOR_FormatYVU420SemiPlanar 0x7FA30C00

Не уверен в правильности этого способа, но ясно куда копать дальше. Работоспособность полученной сборки не проверял, проверю на работе, позже.

mono ★★★★★ ()
Ответ на: комментарий от Dudraug

А кто нибудь может доходчиво мне объяснить как его скомпилировать??? потратил 3 дня уже и ни какого результата =(

mytoff ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.