我在覆盆子pi上从相机上读取H.264流。我试图通过websockets将其传递给Broadway以在网页中呈现。
流包含NAL单元,我在[0,0,0,1]
开始前缀代码上对其进行分块,以便单独发送然后解码NAL单元。我认为这很好,但百老汇无法解码我最终得到的结果。
虽然进入the parsing code I've based this on但似乎期待第5个字节(在开始前缀代码之后)是:
我在其他地方也看到过很多这方面的提及。我所经历的所有单位似乎都是从(按顺序)开始的:
这些标头在H.264流中意味着什么?他们是否建议我需要做些什么才能符合百老汇的期望?
(如果完整代码有助于更好地理解这一点,请参阅https://github.com/pimterry/pi-cam/tree/d801de9b)
答案 0 :(得分:1)
这是一个红色的鲱鱼:这里的实际问题是,一些现有的帧丢弃逻辑意味着我没有在流中的前几帧传递百老汇,而且它无法渲染。为所有新连接重播SPS和PPS帧并确保它们永不丢弃已经很好地解决了这个问题。
我也确定了这些字节是什么,这有帮助,并可能对其他人有用,以供参考:
{{1}}
特别感谢Jaromanda X - NAL单位文章[此处]和nal_ref_idc文章使这项工作变得更加容易。