我需要在Android 2.3及以上版本上将h264文件解码为YUV。据我了解,我需要与Stagefright进行通信,因为目前关闭了与OpenMAX IL实现的访问。我已经尝试过使用FFmpeg 0.10(还尝试过0.9/0.9.1...),并使用NDK7编译它(也尝试过相同结果的NDK6b):
ffmpeg version 0.10 Copyright (c) 2000-2012 the FFmpeg developers
built on Jan 28 2012 14:42:37 with gcc 4.4.3
configuration: --target-os=linux --cross-prefix=arm-linux-androideabi- --arch=arm --cpu=armv7-a --sysroot=/home/grid/Android/Android_NDK/platforms/android-9/arch-arm --disable-avdevice --disable-decoder=h264 --disable-decoder=h264_vdpau --enable-libstagefright-h264 --prefix=build/stagefright/armeabi-v7a --extra-cflags='-Iandroid-source/frameworks/base/include -Iandroid-source/system/core/include -Iandroid-source/frameworks/base/media/libstagefright -Iandroid-source/frameworks/base/include/media/stagefright/openmax -I/home/grid/Android/Android_NDK/sources/cxx-stl/system/include -march=armv7-a -mfloat-abi=softfp -mfpu=neon' --extra-ldflags='-Wl,--fix-cortex-a8 -Landroid-libs -Wl,-rpath-link,android-libs' --extra-cxxflags='-Wno-multichar -fno-exceptions -fno-rtti'
libavutil 51. 34.101 / 51. 34.101
libavcodec 53. 60.100 / 53. 60.100
libavformat 53. 31.100 / 53. 31.100
libavfilter 2. 60.100 / 2. 60.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
硬件: Beagleboard-Xm + TI Android 2.3 (官方版)
因此,输入以下命令会出现480p错误:
ffmpeg -i /sdcard/Video/480p.mp4
已停止(信号) ffmpeg -i /sdcard/Video/480p.mp4
ADB Logcat中的完整Android“回答”如下: http://pastebin.com/76JLgtXX
Android开发人员,请问有谁知道这个错误的含义以及如何处理它?我尝试增加DSP窗口的大小,但没有运气。像“stagefright /sdcard/Video/480p.mp4”这样的命令可以很好地工作。
P.S. 另外我发现在一些更大的文件(720p)上,Android的回答如下:
[libstagefright_h264 @ 0xd479b0] 解码失败:80000000