我通过从IP摄像机解包视频片段来创建H264字节流。
我使用以下语法:
var dynamicConfig = ["Test1","Test22","Test3","Test14"];
var staticConfig = [{label: 'Test 1',value: 'Test1'},
{label: 'Test 2',value: 'Test2'},
{label: 'Test 3',value: 'Test3'}
];
var setObj = new Set();
for(var i = 0; i < staticConfig.length; i++){
var obj = staticConfig[i];
setObj.add(obj.value);
}
function configObj(dynamicConfig, setObj) {
var templateArray = [];
for (var j = 0; j < dynamicConfig.length; j++) {
if (setObj.has(dynamicConfig[j])) {
templateArray.push(dynamicConfig[j]);
}
}
console.log(templateArray);
return templateArray;
}
configObj(dynamicConfig, setObj);
解码此字节流后,我得到了半模糊的图像。我假设这是因为缺少P切片
如何在I帧之后附加P帧以获得正确的视频帧? 应该如下:
0x000001[SPS] 0x000001[PPS] 0x000001[I slice]
提前致谢!
答案 0 :(得分:0)
你在做什么看起来是正确的。 .h264文件包含原始H.264 NAL单元,由起始码前缀等于0x000001分隔。这是ISO / IEC 14496-10,附录B中定义的字节流格式。标准说“字节流中字节流NAL单元的顺序应遵循字节流NAL单元中包含的NAL单元的解码顺序” 。所以你可以附加你的P帧,因为你应该从你的相机按解码顺序接收它们。
可能你的问题有不同的原因。你如何处理仿真预防字节? “NAL单元中可能存在的字节等于0x03。仿真阻止字节的存在确保NAL单元中没有连续字节对齐字节的序列包含起始码前缀。”
因此.h264文件必须包含仿真阻止字节。但是你的视频片段是否包含它们?