【发布时间】:2015-10-17 07:16:13
【问题描述】:
我目前在 GraphEdit 中有一个 DirectShow 图表,如下所示:
Source(USB WebCam) -> Encoder -> Mux -> File Writer
但是,如果源在录制过程中丢帧,编码器将不会补偿该损失。这意味着如果我录制了 30 秒的视频,并丢掉了 20% 的帧(例如),则生成的视频将以 24 秒的视频结束。
这意味着视频中的所有内容都将被加速 1.2 倍,这是绝对不可接受的,我已经使用 VLC Player 和 WMP 重播了视频 - 结果相同。就好像图中的编码器(?)或其他一些过滤器不关心丢失的帧。
我用来重现此问题的编码器是 WMV9 和第三方 H264 过滤器。
即使在录制过程中 CPU 使用率非常高,我确实需要能够处理和补偿丢帧,这样视频的时间线才不会突然停止有意义。是否有一个过滤器可以处理这个问题,还是我需要在图表中自己做一些事情?这里到底发生了什么?
非常感谢。
编辑:
我尝试使用Asf Writer 过滤器和音频源构建一个更简单的图表,如附图所示。
但是,由于我的捕获源(相机)丢失帧,最终视频最终会出现很大的同步问题,这意味着音频长度比视频长得多并且不同步(而不是补偿)我本来希望看到视频捕捉到直到音频。
【问题讨论】:
标签: winapi encoding directshow video-capture directshow.net