【问题标题】:RTSP Source Filter with GDCL MP4 Muxer incompatibility与 GDCL MP4 Muxer 不兼容的 RTSP 源过滤器
【发布时间】:2011-12-11 22:03:07
【问题描述】:

我正在尝试将 GDCL MP4 Muxer 与我的 RTSP 源过滤器一起使用。它们一起工作得很好,除非在停止图形之后,muxer 不会完成文件并通过文件写入器将所需的表写入文件末尾(某些部分是从 moov 而不是时间表值开始写入的)。当我尝试另一个 RTSP 源过滤器(我没有它的源代码)时,表值是使用 GDCL MP4 Muxer 创建的。

但是当我尝试使用 Elecard 的 MP4 Muxer 时,它可以很好地与我的 RTSP 源过滤器配合使用。所以,存在不兼容。我检查了 GDCL 的源代码,但找不到它对我的期望。我已经使用SetTime 方法计算并将时间戳值设置为样本。但是 GDCL 仍然没有完成文件。是图表停止时缺少信息还是缺少信号造成的?可能是什么问题,有什么想法吗?

【问题讨论】:

  • 您可能需要向 muxer 发送 EOS 通知,以使其最终确定输出文件。
  • 我同意并且已经用 DeliverEndOfStream() 尝试过,但它没有用。奇怪的是,“moov”部分正在最后创建(大约 600 字节长),但只有表值丢失。因此,muxer 知道流式传输已经结束,但并未完成工作。由于这些表是帧时间戳值等,我怀疑这是由于缺少时间信息造成的。我添加了 SetTime,其他一些复用器开始工作。我也尝试发送媒体时间。这次 GDCL mp4 muxer 在流开始时崩溃,其他 muxer 工作。
  • 我想我会调试 GDCL mp4 muxer 看看有什么问题。我问了我是否遗漏了一些明显的问题。
  • 我在 GDCL Mux 中遇到的另一件事:您必须提供样本停止时间。仅将开始时间附加到视频帧可能听起来仍然不错,但这会使多路复用器感到困惑。或者,您需要在 mux 中解决此问题。然而,这更有可能留下一个空的 .MP4 文件而不是不完整的文件,但它仍然值得检查。
  • 终于!!! :) 请将此作为答案写下来,以便我接受。 :D

标签: streaming directshow mp4 rtsp multiplexing


【解决方案1】:

关于 Geraint 的 MP4 Mux,您应该注意的一件事是它正在检查传入的媒体样本是否具有开始和停止时间。您可能只有.tStart/AM_SAMPLE_TIMEVALID,这对于视频仍然有意义,但这将是一个问题。

因此样本必须有停止时间,否则您需要在多路复用器代码中解决此问题。

该问题的典型症状是生成的文件为空或持续时间为零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2011-04-08
    • 1970-01-01
    相关资源
    最近更新 更多