Ios8 在iOS上解码来自gstreamer的h264流

Ios8 在iOS上解码来自gstreamer的h264流,ios8,gstreamer,h.264,Ios8,Gstreamer,H.264,我有iOS应用程序,可以接收和解码附件b h264流 我有一个带摄像头的设备,它以AVC格式将h264与gstreamer流式传输 我可以用附件b格式制作gstreamer流吗 或 如何从gstreamer中提取序列头(或sep文件?附录B格式只是一个NAL单元,正好是从NAL单元开始的4字节魔术序列:0x00、0x00、0x00、0x01 请记住,H.264 NAL单元的魔术序列可以是4个字节中的3个。如果您编写自己的解析器,您可以通过执行以下操作来处理此问题: size_t lastNalu

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

我有一个带摄像头的设备,它以AVC格式将h264与gstreamer流式传输

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


如何从gstreamer中提取序列头(或sep文件?

附录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];
        }
....
size\u t lastNaluStartingOffset=frameSize+1;
对于(大小i=0;i0&&frameBuffer[i-1]==0字节){
//它实际上是一个4字节的代码!
[段设置偏移量:[段偏移量]-1];
[段设置标题大小:4];
}
....
现在,您可以随意设置NAL单元的格式