DirectShow中用wm asf writer保存wmv文件遇到的媒体时间问题

偶对硬盘上的wmv文件用DirectShow做了视频叠加,然后又连接wm asf writer这个filter将叠加后的视频保存成wmv文件。我取得了该writer的IConfigAsfWriter接口,用 ConfigureFilterUsingProfileGuid()来修改设置profile。

如果我不修改profile,也就是使用默认的,没有问题(在GraphEdit调试显示,默认使用的profile的码流是256kbps)。

由于要处理大量的wmv文件,这些wmv文件的码流各不相同,需要做成码流随wmv文件本身的码流而对应改变,我采用的是取得原始wmv文件的音视频码流,然后判断选择对应的profile,大多正常,不过遇到下面这样的问题:

原始文件a.wmv,音频码流48kbps,视频码流302kbps,视频时长:3分40秒
1.profile:WMProfile_V80_256Video,视频时长:3分40秒,正确
2.profile:WMProfile_V80_384Video,视频时长:9分20秒,不正确
3.profile:WMProfile_V80_768Video,视频时长:3分40秒,正确

2中,视频时间居然从3分40秒变成了9分20秒,不过只有前面的3分40秒有内容,这里时间为什么会变化??????

有音频的时候时间大多以音视为参考,是不是音频要做处理?

调试了1天,看了1天资料,未果...






最终搞定,真是音频的问题,音频码流不能与原始文件相同,要适当小些,就没问题了。我猜视频也有同样的问题,不过居然没出现...............

你可能感兴趣的:(filter,video)