2012-02-01 81 views
7

我需要在Android 2.3+上解碼h264文件到YUV。據我所知,我需要與Stagefright進行溝通,因爲它是目前唯一的方式,在關閉訪問OpenMAX IL實現之後。我已經使用FFmpeg的0.10(並試圖0.9/0.9.1 ..)對於這個問題,有NDK7編譯它(也試過NDK6b具有相同的結果):FFMpeg Android Stagefright SIGSEGV錯誤(h264解碼)

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/SD卡/視頻/480p.mp4

完整的Android「答案」,從亞行logcat: http://pastebin.com/76JLgtXX

Android的開發者,沒有任何人知道這個錯誤是什麼手段,以及如何應對的呢? 我試圖讓DSP窗口更大,但沒有運氣。 像「stagefright /sdcard/Video/480p.mp4」的命令工作正常。

P.S.此外,我發現,在一些較大的文件(720P)Android的下一個答案:

[libstagefright_h264 @ 0xd479b0]解碼失敗:8000

回答

2

您啓用libstagefright-H264在你的ffmpeg的配置標誌,但沒有使其成爲如此的解碼器:

--enable-decoder=libstagefright_h264