当前位置: 首页 > 知识库问答 >
问题:

H.264解码无法解析异常帧头

许正平
2023-03-14

但是,深入分析我所基于的解析代码,它似乎期望第5个字节(直接在起始前缀代码之后)是:

  • 0x65-I帧
  • 0x41-a P帧
  • 0x67-SPS帧
  • 0x68-PPS帧

我在其他地方也看到过很多关于这些的报道。不过,我所经历的所有单元似乎都是从(按顺序)开始的:

    null

共有1个答案

王子明
2023-03-14

这是一个危险的问题:我在这里的实际问题是,一些现有的帧丢弃逻辑意味着我没有通过百老汇的前几个帧在流,它是失败的渲染。重放所有新连接的SPS和PPS帧,并确保它们从未被丢弃,这就很好地解决了这个问题。

我也算出了这些字节是什么,这很有帮助,可能对其他人有用,可供参考:

Hex    Binary     NAL type  Meaning
0x65 = 11 00101 = type 5    Coded slice of an IDR picture (I-frame)
0x41 = 10 00001 = type 1    Coded slice of a non-IDR picture (P-frame)

0x27 = 01 00111 = type 7    Sequence parameter set (B-frame)
0x28 = 01 01000 = type 8    Picture parameter set (B-frame)
0x25 = 01 00101 = type 5    Coded slice of an IDR picture (B-frame)
0x21 = 01 00001 = type 1    Coded slice of a non-IDR picture (B-frame)

但是特别感谢Jaromanda X--NAL units文章[这里]和nal_ref_idc文章使解决这一问题变得更加容易。

 类似资料:
  • 我正在开发一个使用MediaCodec API的H.264解码器。我试图在JNI层中调用MediaCodec java API,该函数如下所示: 稍后,我将把发送到我现有的视频呈现管道,并在上呈现。 我希望我能够编写一个Java函数来解码输入流,但这些将是一个挑战- 此资源声明- …你不能对解码的视频帧做任何事情,只能将它们呈现在表面 这里,一个已被传递在表面上呈现输出并且声明。 那么,我是否能够

  • H.264分析器可以用来分析学习H.264码流结构。可以比较详细的列出H.264码流中NAL的信息。

  • 问题内容: 我目前正在从事一些简单的项目,并且在以下字符串中有日期: 并希望将此字符串转换为对象。我正在使用以下代码行来做到这一点。我搜索了站点,找到了解决方法: 但是我可能做错了,因为我总是会遇到异常: 这似乎是我正在使用的模式的问题,但尝试了不同的模式,但没有任何效果。 问题答案: 某些字段(例如,星期几字段和/或AM / PM标记)可能与您的默认字段不匹配。具有方法getErrorOffse

  • 问题内容: 在照顾了几个现有的帖子之后,我仍然无法使我的SimpleDateFormat解析器正常工作。这是代码: 我总是以ParseException结尾。这是调试消息的输出: 06-09 23:52:17.478:DEBUG / DEBUG(2436):java.text.ParseException:无法解析的日期:06-09 23:52:17.478:DEBUG / DEBUG(2436)

  • 我正在尝试使用MediaCodec API解码现场流屏幕捕获从PC由FFMPEG。 对于发件人(PC ffmpeg) 输出如下所示 用于接收器(Android MediaCodec) 我用surface创建了活动并实现了SurfaceHolder.Callback 对于PlayerThread 前四个字节是头和序列号 接下来的四个字节是时间戳 下四个字节是源标识符 因此,我删除了前12个字节,并将

  • 问题内容: 代码如下所示: 在上面的代码中,抛出不可解析的日期异常: 我不知道原因。 问题答案: 为什么要将日期转换为字符串并将其解析回日期? 代码失败的原因是因为您试图使用仅接受dd-MMM-yyy格式的日期的格式化程序转换完整日期。