我在decodein rtsp视频流方面需要一些帮助。 我从AXIS IP-camera那里得到它。我使用ffmpeg库。 有必要单独创建AVCodecContext,而不是AVFormatContext-> streams [...] - >编解码器;
所以我创建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或其他什么来做正确的事?
答案 0 :(得分:4)
你需要做更多的工作。 如果你想解码h.264流你需要传递解码器“sps pps”数据。 这些数据可以在rtp流本身see
上找到或在SDP中进行谈判。 在您使用此数据成功提供解码器后,解码应该可以正常工作。