从iOS上的gstreamer解码h264流

时间:2015-03-04 11:34:43

标签: ios8 gstreamer h.264

我有iOS应用程序,可以接收和解码附件b h264流

我有一台带摄像头的设备,它使用AVC格式的gstreamer传输h264

我可以用附件b格式制作gstreamer流吗?

OR

如何从gstreamer中提取序列标题(或sep文件)?

1 个答案:

答案 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单元。