h264 解码 rtsp link 错误

h264 decoding rtsp link error

我正在使用 live555 库接收 RTSP 流并使用 ffmpeg 对其进行解码。 起初,我无法解码来自 live555 的数据。经过一番搜索后,我了解到在将帧发送到 FFmpeg 之前,我需要为我的帧数据包含序列 (SPS) 和图片参数集 (PPS)。

header : 00 00 00 01 67 4d 00 14 95 b8 58 25 90 00 00 00 01 68 ee 3c 80 00 00 00 01

FFmpeg can't decode H264 stream/frame data

现在我可以拍摄框架了,但是出现了一个小问题。 [![在此处输入图片描述][1]][1]

3包还有问题。 FFmpeg 无法解码它们我建议它们是特殊命令。因为9,4和5字节这么小就来了。

他们在这里

[h264@0x137c00]无帧! 00 00 00 01 67 4d 00 14 95 b8 58 25 90 00 00 00 01 68 ee 3c 80 00 00 00 01 67 4d 00 14 95 b8 58 25 90 [h264@0x137c00] 无帧! 00 00 00 01 67 4d 00 14 95 b8 58 25 90 00 00 00 01 68 ee 3c 80 00 00 00 01 68 ee 3c 80 [h264@0x137c00] 无帧! 00 00 00 01 67 4d 00 14 95 b8 58 25 90 00 00 00 01 68 ee 3c 80 00 00 00 01 06 e5 01 ec 80 [h264@0x137c00] 没有帧!

有什么建议吗?

00 00 00 01 67开头的数据包是你的SPS,00 00 00 01 68是你的PPS。您可能想使用 h264 AVParser 将 PPS/SPS/frame 组合成单个数据包,这正是 ffh264 解码器所期望的。典型的 RTSP 流(或任何网络流)将每隔几秒左右重复一次 PPS/SPS。

好的,我可能已经解决了问题。我在解码帧之前添加了解析操作。

avparser= av_parser_init(AV_CODEC_ID_H264);
len= av_parser_parse2(avparser,mCodecContext,&data,&lenght_parse,encodedFrame,encodedFrameSize,0,0,0);
while(encodedFrameSize)
{
    len= av_parser_parse2(avparser,mCodecContext,&data,&lenght_parse,encodedFrame,encodedFrameSize,0,0,0);
    encodedFrame     += len;
    encodedFrameSize  -=len;
        if(lenght_parse)
        {
            av_init_packet(&pkt);
            pkt.data=data;
            pkt.size=lenght_parse;
            length = avcodec_decode_video2(mCodecContext,decodedFrame,&gotFrame,&pkt);
        }
}

昨天测试了app,新问题出来了。应用程序在 4-5 小时后停止流式传输。我认为问题是基于解码操作。现在我正在努力解决这个问题。

日复一日,我正在接近解决方案!