2011-10-20 29 views
0

我想使用GDCL MP4 Muxer与我的RTSP源过滤器。它们一起工作得很好,除了在停止图形之后,muxer没有完成文件并通过文件写入器将重新请求的表写入文件末尾(有些部分是从moov开始编写的,但不是时间表值)。当我尝试使用另一个RTSP源过滤器(我没有它的源代码)时,使用GDCL MP4 Muxer创建表值。与GDCL MP4 MUX不兼容的RTSP源过滤器

但是当我尝试Elecard的MP4 Muxer时,它可以正常使用我的RTSP源滤波器。所以,这是不兼容的。我检查了GDCL的源代码,但无法找到它对我的期望。我已经使用SetTime方法计算并设置了时间戳值。但GDCL仍然没有确定文件。图形停止时是否由于缺少信息或缺少信号而引起?什么是问题,有什么想法?

+0

您可能需要将EOS通知发送到复用器,以便使输出文件最终确定。 –

+0

我同意并且已经尝试过使用DeliverEndOfStream(),但它不起作用。奇怪的部分是,“moov”部分在最后被创建(大约600字节长),但只有表值缺失。所以,muxer知道流式传输已经结束,但并未完成这项工作。由于这些表格应该是帧时间戳值等,我怀疑这是由于缺少时间信息造成的。我添加了SetTime和其他一些muxers开始工作。我也试图发送媒体时间。这次GDCL mp4 muxer在流的开头崩溃,其他muxers工作。 –

+0

我想我会调试GDCL mp4 muxer,看看有什么不对。我问了我是否错过了一些明显的问题。 –

回答

2

关于Geraint的MP4 Mux,您应该了解的一件事是,它正在检查传入的媒体样本,以确定启动和停止时间。您可能只有.tStart/AM_SAMPLE_TIMEVALID这对视频仍然有意义,但这会是一个问题。

所以样品必须有停止时间,否则您需要在多路复用器代码中修复此问题。

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