我使用 FFmpeg 创建了一个简单的直接显示源过滤器。我从 RTSP 源读取 rtp 数据包并将它们提供给解码器。它适用于 h264 流。
MyRtspSourceFilter[H264 Stream] ---> h264 Decoder --> Video Renderer
坏消息是它不适用于 MPEG-4。 我可以将我的 rtsp 源过滤器与 MPEG-Decoder 连接起来。我没有例外,但视频渲染器没有显示任何内容。实际上只显示一帧然后什么都没有[只是停止]...解码器和渲染器是第 3 方,所以我无法调试它们。
MyRtspSourceFilter[MP4 Stream] ---> MPEG-4 Decoder --> Video Renderer
我可以使用 FFmpeg 成功地从 MPEG-4 RTSP 源获取 rtp 数据包。没有问题。
似乎我没有在我的 Rtsps 源过滤器中设置一些东西(?),这对于 H264 流来说不是必需的,但对于 MPEG-4 流来说可能很重要
什么可能导致直接显示 rtsp 源过滤器中的这个 h264 流和 MPEG-4 流不同?有任何想法吗。
更多信息:
-- 首先,我为 MPEG-4 流尝试了一些其他 rtsp 源过滤器......虽然我的 rtsp 源是相同的,但我在它们的引脚连接中看到了不同的子类型。
-- 其次,如果源真的是 MPEG-4,我真的很怀疑,所以我用 FFmpeg 进行检查......FFmpeg 将源编解码器 ID 设为“CODEC_ID_MPEG4”。
更新: [黑客]
我只是设置 m_bmpInfo.biCompression = DWORD('xvid') 它工作得很好......但它是静态的。如何 使用 ffmpeg 或其他方式动态获取/确定此值...