我有iOS应用程序,可以接收和解码附件b h264流
我有一台带摄像头的设备,它使用AVC格式的gstreamer传输h264
我可以用附件b格式制作gstreamer流吗?
OR
如何从gstreamer中提取序列标题(或sep文件)?
答案 0 :(得分:0)
附件B格式只是NAL单元,正好是一个NAL单元的4字节魔术序列:0x00,0x00,0x00,0x01。
记住H.264 NAL单位的魔术序列可以是4个字节中的3个。如果您编写自己的解析器,则可以通过执行以下操作来处理此问题:
size_t lastNaluStartingOffset = frameSize + 1;
for (size_t i = 0; i < frameSize - 10; ++i) {
if (frameBuffer[i] == ZERO_BYTE && frameBuffer[i+1] == ZERO_BYTE && frameBuffer[i+2] == MAGIC_BYTE) {
uint32_t naluType = (frameBuffer[i+3] & 0x1F);
NaluSegment *segment = [[NaluSegment alloc] initWithType:naluType atOffset:i withHeaderSize:3];
if (i > 0 && frameBuffer[i-1] == ZERO_BYTE) {
// its actally a 4 byte code!
[segment setOffset:[segment offset]-1];
[segment setHeaderSize:4];
}
....
现在您可以根据需要自由格式化NAL单元。