4

我的任务涉及将视频解码器集成到Stagefright(Android 的多媒体框架)中。我搜索并发现以下有关为以下内容创建新插件的信息Stagefright

要添加对新格式的支持,您需要:

  • 如果容器还不支持,开发一个新的 Extractor 类。

  • 开发一个新的解码器类,实现StageFright核心读取数据所需的接口。

  • 将要读取的文件的 mime 类型与数组中OMXCodec.cpp文件中的新解码器相关联。kDecoderInfo

    static const CodecInfo kDecoderInfo[] = {  
        {MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.decode"},
        {MEDIA_MIMETYPE_AUDIO_AAC, "AACDecoder"},
    };

以上数据都是我在网上能查到的。现在我有一个简单的应用程序,它将一个文件作为输入,并使用 android 中的本机 API 将其呈现在屏幕上。谁能告诉我如何进一步进行。所有这些和其他内容从哪里OMXCodec.cpp出现,我应该将它们放在我的项目的哪个目录中。请提供有关相同的解决方案。提前致谢。

4

1 回答 1

10

从您的问题来看,您似乎正在查看特定于Ice-Cream SandwichAndroid 或更早版本的推荐。首先你应该清楚的是android ie 的版本Ice-Cream Sandwich或之前或JellyBean之后的版本。编解码器的集成在不同版本的 Android 中是不同的。

我已经评论了您的其他特定于JellyBean和以后的问题(参考:Android:如何将解码器集成到多媒体框架

如果您想在Ice-Cream Sandwich其中或之前集成您的编解码器,您的问题中已经提供了这些步骤。除了将解码器添加到kDecoderInfo列表中之外,您可能还想设置某些怪癖,如此处所示

关于 的问题,您可以在in case of和in case of 中OMXCodec.cpp找到该文件 。frameworks/base/media/libstagefright/Ice-Cream Sandwichframeworks/av/media/libstagefright/JellyBean

如果您已按照所有步骤将视频解码器集成到Stagefright框架中,那么最简单的测试将是执行以下操作:

  1. 将媒体文件复制到 SD 卡中

  2. OMXCodec.cpp中,通过删除此语句中的注释来启用日志//#define LOG_NDEBUG 0并在目录中运行 a mm。将重建复制libstagefright.so/system/lib您的设备上。

  3. 启用logcat并开始捕获日志。

  4. 转到图库,选择您的文件并允许标准播放器播放您的文件。

  5. 如果播放器OMX通过搜索您的组件名称选择了您的组件,请检查您的日志文件。如果找到,则您的编解码器集成Stagefright成功。否则,您将不得不调试并找出问题所在。

后记:

  1. 根据您的查询,我认为您不熟悉 Android 资源。请参阅androidxref站点以熟悉AOSP发行版。

  2. 除非您计划支持新的媒体文件格式,否则您不需要支持Extractor类。MediaExtractor抽象文件格式解析器并帮助解复用媒体文件中的不同轨道。

我希望有了这些信息,您应该能够在 Android 中集成和运行您的编解码器。

于 2013-03-12T13:39:59.710 回答