AviSynthスクリプト

「AviSynthスクリプト」の編集履歴(バックアップ)一覧はこちら

AviSynthスクリプト」(2008/02/26 (火) 20:03:55) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*Version 0.8 現在のsyumas_func.avs #codehighlight(){{{ # 週間アイドルマスターランキング AviSynth スクリプト Ver 0.85 Beta # # 使用プラグイン # - FFmpegSource global VideoDir = "flv\" global FrameDir = "frame\" global ImageDir = "image\" global BgmDir = "bgm\" # ---------- クリップ読み込み関数 function LoadClip(int id, string mark, float start_sec, float length_sec, string path) { # クリップ読み込み #clip = FFmpegSource(VideoDir + path, atrack=-1, seekmode=-1).ConvertFPS(29.97) clip = DirectShowSource(VideoDir + path, fps=29.97, convertfps=true) # 切り取り sta_frame = Int(clip.Framerate * start_sec) end_frame = Int(clip.Framerate * length_sec) + sta_frame clip = Trim(clip, sta_frame, end_frame) # リサイズ clip = (clip.Width != 512 || clip.Height != 384) ? Resize(clip, 512, 384) : clip # RGB32化、フェード効果 clip = ConvertToRGB32(clip).FadeIO(30) # モノラルの場合は、ステレオに clip = (clip.Audiochannels == 1) ? Mono2Stereo(clip) : clip # 音声の44.1Khz化 clip = ResampleAudio(clip, 44100) # ランク変動情報表示 clip = AddIntro(clip, mark, id) # フレーム追加 clip = AddFrame(clip, id) return clip } # ---------- 1ch音声の2ch化 function Mono2Stereo(clip clip) { audio = GetChannel(clip, 1) return AudioDub(clip, MergeChannels(audio, audio)) } # ---------- アスペクト比保持リサイズ function Resize(clip clip, int target_width, int target_height) { # リサイズ resize_ratio_x = Float(target_width) / clip.Width resize_ratio_y = Float(target_height) / clip.Height resize_ratio = (resize_ratio_x < resize_ratio_y) ? resize_ratio_x : resize_ratio_y resize_width = Int(Round(clip.Width * resize_ratio)) resize_height = Int(Round(clip.Height * resize_ratio)) clip = clip.Lanczos4Resize(resize_width, resize_height) # 不足した領域を補う border_width = target_width - resize_width border_height = target_height - resize_height border_left = (border_width / 2) border_top = (border_height / 2) border_right = (border_width / 2) + (border_width % 2) border_bottom = (border_height / 2) + (border_height % 2) clip = clip.AddBorders(border_left, border_top, border_right, border_bottom) return clip } # ---------- フレーム表示前文字 function AddIntro(clip clip, string mark, int id) { img = ImageSource(FrameDir + "text" + String(id) + ".png", pixel_type="RGB32") clip = (mark == "U") ? AddIntroUp(clip, img) : clip clip = (mark == "D") ? AddIntroDown(clip, img) : clip clip = (mark == "N") ? AddIntroNew(clip, img) : clip clip = (mark == "K") ? AddIntroNew(clip, img) : clip clip = (mark == "H") ? AddIntroNew(clip, img) : clip clip = (mark == "S") ? AddIntroNew(clip, img) : clip return clip } # ---------- ランクアップ function AddIntroUp(clip clip, clip img) { clip = clip.ApplyRange(15, 20, "MoveY", img,15,20,385,300) clip = clip.ApplyRange(21, 80, "MoveY", img,21,80,300,300) clip = clip.ApplyRange(81, 95, "MoveY", img,81,95,300,-70) return clip } # ---------- ランクダウン function AddIntroDown(clip clip, clip img) { clip = clip.ApplyRange(15, 29, "MoveY", img,15,29,-70,300) clip = clip.ApplyRange(30, 89, "MoveY", img,30,89,300,300) clip = clip.ApplyRange(90, 95, "MoveY", img,90,95,300,385) return clip } # ---------- New! function AddIntroNew(clip clip, clip img) { clip = clip.ApplyRange(15, 20, "MoveY", img,15,20,385,300) clip = clip.ApplyRange(21, 80, "MoveY", img,21,80,300,300) clip = clip.ApplyRange(81, 95, "MoveY", img,81,95,300,-70) return clip } # ---------- フレーム表示 function AddFrame(clip clip, int id) { file = FrameDir + "frame" + String(id) + ".png" img = ImageSource(file, end=Int(29.97 * 8), fps=29.97, pixel_type="RGB32") return clip.ApplyRange(100, 100 + img.FrameCount, "Layer", img,"add",255,0,0 ) # フェード表示用 # img = ImageSource(file, end=300, pixel_type="RGB32").FadeIO(10) # img = BlankClip(img, length=90) + img # return Layer(clip, img, "add", 255, 0, 0) } # ---------- 画像移動(縦方向) function MoveY(clip clip1, clip clip2, int start_frame, int end_frame, int start_y, int end_y) { x = Int((clip1.Width - clip2.Width) / 2) clip = Animate(start_frame, end_frame, "Layer", \ clip1, clip2, "add", 255, x, start_y, \ clip1, clip2, "add", 255, x, end_y) return clip } }}}
*Version 0.8 現在のsyumas_func.avs #codehighlight(avs){{{ # 週間アイドルマスターランキング AviSynth スクリプト Ver 0.85 Beta # # 使用プラグイン # - FFmpegSource global VideoDir = "flv\" global FrameDir = "frame\" global ImageDir = "image\" global BgmDir = "bgm\" # ---------- クリップ読み込み関数 function LoadClip(int id, string mark, float start_sec, float length_sec, string path) { # クリップ読み込み #clip = FFmpegSource(VideoDir + path, atrack=-1, seekmode=-1).ConvertFPS(29.97) clip = DirectShowSource(VideoDir + path, fps=29.97, convertfps=true) # 切り取り sta_frame = Int(clip.Framerate * start_sec) end_frame = Int(clip.Framerate * length_sec) + sta_frame clip = Trim(clip, sta_frame, end_frame) # リサイズ clip = (clip.Width != 512 || clip.Height != 384) ? Resize(clip, 512, 384) : clip # RGB32化、フェード効果 clip = ConvertToRGB32(clip).FadeIO(30) # モノラルの場合は、ステレオに clip = (clip.Audiochannels == 1) ? Mono2Stereo(clip) : clip # 音声の44.1Khz化 clip = ResampleAudio(clip, 44100) # ランク変動情報表示 clip = AddIntro(clip, mark, id) # フレーム追加 clip = AddFrame(clip, id) return clip } # ---------- 1ch音声の2ch化 function Mono2Stereo(clip clip) { audio = GetChannel(clip, 1) return AudioDub(clip, MergeChannels(audio, audio)) } # ---------- アスペクト比保持リサイズ function Resize(clip clip, int target_width, int target_height) { # リサイズ resize_ratio_x = Float(target_width) / clip.Width resize_ratio_y = Float(target_height) / clip.Height resize_ratio = (resize_ratio_x < resize_ratio_y) ? resize_ratio_x : resize_ratio_y resize_width = Int(Round(clip.Width * resize_ratio)) resize_height = Int(Round(clip.Height * resize_ratio)) clip = clip.Lanczos4Resize(resize_width, resize_height) # 不足した領域を補う border_width = target_width - resize_width border_height = target_height - resize_height border_left = (border_width / 2) border_top = (border_height / 2) border_right = (border_width / 2) + (border_width % 2) border_bottom = (border_height / 2) + (border_height % 2) clip = clip.AddBorders(border_left, border_top, border_right, border_bottom) return clip } # ---------- フレーム表示前文字 function AddIntro(clip clip, string mark, int id) { img = ImageSource(FrameDir + "text" + String(id) + ".png", pixel_type="RGB32") clip = (mark == "U") ? AddIntroUp(clip, img) : clip clip = (mark == "D") ? AddIntroDown(clip, img) : clip clip = (mark == "N") ? AddIntroNew(clip, img) : clip clip = (mark == "K") ? AddIntroNew(clip, img) : clip clip = (mark == "H") ? AddIntroNew(clip, img) : clip clip = (mark == "S") ? AddIntroNew(clip, img) : clip return clip } # ---------- ランクアップ function AddIntroUp(clip clip, clip img) { clip = clip.ApplyRange(15, 20, "MoveY", img,15,20,385,300) clip = clip.ApplyRange(21, 80, "MoveY", img,21,80,300,300) clip = clip.ApplyRange(81, 95, "MoveY", img,81,95,300,-70) return clip } # ---------- ランクダウン function AddIntroDown(clip clip, clip img) { clip = clip.ApplyRange(15, 29, "MoveY", img,15,29,-70,300) clip = clip.ApplyRange(30, 89, "MoveY", img,30,89,300,300) clip = clip.ApplyRange(90, 95, "MoveY", img,90,95,300,385) return clip } # ---------- New! function AddIntroNew(clip clip, clip img) { clip = clip.ApplyRange(15, 20, "MoveY", img,15,20,385,300) clip = clip.ApplyRange(21, 80, "MoveY", img,21,80,300,300) clip = clip.ApplyRange(81, 95, "MoveY", img,81,95,300,-70) return clip } # ---------- フレーム表示 function AddFrame(clip clip, int id) { file = FrameDir + "frame" + String(id) + ".png" img = ImageSource(file, end=Int(29.97 * 8), fps=29.97, pixel_type="RGB32") return clip.ApplyRange(100, 100 + img.FrameCount, "Layer", img,"add",255,0,0 ) # フェード表示用 # img = ImageSource(file, end=300, pixel_type="RGB32").FadeIO(10) # img = BlankClip(img, length=90) + img # return Layer(clip, img, "add", 255, 0, 0) } # ---------- 画像移動(縦方向) function MoveY(clip clip1, clip clip2, int start_frame, int end_frame, int start_y, int end_y) { x = Int((clip1.Width - clip2.Width) / 2) clip = Animate(start_frame, end_frame, "Layer", \ clip1, clip2, "add", 255, x, start_y, \ clip1, clip2, "add", 255, x, end_y) return clip } }}}

表示オプション

横に並べて表示:
変化行の前後のみ表示: