微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DirectShow记录问题-fps

如何解决DirectShow记录问题-fps

| 我只是创建一个简单的图形来记录来自源过滤器的视频:
SourceFilter ---> muxer ---> FileWriter
我可以将来自SourceFilter的视频保存到本地磁盘。
But when i try to play the recorded video,it play in \"slow motion\" :-).
确保存在fps(帧每秒)问题。我该如何解决?有任何想法吗? PS: 要检查我的SourceFilter是否提供righ fps,我只需创建另一个图:
SourceFilter ---> Video Decoder ---> Video Renderer
它以正确的速度(fps)播放 更多细节:
SourceFilter(*.mp4 file format) ---> Avi Mux Filter ---> File writer Filter
该记录但以错误的fps为单位。 当我尝试gdcl MP4 Mux(可以在此处看到)时,我成功获得了正确的fps。
SourceFilter(*.mp4 file format) ---> GDCL MPEG 4 Mux Filter ---> File writer Filter
另一种情况
SourceFilter( *.h264 file format) ---> Avi Mux Filter ---> File writer Filter
SourceFilter( *.h264 file format) ---> GDCL MPEG 4 Mux Filter---> File writer Filter
它已录制但录制的文件无法播放。 而且实际上我不想解码任何东西...只需将原始编码的视频帧(mp4,h264)写入文件即可。而且我可能不需要视频的合成音频...为什么需要Mux? 我理想的过滤器应该是这样的:
SourceFilter(whatever format) ---> File writer
    

解决方法

        拉尔夫的评论可能是正确的。 AVI文件格式没有每帧的时间戳,只有平均帧速率。因此,当帧到达时,多路复用器必须决定是将该帧放置在下一个\“ slot \”中,还是插入\“ dropped frame \”标记,然后将该帧放置在插槽中。如果源过滤器的时间戳与媒体类型的帧速率不匹配,那么您将获得这种效果。 您可以将视频基本流保存到文件中,但要使用转储过滤器示例,而不要使用文件编写器。文件编写器具有特殊的协议,允许多路复用器随机访问文件(使用时间戳作为文件偏移量)。您只想将数据另存为流,转储示例就可以做到这一点。     ,        就我而言,我确实有一个Source过滤器,它没有正确设置AvgTimePerFrame。在我修复了它(这是我自己的源过滤器)之后,AVI也随之从上游接收到了任何东西。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。