如何将H.264 NAL设备提供给Android MediaCodec进行解码?

我正在试图弄清楚如何使用 Android的MediaCodec类来解码H.264视频.首先,我试图从H.264文件中手动解析NAL单元并将它们提供给MediaCodec进行解码.我相信我正在正确解析文件中的NAL单元(在文件搜索0x00 0x00 0x01序列,表示NAL单元的开始),但每次调用dequeueOutputBuffer时MediaCodec总是超时并返回-1 ().有谁知道如何将H.264 NAL单元馈送到MediaCodec进行解码?我应该在发送NAL单元之前剥离0x00 0x00 0x01序列吗?我是否需要忽略/删除某些NAL单元类型?我是否需要在每个NAL单元之前添加提取的SPS和PPS信息(带或不带0x00 0x00 0x01序列)?我在这里玩弄了很多想法,但没有一个能够淘汰出局.非常感谢在这个领域的任何指导.

解决方法

就我所经历的情况而言,解码器将在dequeueOutputBuffer()上返回-1,只要您不提供sps / pps信息即可.执行此操作时,解码器应在dequeueOutputBuffer()上返回INFO_OUTPUT_FORMAT_CHANGED标志(-2),然后将正确返回已解码的帧.

如果解码器仍返回-1,请尝试使用标志BUFFER_FLAG_CODEC_CONfig将sps / pps信息添加到解码器.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...