2012-02-01 34 views
7

Tôi cần giải mã h264 tệp thành YUV trên Android 2.3+. Theo tôi hiểu tôi cần giao tiếp với Stagefright, vì đó là cách duy nhất hiện nay, sau khi đóng quyền truy cập với các triển khai OpenMAX IL. Tôi đã sử dụng FFmpeg 0.10 (và cố gắng 0.9/0.9.1 ..) cho vấn đề này, biên dịch nó với NDK7 (và cũng đã cố gắng NDK6b với kết quả tương tự):Lỗi FFMpeg Android Stagefright SIGSEGV (giải mã 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}... 

Phần cứng: BeagleBoard-Xm + TI Android 2.3 (chính thức)

Vì vậy, khi nhập lệnh tiếp theo cho tôi lỗi với 480p: ffmpeg -i /sdcard/Video/480p.mp4

Stopped (tín hiệu) ffmpeg -i/sdcard/video /480p.mp4

Full Android "câu trả lời" từ ADB Logcat: http://pastebin.com/76JLgtXX

Android các nhà phát triển, không ai biết những gì lỗi này phương tiện và làm thế nào để đối phó với nó? Tôi đã cố gắng làm cho cửa sổ DSP lớn hơn, nhưng không có may mắn. Các lệnh như "stagefright /sdcard/Video/480p.mp4" hoạt động tốt.

P.S. Ngoài ra tôi thấy rằng trên một số tập tin lớn hơn (720p) câu trả lời Android tiếp theo:

[libstagefright_h264 @ 0xd479b0] Giải mã thất bại: 80000000

Trả lời

2

Bạn kích hoạt libstagefright-h264 trong cờ ffmpeg cấu hình của bạn, nhưng không bật nó làm bộ giải mã như vậy:

--enable-decoder=libstagefright_h264 
Các vấn đề liên quan