c++ - 为什么我的应用程序无法解码 RTSP 流?

标签 c++ ffmpeg rtsp rtp live555

我使用 live555 接收 RTP 视频帧(以 H264 编码的帧)。我使用 Live555 打开我的本地 .sdp 文件来接收帧数据。刚刚看到DummySink::afterGettingFrame被不断调用。如果DummySink中的fReceiveBuffer是正确的,为什么FFMPEG不能解码帧?我的代码错了?

这是我的代码片段:
http://paste.ubuntu.com/12529740/

函数 avcodec_decode_video2 总是返回失败,它的值小于零

fReceiveBuffer 是否存在一帧视频?

哦,这是我需要打开相关视频解码器的FFMPEG初始化代码:
http://paste.ubuntu.com/12529760/

最佳答案

再次阅读H264相关文档,发现I-frame(IDR)需要将SPS/PPS以0x00000001分隔的方式插入到header中,解码器有能力正确解码帧。这是一个相关的解决方案
FFmpeg can't decode H264 stream/frame data

Decoding h264 frames from RTP stream

现在,我的应用程序工作正常,它可以解码帧并将其转换为 OSD 图像以显示到屏幕。

关于c++ - 为什么我的应用程序无法解码 RTSP 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32735471/

相关文章:

c - 如何使用 FFMPEG 加速时间线清理?

ios - 如何在 iOS 6+ 上解码 h264 字节流?

c++ -::没有命名空间

c++ - 通过通用引用传递的函数的 std::forward?

ffmpeg - AVFrame 是否将 AV_PIX_FMT_YUV420P 数据存储为 YVU?

linux - 将 movflags 添加到 mp4 文件的顶部,而不使用 ffmpeg 进行实时 RTSP 流

java - 如何使用 Xuggler 在 RTP 数据包中编码媒体文件

android - 如何从Android发送RTP视频数据包到服务器?有图书馆吗?请建议

c++ - 如何将具有 "deleted"复制构造函数和赋值运算符的类放入映射中?

c++ - 下一代 std::tie