我想在Android手机中使用libstagefright.so
进行媒体操作。我已经探讨了this页面中给出的示例。我一直在努力实现同样的目标。在为多个OMXCodec
实例测试此实现时,它的输出缓冲区彼此冲突。
我在eclipse中开发了一个android项目,并在JNI下链接了libstagefright
。我添加了两个类CustomDataSource
(派生MediaSource
)和CustomOmxDecoder
。 CustomDataSource
类实现MediaSource
的所有虚方法。在CustomOmxDecoder
课程中,我调用OMXCodec::Create
方法。然后我创建了两个具有CustomOmxDecoder
个体实例的线程。使用此实例,我调用方法ProcessNextFrame
,在其中调用main videoDecoder->read()
方法。这就是我的设置。
现在,当我使用上述设置运行应用程序时。 OMXCodec
解码两个源的帧,但是当我在表面上渲染它时,会显示冲突的输出。似乎两个源的解码缓冲区都以某种方式内部网格化。我正在同时创建两个h264解码器。这可能是什么问题?它可以与MediaBufferGroup
相关吗?我在调用CustomDataSource
电话后CustomOmxDecoder
中获取缓冲并在ProcessNextFrame
的{{1}}中释放缓冲区。
任何建议都会很棒。 感谢。
答案 0 :(得分:2)
我已经测试并解决了我的问题,怀疑可能有多个OMXCodec实例。问题出在我的代码中。在修复时,我可以看到OMXCodec的mulitple实例运行稳定而流畅。所以,是的,OMXCodec的多个实例是可能的。
谢谢大家。