『漫游』酷论坛>『影音数码技术学习交流』>[急救!]用AVS压120FPS片 ..

淡淡忧伤@2004-08-12 12:04

感谢楼上的指教 我尝试一下
引用

skyccy@2004-08-13 08:59

按以下方法`能读``绝对同步``

LoadPlugin("VSFilter.dll")
v=AVISource("E:\eMule\Incoming\Masaru Ashita no Yukinojoe 2 Vol.2.avi",false).ChangeFPS(23.970)
a=DirectShowSource("E:\eMule\Incoming\Masaru Ashita no Yukinojoe 2 Vol.2.avi",video=false)
AudioDub(v,a)
textsub("E:\eMule\Incoming\Masaru Ashita no Yukinojoe 2 Vol.2.ssa")

第一:
这样就可以的了``
用DirectShowSource读取不同步是因为WMV9用DirectShowSource读取WMV9已经把`输出帧定死了为`默认帧`30帧``因为WMV9帧数是动态的``
固定死每秒读取输出帧``那么`你用什么帧值都不会同步``

第二:WMV9``用AVISource读取不了`因为你没有装好足够插件或音频问题``
把音频和视频分开写AVISource就可以读WMV9的AVI`

PS:请装好以下三样插件``
WM9Codecs.exe`
WM9Powertoy_TweakMP.EXE
wmv9VCMsetup.exe
引用

skyccy@2004-08-13 09:06

以下是我在某教程中写的一段``

AVISource读取不了
有的人可能试过用Directshowsource来读WMV.AVI`压制出后发现后面慢慢出现`不同步`
用`Directshowsource很多时会不同步`特别是WMV9`
如`Directshowsource("WMV9.AVI".FPS=24)每秒播放24帧`
因为WMV9的帧数是活动的(XIVD没有动态FPS)`如有4秒是30帧`每秒才读了24帧`
视频就比音频慢了1秒``(每秒读少了6帧`4秒就少读取24帧)
不论你定任何值都会不同步`可能有人会说:为什么你又说120FPS使用.ChangeFPS(XXX)来做?
这2个的性质不同`一个是指定每秒读取输出多少帧`一个是把输出帧数改变

LoadPlugin("VSFilter.dll")
v=AVISource("***.AVI",audio=false)
WMV9.AVI无法用AVISource是因为音频`audio=false意思去掉音频这样AVISource就可读了`
a=DirectShowSource("***.AVI",video=false)
刚才把视频的音频去掉了`这句是使用"DirectShowSource"读取无视频(video=false)的AVI`
VBR音频问题也用这方法`这样一把音视频分开来写`就解决了VBR做成不同步
AudioDub(v,a)
引用

ywwq@2004-08-13 14:33

其实如果音频是mp3 vbr,加一句EnsureVBRMP3Sync就行了,可以替代视频音频分开写的过程

一般情况(比如音频是常见的mp3)avisource也可以读取包含音频的wmv9.avi的,只有音频是较特殊的编码时才需要分开写
引用

skywalker@2004-08-13 21:34

引用
最初由 skyccy 发布
以下是我在某教程中写的一段``

AVISource读取不了
有的人可能试过用Directshowsource来读WMV.AVI`压制出后发现后面慢慢出现`不同步`
用`Directshowsource很多时会不同步`特别是WMV9`
如`Directshowsource("WMV9.AVI".FPS=24)每秒播放24帧`
因为WMV9的帧数是活动的(XIVD没有动态FPS)`如有4秒是30帧`每秒才读了24帧`
视频就比音频慢了1秒``(每秒读少了6帧`4秒就少读取24帧)
不论你定任何值都会不同步`可能有人会说:为什么你又说120FPS使用.ChangeFPS(XXX)来做?
这2个的性质不同`一个是指定每秒读取输出多少帧`一个是把输出帧数改变

LoadPlugin("VSFilter.dll")
v=AVISource("***.AVI",audio=false)
WMV9.AVI无法用AVISource是因为音频`audio=false意思去掉音频这样AVISource就可读了`
a=DirectShowSource("***.AVI",video=false)
刚才把视频的音频去掉了`这句是使用"DirectShowSource"读取无视频(video=false)的AVI`
VBR音频问题也用这方法`这样一把音视频分开来写`就解决了VBR做成不同步
AudioDub(v,a)


其实AVI的wmv是不可能有动态FPS的, 因为AVI不支持动态FPS, 可能只有用asf才能有vfr.
另外xvid是可以用vfr的, 其实任何codec都可以用vfr, 只要容器格式支持就行了.
引用

weilai@2004-08-14 20:10

其實有興趣的
可以下 AviSynth 源碼來看看
會發現 DirectShowSource 是直接引用 windows 系統 的 DirectX而設計的
因此作者並沒多少可操作的地方
avg_time_per_frame = 10000000 / vi.fps_numerator * vi.fps_denominator

有音訊的情況下
FPS 是靠音訊長度、bitrate除得
所以會不同步主要是 VBR 音訊的緣故
(視訊的 fps 是固定是變動都無法改善,是固定可用 EnsureVBRMP3Sync 改善)
引用

«12»共2页

| TOP