搜索 社区服务 统计排行 帮助
  • 1368阅读
  • 7回复

用AVS能实现画中画的功能吗?

楼层直达
级别: 新手上路
注册时间:
2005-12-19
在线时间:
0小时
发帖:
15
偶想把某段影片缩小放到另一个影片的右上角..
可以用AVS来实现吗??
级别: 工作组
注册时间:
2003-08-26
在线时间:
13小时
发帖:
6600
只看该作者 1楼 发表于: 2006-04-20
参看overlay和layer函数。

催片请点此处: http://bbs.popgo.org/bbs/read.php?tid=502402&displayMode=1#19103164
级别: 版主
注册时间:
2002-12-02
在线时间:
0小时
发帖:
3002
只看该作者 2楼 发表于: 2006-04-20
試了一個
http://apr20.imghost.us/jwenma.jpg (範例圖)
用 (CPU)AMD XP2000+ 可以跑得很順

以下是 截錄於個人Avisynth Application Batch之部分功能
所以看起來會有點複雜,但有混音的功能,使用時只需填PIP函數各參數即可
=線上下文存成任意 .avs 即可
inukami_OP.avi 是母畫面
inukami_ED.avi 是子畫面
,請根據自己用的檔案修改

=========================
A=avisource("inukami_OP.avi", pixel_type="YUY2")
B=avisource("inukami_ED.avi", pixel_type="YUY2")
return PIP(A, B, -1, -1, 6, 10, "add")

#EX: PIP(PlayClip, sClip, X, Y, W_H, Sub_volume, mux_mode) #子母畫面
Function PIP (Clip MainP, Clip sClip, Int X, Int Y, Int W_H, Int Sub_volume, String mux_mode) {
## <設定>
# sClip [子畫面]
# W_H [子畫面大小] {EX:6 表示 "六分之一" 1/6=0.166}
# Sub_volume[子畫面靜音] {EX:0 表示 Yes / EX:不等於零:音量(正常範圍1~100)}
temp = 1/Float(W_H)
Sub_volume = (Sub_volume >= 100)? 1.1 : ((Sub_volume <= 0)?0: (1+(Sub_volume/1000.0)))
W = Int(MainP.width * temp)
H = Int(MainP.height * temp)
X = (X<0)? Int(MainP.width -W -(W*temp)) : X
Y = (Y<0)? Int(MainP.height -H -(H*temp)) : Y
IsMute = RevisionTo_Bool(Int(Sub_volume))

## <程序腳本>
sClip = sClip.LanczosResize(W, H).ConvertToYUY2.ChangeFPS(MainP.framerate)
MainP = !IsYUY2(MainP) ? MainP.ConvertToYUY2 : MainP
MainP = IsMute ? AudioChannelIsTwo(MainP, "1,2", sClip, "1,2", Sub_volume) : MainP

return Layer(MainP, sClip, mux_mode, 255, X, Y)
}

Function RevisionTo_Bool (Int Change_Bool) {
Return_Bool = (Change_Bool <= 0) ? False : True
return Return_Bool
}

#EX: AudioChannelIsTwo(PlayClip1, "1,2", PlayClip2, "1,2", 1.3),兩Clip聲道一左一右
Function AudioChannelIsTwo(Clip m, String mch, Clip s, String sch, Float L_R) {
s = s.ResampleAudio(m.Audiorate)
#mdB = Float(Ceil(L_R))
#sdB = Float(Frac(L_R)*10)
mdB = Float(Int(L_R))
sdB = Float(Frac(L_R)*10)

l_ch = Eval("GetChannel(m," +mch +")")
r_ch = Eval("GetChannel(s," +sch +")")
#MergeChannels 會變成 4聲道、Audio Resample不變
#PlayAudio = MergeChannels(l_ch, r_ch).ResampleAudio(44100).Amplify(mdB, sdB)
PlayAudio = MixAudio(l_ch, r_ch, mdB, sdB)

return AudioDub(m, PlayAudio) #.Subtitle(string(mdB))
}

级别: 精灵王
注册时间:
2001-11-21
在线时间:
1小时
发帖:
3094
只看该作者 3楼 发表于: 2006-04-20
请问楼上2位前辈 有没有介绍AVS功能函数的好论坛?

