Android硬件加速H264流视频解码器
我正在开发一个Android硬件加速视频解码器,用于实时解码H264附件B流。经过一番研究,我似乎需要把手弄脏才能做到这一点。我找到了几个关键词,比如Android硬件加速H264流视频解码器,android,h.264,android-mediacodec,hardware-acceleration,stagefright,Android,H.264,Android Mediacodec,Hardware Acceleration,Stagefright,我正在开发一个Android硬件加速视频解码器,用于实时解码H264附件B流。经过一番研究,我似乎需要把手弄脏才能做到这一点。我找到了几个关键词,比如OMXCodec、Android的OSstagefright和ffmpeg的stagefright、MediaCodecAPI、GStreamer。我也知道,硬件无关的实现无法支持所有供应商的硬件。在这个阶段,所有这些都让我感到非常困惑,因为我没有找到任何直接的资源来推进其中的任何一个。我的要求是— Android硬件加速视频解码器 至少支持高通公
OMXCodec
、Android的OSstagefright
和ffmpeg的stagefright
、MediaCodec
API、GStreamer
。我也知道,硬件无关的实现无法支持所有供应商的硬件。在这个阶段,所有这些都让我感到非常困惑,因为我没有找到任何直接的资源来推进其中的任何一个。我的要求是—
提前谢谢 最近,我使用。不幸的是,这个API没有在NDK中公开,因此只能从Java层访问 我找到的最好的资源是这套指南:
因为NDK中有一个很难实现的需求,所以我想你需要编写一个瘦的java库,它与MedioAcDEC API进行交互,然后通过C++层从JNI调用它。 如果您选择FFMPEG路线,请注意它的许可证,它对分布式软件有很大的限制
祝你好运 谢谢你的建议。是的,我还被告知要避免ffmpeg的许可证问题。此外,我还提出了MediaCodec API的
JNI接口方法,但如果我能在纯C/C++层中实现,那就更好了。一个问题,您是否需要做额外的工作来支持不同供应商的硬件?或者您的实现是独立于硬件的?理论上,MediaCodec API与硬件无关,事实上,到目前为止,我已经观察到了这一点-到目前为止,它在我尝试过的每台设备上都有效。仅供参考,我正在进行编码和解码,并使用API级别18中引入的MediaCodec功能。由于您只需要解码,那么可能可以返回到API级别16。再次感谢您提供这些信息!还有一个问题,通过jni访问Java层的API,而不是只使用C/C++,是否会影响性能?我听说进行jni调用的成本相对较高。这会影响你的表现吗?很难说。取决于所需的比特率、帧速率、延迟要求等。