『漫游』酷论坛>『影音数码技术学习交流』>[求助]用AVS把RAW与内嵌 ..

[求助]用AVS把RAW与内嵌字幕的rmvb合并播放如何写较好?

Galaxy001@2005-12-21 08:49

有时下了RAW,又为字幕下了rmvb,开2个mpc看总不方便。
希望实现以下效果(请帮忙优化代码)
复制代码
  1. DirectShowSource("sub.rmvb",30)
  2. Crop(0,436,0,0)
  3. AddBorders(0,480,0,0)
  4. clip1=DirectShowSource("RAW.avi",30)
  5. Overlay(clip1)

还有,我希望把字幕rmvb的播放桢速调低些以降低CPU消耗(应该会吧?)
音频想用RAW的。
有时2片的桢速不一样,如何加changefps之类?

以上代码是假设尺寸都为640x480,字幕从436开始有44像素高。生成640x524的。由于是我花2min翻帮助写的,效率不高,放得卡。而且音频也不是raw的,求高人相助!
引用

MeteorRain@2005-12-21 08:57

复制代码
  1. raw = AVISource("RAW.avi")
  2. sub = DirectShowSource("sub.rmvb",fps=30,convertfps=true).ChangeFPS(raw).Crop(0,436,0,0)
  3. StackVertical(raw, sub)
引用

Galaxy001@2005-12-21 09:10

试了,可以连贯地放。而且fps也是与raw一致。谢谢。
不过音频有些跟不上(估计我要超频了^-^)。

也就是说,把字幕rmvb的播放桢速调低些不会降低CPU消耗。或者由于StackVertical要求2个clip的fps一样,所以调低再改高不会降低CPU消耗?
引用

MeteorRain@2005-12-21 09:19

rmvb播放消耗的cpu不多。但是overlay函数将消耗巨量的cpu。
另外,音频是跟着第一个clip走的,所以即使要用overlay也要用raw.overlay(sub),而不是sub.overlay(raw)……
引用

Galaxy001@2005-12-21 09:32

由于那个raw刚好是avc-in-avi,AVISource不能用,我改为了DirectShowSource
发现对随机seek的支持不太好,在mpc中跳到中间会2个clip不同步。改为将RAW的fps从29.97调到30也不行。
这个是不是无法解决?
引用

MeteorRain@2005-12-21 09:33

引用
最初由 Galaxy001 发布
由于那个raw刚好是avc-in-avi,AVISource不能用
ffdshow的VfW设置里打开H.264的解码,然后就可以用AVISource了
引用

Galaxy001@2005-12-21 09:55

我一直是用ffdshow的libavc解H.264,出错为:
“Could not decompress frame 0”行号就是raw那一行

AVI文件头节选:
RIFF1?AVI LIST~B hdrlavih8LIST?strlstr vidsX264

GSpot报告:
H264/X264 ITU H.264
Codec(s) are NOT Installed (这句让我无语,逼我改注册表?)
引用

MeteorRain@2005-12-21 11:49

直接用VDM打开avi看看可以么。另外,更新一下ffdshow看看。
引用

Galaxy001@2005-12-21 21:51

把avi转raw,再包avi(avc2avi.exe)。成功。但无音频。
那个日本avi到底是怎么回事?
引用

Galaxy001@2005-12-21 22:15

自己转raw+mp3,再用AVI-Mux合回去。就能用AVISource。
但GSpot报告未变。

难道OpenDML结构还有好几种?

不过随机seek还是不准,正在播放测试。估计是由于改了rmvb的fps。

PS:原本是为方便看片,结果成了学习技术,汗……
引用

tbest@2005-12-22 01:18

又学会几个语句 谢谢两位
引用

| TOP