解码H264 RTSP有关ffmpeg和分离AVCodecContext(Decode h264 r

2019-09-18 18:46发布

我需要一些帮助视频decodein RTSP流。 我把它从AXIS IP摄像头。 我使用的ffmpeg库吧。 这里有必要单独创建AVCodecContext,而不是从AVFormatContext->流[...] - >编解码器;

所以我创建avcodec中,AVCOdecContext并尝试初始化它们。

AVCodec *codec=avcodec_find_decoder(codec_id);
if(!codec)
{
    qDebug()<<"FFMPEG failed to create codec"<<codec_id;
    return false; //-->
}

AVCodecContext *context=avcodec_alloc_context3(codec);
if(!context)
{
    qDebug()<<"FFMPEG failed to allocate codec context";
    return false; //-->
}
avcodec_open2(context, codec, NULL);

然后,在应用程序的主循环中,我得到的帧数据,并尝试解码:

_preallocatedFrame = avcodec_alloc_frame();
avcodec_decode_video2(_context, _preallocatedFrame, &got_picture, &_packet);

在这里,我得到很多在控制台消息:

[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
[h264 @ 1f177720] non-existing PPS 0 referenced
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
[h264 @ 1f177720] non-existing PPS 0 referenced
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
[h264 @ 1f177720] non-existing PPS 0 referenced
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
[h264 @ 1f177720] non-existing PPS 0 referenced
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!
[h264 @ 1f177720] non-existing PPS 0 referenced
[h264 @ 1f177720] decode_slice_header error
[h264 @ 1f177720] no frame!

你能不能指点我的东西,如何初始化AVCodecContext或其他事情做是否正确?

Answer 1:

您需要执行一些更多的工作。 如果要解码的H.264码流,你需要通过解码器的“SPS PPS”的数据。 这些数据可以在RTP流本身中找到看

或在SDP日RTSP协商。 你成功地养活解码器与此数据后,解码应该工作。



文章来源: Decode h264 rtsp with ffmpeg and separated AVCodecContext