『漫游』酷论坛>『影音数码技术学习交流』>[求助]请教一个关于 AV ..

[求助]请教一个关于 AVS 的问题

hr_999@2009-06-03 22:25

DirectShowSource("C:\ReV14hd.mp4",29.970,convertFPS=True)

这句话中的29.970有什么作用?是定义按照29.970帧/s的速度播放每一帧么?如果我把它改成23.976产生什么变化?
如果是这样,那不是和assumeFPS重复了?

convertFPS和ChangeFPS又有什么区别?或者说哪个的效果要更好一些?

先谢过各位大大~~~~~[/ku]
引用

manofman@2009-06-04 00:13

你的视频原本帧速是多少?看起来时有没有问题?没有问题就不要乱改帧速。

分别的话,assumeFPS是按自定帧速播放,帧数不变,影片的播放速度会按照你输入的帧速加快或减慢。

convertFPS是把影片转变帧速,播放速度基本不变,帧数会变,同时会有artefact 出现。举例,如把原来23.976帧速的视频硬转成29.98播放,那么就表示影片每秒会多了6帧的垃圾出来,这些垃圾通常就是把两个帧重叠在一起生出来的另一个帧,叫鬼影(ghosting),看起来很不舒服的。
引用

hr_999@2009-06-04 00:24

TO 2L

29.970就是片源帧率,我刚刚试了试,在这里改帧率实际效果和convertFPS相仿,个人猜想应该是后面的convertFPS=ture的作用吧……请高手证实

效果方面,实测还是changefps要自然一些,我关心的主要不是鬼影问题,我关心的是流畅度的问题。

当然帧率改动不大的情况下还是直接assumefps,然后调整一下音频比较好。

还是谢谢你的解答
引用

roozhou@2009-06-04 00:40

DSS里的convertfps其实很简单

DirectShow是基于时间戳的,每一帧有一个绝对值的时间戳(精确到万分之一秒)所以不需要什么fps,但avs比较落后,整段视频必须要有一个统一的fps和确定的长度。

这个fps就把整个时间轴分成了小段,每一段的间隔是1/fps。使用convertfps,DSS每获得一个新帧后就会看看能不能将它放到某个小段中,如果和上一帧的间隔小于1/fps,这一帧就会被扔掉,如果大于1/fps,就会把上一帧复制几份填充。当然DSS会允许一定范围的误差。

如果不用convertfps,DSS就无视时间戳来一帧放一帧。如果视频放完了还没到预定的长度,就只能填充空白帧;如果视频没放完就到预定长度,后面的就被剪掉了。
引用

hr_999@2009-06-04 09:22

谢谢楼上的大大 我完全明白了

跑了几个论坛都没得到答复,还是漫游的人比较厉害
引用

| TOP