Streaming RTSP源筛选器与GDCL MP4 Muxer不兼容

Streaming RTSP源筛选器与GDCL MP4 Muxer不兼容,streaming,directshow,mp4,rtsp,multiplexing,Streaming,Directshow,Mp4,Rtsp,Multiplexing,我正在尝试将GDCL MP4 Muxer与我的RTSP源过滤器一起使用。它们可以很好地协同工作,除了停止图形之后,muxer不会限定文件并通过文件写入器将所需的表写入文件末尾(某些部分从moov开始写入,但不会写入时间表值)。当我尝试另一个RTSP源过滤器(我没有它的源代码)时,表值是用GDCL MP4 Muxer创建的 但是,当我尝试Elecard的MP4 Muxer时,它与我的RTSP源过滤器配合得很好。因此,存在一种不相容性。我检查了GDCL的源代码,但没有找到它对我的期望。我已经使用Se

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


但是,当我尝试Elecard的MP4 Muxer时,它与我的RTSP源过滤器配合得很好。因此,存在一种不相容性。我检查了GDCL的源代码,但没有找到它对我的期望。我已经使用
SetTime
方法计算并设置样本的时间戳值。但GDCL仍然没有完成文件。是由于图形停止时信息缺失或信号缺失造成的?有什么问题吗,有什么想法吗?

关于Geraint的MP4 Mux,您应该注意的一件事是,它正在检查传入的媒体样本,以获得启动和停止时间。您可能只有
.tStart
/
AM\u SAMPLE\u TIMEVALID
,这对视频来说仍然有意义,但这将是一个问题

因此,样本必须有停止时间,或者您需要在多路复用器代码中修复此问题


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

您可能需要向muxer发送EOS通知,以使其最终确定输出文件。我同意,并已尝试使用DeliverEndOfStream()执行此操作,但不起作用。奇怪的是,在末尾创建了“moov”部分(大约600字节长),但只缺少表值。因此,muxer知道流媒体已经结束,但并没有完成任务。由于这些表是指帧时间戳值等,我怀疑这是由于缺少时间信息造成的。我添加了设置时间,其他一些多路复用器开始工作。我还试图发送媒体时间。这一次GDCLMP4MUXER在流的开头崩溃了,其他的muxer工作了。我想我会调试GDCLMP4MUXER,看看出了什么问题。我问了一个问题,我是否遗漏了一些明显的东西。我在GDCLMUX中遇到的另一件事是:您必须提供样本停止时间。仅将开始时间附加到视频帧听起来可能仍然不错,但这会混淆多路复用器。或者,您需要在mux中修复此问题。不过,这很可能会留下一个空的.MP4文件,而不是不完整的文件,但仍然值得检查。最后!!!:)请写下这封信作为答复,这样我就可以接受了D