找到的DOOM9是英文的 看起来累....
级别: 工作组
注册时间:
2003-08-26
在线时间:
13小时
发帖:
6600
只看该作者 4楼 发表于: 2006-04-21
avs功能函数的英文档案在开始菜单中就有链接。AviSynth Documentation

催片请点此处: http://bbs.popgo.org/bbs/read.php?tid=502402&displayMode=1#19103164
级别: 精灵王
注册时间:
2001-11-21
在线时间:
1小时
发帖:
3094
只看该作者 5楼 发表于: 2006-04-21
avs配合什么最好? VirtualDub?thanks

VirtualDub默认支持的视频格式没几个?  哪里有插件下?
级别: 新手上路
注册时间:
2005-12-19
在线时间:
0小时
发帖:
15
只看该作者 6楼 发表于: 2006-04-21
看不太懂啊..哪些地方是可以改的哪不能改呀..
看不懂啊...
能用不同的颜色标明一下吗??
级别: 版主
注册时间:
2002-12-02
在线时间:
0小时
发帖:
3002
只看该作者 7楼 发表于: 2006-04-21
蓝色 就是你的檔名
綠色 子畫面座落的 (X,Y)座標,如是負值就會自動调整於右下角
紅色 就是子畫面的 1/size
黃色 就是子畫面的音量,如是0 就是沒有子畫面音源

======================================

A=avisource("這個是母畫面.avi", pixel_type="YUY2")
B=avisource("這個是子畫面.avi", pixel_type="YUY2")
return PIP(A, B, -1, -1 , 6 , 10 , "add")

#EX: PIP(PlayClip, sClip, X, Y, W_H, Sub_volume, mux_mode) #子母畫面
Function PIP (Clip MainP, Clip sClip, Int X, Int Y, Int W_H, Int Sub_volume, String mux_mode) {
## <設定>
# sClip [子畫面]
# W_H [子畫面大小] {EX:6 表示 "六分之一" 1/6=0.166}
# Sub_volume[子畫面靜音] {EX:0 表示 Yes / EX:不等於零:音量(正常範圍1~100)}
temp = 1/Float(W_H)
Sub_volume = (Sub_volume >= 100)? 1.1 : ((Sub_volume <= 0)?0: (1+(Sub_volume/1000.0)))
W = Int(MainP.width * temp)
H = Int(MainP.height * temp)
X = (X<0)? Int(MainP.width -W -(W*temp)) : X
Y = (Y<0)? Int(MainP.height -H -(H*temp)) : Y
IsMute = RevisionTo_Bool(Int(Sub_volume))

## <程序腳本>
sClip = sClip.LanczosResize(W, H).ConvertToYUY2.ChangeFPS(MainP.framerate)
MainP = !IsYUY2(MainP) ? MainP.ConvertToYUY2 : MainP
MainP = IsMute ? AudioChannelIsTwo(MainP, "1,2", sClip, "1,2", Sub_volume) : MainP

return Layer(MainP, sClip, mux_mode, 255, X, Y)
}

Function RevisionTo_Bool (Int Change_Bool) {
Return_Bool = (Change_Bool <= 0) ? False : True
return Return_Bool
}

#EX: AudioChannelIsTwo(PlayClip1, "1,2", PlayClip2, "1,2", 1.3),兩Clip聲道一左一右
Function AudioChannelIsTwo(Clip m, String mch, Clip s, String sch, Float L_R) {
s = s.ResampleAudio(m.Audiorate)
#mdB = Float(Ceil(L_R))
#sdB = Float(Frac(L_R)*10)
mdB = Float(Int(L_R))
sdB = Float(Frac(L_R)*10)

l_ch = Eval("GetChannel(m," +mch +")")
r_ch = Eval("GetChannel(s," +sch +")")
#MergeChannels 會變成 4聲道、Audio Resample不變
#PlayAudio = MergeChannels(l_ch, r_ch).ResampleAudio(44100).Amplify(mdB, sdB)
PlayAudio = MixAudio(l_ch, r_ch, mdB, sdB)

return AudioDub(m, PlayAudio) #.Subtitle(string(mdB))
}

快速回复

限150 字节
上一个 下一个