FFMpeg Android Stagefright SIGSEGV 错误(h264 解码)

Posted

技术标签:

【中文标题】FFMpeg Android Stagefright SIGSEGV 错误(h264 解码)【英文标题】:FFMpeg Android Stagefright SIGSEGV error (h264 decode) 【发布时间】:2012-02-24 06:31:00 【问题描述】:

我需要在 android 2.3+ 上将 h264 文件解码为 YUV。据我了解,在使用 OpenMAX IL 实现关闭访问之后,我需要与 Stagefright 进行通信,因为这是现在唯一的方法。我已经使用 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-developers,有谁知道这个错误是什么意思以及如何处理它? 我试图让 DSP 窗口更大,但没有运气。 像“stagefright /sdcard/Video/480p.mp4”这样的命令可以正常工作。

附:此外,我发现在一些更大的文件(720p)上,Android 会回答下一个:

[libstagefright_h264 @ 0xd479b0] 解码失败:80000000

【问题讨论】:

【参考方案1】:

您在 ffmpeg 配置标志中启用了 libstagefright-h264,但没有将其作为解码器启用:

--enable-decoder=libstagefright_h264

【讨论】:

以上是关于FFMpeg Android Stagefright SIGSEGV 错误(h264 解码)的主要内容,如果未能解决你的问题,请参考以下文章

Android FFMPEG 开发Android 中执行 FFMPEG 指令 ( mobile-ffmpeg 开源项目介绍 | 集成 mobile-ffmpeg 框架 )

Android FFMPEG 开发Android 中执行 FFMPEG 指令

Android FFMPEG 开发Android 中执行 FFMPEG 指令

android ffmpeg支持rmvb格式吗

android ffmpeg视频添加字幕和配音

Android FFMPEG 开发Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 )