C++ 使用direct show filter创建的mp4视频未播放

C++ 使用direct show filter创建的mp4视频未播放,c++,directshow,mp4,C++,Directshow,Mp4,使用direct show过滤器,我创建了一个带有两个输入引脚(一个用于音频,一个用于视频)的mp4文件编写器。我正在将通过一个pin接收的音频样本写入一首曲目,将从另一个pin接收的视频样本写入另一首曲目。但是我的视频没有播放。如果我只连接了一个引脚(音频或视频),我可以播放输出文件。如果只有一条赛道的话 我使用h264编码器的视频和mpeg4编码器的音频。编码器工作正常,因为我可以分别播放音频和视频 我将轨道计数设置为2。moov盒中是否提供了使视频播放的任何信息。或者,我们应该告诉解码器,

使用direct show过滤器,我创建了一个带有两个输入引脚(一个用于音频,一个用于视频)的mp4文件编写器。我正在将通过一个pin接收的音频样本写入一首曲目,将从另一个pin接收的视频样本写入另一首曲目。但是我的视频没有播放。如果我只连接了一个引脚(音频或视频),我可以播放输出文件。如果只有一条赛道的话

我使用h264编码器的视频和mpeg4编码器的音频。编码器工作正常,因为我可以分别播放音频和视频


我将轨道计数设置为2。moov盒中是否提供了使视频播放的任何信息。或者,我们应该告诉解码器,哪个曲目是音频,哪个曲目是视频。当我们在曲目信息中设置这些字段时,我认为这并不重要,但为什么我的视频没有播放?

问题似乎在于生成了格式错误的文件。在外部接口上,您正在接受数据,但写入的内容不正确。由于您使用atom viewer检查文件,您应该能够将结构与可播放文件进行比较,并找到有问题的框。但我不认为我得到了任何错误的框。正如我所说,如果我只连接我的过滤器的音频引脚,我可以播放音频。如果仅连接了视频插脚,则输出文件能够显示视频。当我同时连接两者时,视频不会播放。我想我丢失了一些同步信息。我仍然在搜索一些我没有设置的参数。您是在自己创建文件,因为流本身是正确的-问题与DirectShow本身无关,问题在于生成的文件结构。是的,您是对的。我正在搜索文件结构的错误是什么,我缺少哪个参数