カラオケ動画制作者向けAvisynthの使い方(基本編)

ここのところ、続けて動画編集&字幕焼き付けにどんなツールを使っているかを聞かれたことがあったので、
うちが使っているAvisynthについて最低限使えるようにするところまで説明しておこうかと。

字幕を乗せたい元の動画と、字幕の入ったassファイルは既にあることを前提にしています。

assファイルは、RhythmicaLyrics というツールで「タイムタグ付き歌詞ファイル」を作って、
春日さん」もしくは「txt2ass」を使ってassファイルに変換します。

assファイルの作り方はとりあえず http://nikokara.web.fc2.com/tukurikata2.html の手順4~6とかを参照にしてください。

それか、誰かが書いた使い方動画
春日さん http://www.nicovideo.jp/watch/sm20336295
RhythmicaLyrics : https://www.youtube.com/watch?v=Vfi23xlNFN8
txt2ass http://www.nicovideo.jp/watch/sm12064720

とかを見ればいいと思う。

以下の、手順を自動でやってくれるソフトを作っちゃいました。
https://github.com/bee7813993/automp4encoder

曲の長さに編集済みの動画とassファイルを選んで右クリックで送るメニューの中に入れるだけで簡単に字幕焼き付け+エンコード+音声mixができちゃいます。

そのツールが内部でやっていることを以下に書いています。手動でやりたいとか応用してもっといろいろやりたいという人は参考にしてください。

セットアップ編

  • avisynth本体の準備

http://avisynth.nl/index.php/Main_Page

ここから、まず「Official builds」をダウンロード(2015年8月現在 v.2.6.0 ST, 32-bit)して、
インストールする。
注) 64bit版は何のメリットもないので、Windowsが64bit版でも32bit版を使う。

マルチスレッドに対応させるために
インストールが完了したら Unofficial buildsの「v.2.6.0 MT, 32-bit, author SET」をダウンロードしてきて、
中身の「avisynth.dll」をwindowsのsystemフォルダ
「C:\Windows\SysWOW64」 (32bit windowsだと「[C:\Windows\system32」にコピーする。

  • avisynth用プラグインの準備(まず必要最低限)
  1. 動画読み込みプラグイン
    標準のDirectShowSourceプラグインは自分が使っていて不具合が多かったので(プレビューするたびにフレーム番号がずれたりした)
    FFMS2を使用している。
    https://github.com/FFMS/ffms2
    のReleasesから最新のバイナリ (ffms2-2.21-icl.7z)をダウンロードしてきて、
    AvisynthのPluginフォルダにコピーする。(「C:\Program Files (x86)\AviSynth 2.5\plugins」とかかな?)
  2. 字幕焼き付けプラグイン
    一般的に使われているVSFilter.dllの最新版は MPC-HCの公開場所
    http://sourceforge.net/projects/mpc-hc/
    内の、Files → 「Standalone Filters – Win32」に公開されている。
    ダウンロードして展開した中にある「VSFilter.dll」を
    AvisynthのPluginフォルダにコピーする。
  3. 字幕焼き付けプラグイン(改造版)
    グラデーション機能などが追加されたVSFiltermod.dllがある。
    一般的なVSFilter.dllよりも処理速度が遅いので、追加機能を使いたいときに使えばいいと思う。
    公開場所は
    https://code.google.com/p/vsfiltermod/
    ページの左下の方にあるリンク「VSFilterMod x86 rXX」からダウンロードする。
    ダウンロードして展開した中にある「VSFilterMOD.dll」を
    AvisynthのPluginフォルダにコピーする。
  • プレビュー用ソフト
    プレビューにはVirtualDubを使用する。VirtualDubModは更新が止まって不具合がいっぱいなので使わない方向で。
    公開場所
    http://www.virtualdub.org/
    Downloads → VirtualDub at SourceForge
    から、「Download V1.10.4 (x86 / 32-bit) release build (VirtualDub-1.10.4.zip)」のようなリンクをクリックしてダウンロード。
    ダウンロードしたファイルはどこか(c:\直下でも、うちはc:\prognsというフォルダを使ってる)に展開する。以上で最低限セットアップ完了。

動画編集編

1. avsファイル作成

サンプルとしてウチがその昔作った「こんそめ」の動画を作った時の動画編集avsファイル(問題ありそうなところはこれを書くときに修正した)

movie1=FFVideosource("op.mpg")
uta = WAVSource("combination somebody!.wav")
fullvideo = Dissolve(Trim(movie1,0,3184) , Trim(movie1,813,3524) , Trim(movie1,970,3524),15)
fullvideo = fullvideo.TextSub("こんそめ.ass")
res = AudioDub(fullvideo,uta)
return res

意味:
1行目 movie1=FFVideosource(“op.mpg”)
op.mpg という動画開いてmovie1という名前を付ける

2行目 uta = WAVSource(“combination somebody!.wav”)
combination somebody!.wav というWavファイルを音源として開いてutaという名前を付ける

3行目 fullvideo = Dissolve(Trim(movie1,0,3184) , Trim(movie1,813,3524) , Trim(movie1,970,3524),15)
movie1の0フレーム目から3184フレーム目までの間、
movie1の813フレーム目から3524フレーム目までの間、
movie1の970フレーム目から3524フレーム目までの間
を15フレームの重ね合わせでつなげる。

4行目 fullvideo = fullvideo.TextSub(“こんそめ.ass”)
“こんそめ.ass”というass字幕ファイルを焼き付ける。

5行目 res = AudioDub(fullvideo,uta)
映像と音声を結合 (プレビューのため)

6行目 return res
res と名前がついたのを最終出力とする

このようなavsファイルをメモ帳で作成してたとえば「こんそめnew.avs」として保存する。

2. プレビューする方法

保存したavsファイルを起動しているVirtualDubの上にドラッグ&ドロップすると編集結果がプレビューできる。

こんそめ_virtualDub_preview

avsファイルに何か間違いがあればその内容がポップアップに出てくる

こんそめ_virtualDub_preview_err

のでそれを見て修正する。

3. フレーム番号の確認方法

avsファイルの3行目ではフレーム番号を使って元動画の切り貼りする位置を指定している。
プレビューでフレーム番号を確認するには、avsファイルを

movie1=FFVideosource("op.mpg")
movie1=movie1.info
uta = WAVSource("combination somebody!.wav")
fullvideo = Dissolve(Trim(movie1,0,3184) , Trim(movie1,813,3524) , Trim(movie1,970,3524),15)
fullvideo = fullvideo.TextSub("こんそめ.ass")
res = AudioDub(fullvideo,uta)
return res

と動画読み込みの直後に 「movie1=movie1.info」のような1行を追加する。
この状態でプレビューをすると、

こんそめ_virtualDub_preview_info

動画の左上にフレーム番号をはじめ各種動画情報が表示されるので、ここに出てくるフレーム番号を参考に切り貼りするフレームを決める。
(時間ベースで切り貼りする場合はTimeの値を使うことができる(Trimではない関数を使用する))
表示していると便利なので編集中はこのinfoをつけっぱなしにしておくといい。

#(半角)を付けるとその行のそれ以降の記述がコメントアウトになるので、最終的に動画情報を消すときは追加した行の先頭に#を付けておけばOK

movie1=FFVideosource("op.mpg")
#movie1=movie1.info
uta = WAVSource("combination somebody!.wav")
fullvideo = Dissolve(Trim(movie1,0,3184) , Trim(movie1,813,3524) , Trim(movie1,970,3524),15)
fullvideo = fullvideo.TextSub("こんそめ.ass")
res = AudioDub(fullvideo,uta)
return res

 

エンコード編

このavsファイルを読み込めるソフトだったらエンコードにどんなソフトを使ってもいいんだけど、
ウチで使っているx264.exe+mp4box(yamb)でのエンコード方法を紹介。

  • ダウンロード
  1. x264.exe
    公開場所 http://komisar.gin.by/
    「2597kMod.x86」のように書いてあるリンクをクリックすると、
    「x264.2597kMod.x86.exe」のようなファイル名でダウンロードされるので、
    「x264.exe」にリネームしておく。
  2. yamb
    公開場所
    http://yamb.unite-video.com/
    Download → 「Yamb-2.1.0.0 beta 2 with installer (recommended for most users)」の右にある画像 をクリックしてダウンロードする。
    ダウンロードしたファイル実行してセットアップする。
  3. エンコード用バッチファイル 「M4Vencode_simple.bat」(俺作成
    公開場所
    https://www.pcgame-r18.jp/owncloud/index.php/s/0LSRt7Ow1NlyVpf
    記載内容

    cd /d %~dp0
    x264.exe --crf 22 --threads auto --output "%~dpn1_noaudio.mp4" %1
    pause

    保存して「x264.exe」と同じ場所に置く。

  • エンコード

avsファイル(今回の例では「こんそめnew.avs」)を先ほどダウンロードした「M4Vencode_simple.bat」の上にドラッグ&ドロップする。
するとエンコードが始まる。
こんそめx264エンコ中終わると、
avsファイルがあったところに「avsファイル名_noaudio.mp4」ができている。(今回の例だと「こんそめnew_noaudio.mp4」)

映像と音声の結合

yambを起動して、
yamb初期起動右上の「Click to create mp4 file with multiple audio, (以下略)」を押す。

こんそめ_yamb

先ほどエンコードが終わった「avsファイル名_noaudio.mp4」(今回の例だと「こんそめnew_noaudio.mp4」)と
この曲の音源(m4a形式などに変換しておく)を上のInputのボックスにドラッグ&ドロップ。

下のOutputが「avsファイル名_noaudio.mp4」になっているので別の名前に変更「(今回の例だと「こんそめnew_noaudio.mp4」->「こんそめnew_OnVocal.mp4」)」
(注意 名前を変えないと、変換中に元のエンコード済みの動画が書き換わって失敗した上にデータが消える悲劇が起こる・・・)

TIPS) ここで音声トラックを2つ登録すると音声がマルチトラックになって、プレイヤーの音声トラック変更機能でOnVocalとOffVocalを切り替えられるようになったりする。

yamb_%e3%81%93%e3%82%93%e3%81%9d%e3%82%81onoff%e5%88%87%e6%9b%bf(複数トラックの情報が足りなくてiPhoneとかでうまく再生できないので、うまく再生できない機器で再生するにはmp4box.exeコマンドに適切なオプションをつけてmixしたりする(やり方をそのうち書くかも))

nextボタンを押せば、音の入ったカラオケ動画の出来上がり。

こんそめ出来上がり

FAQ)
Q) どうして映像と音声を最後に結合するの?
動画エンコードと一緒に音もエンコードすると、音を2回エンコードすることになる。(ソースがWAVファイルじゃなければ)
何度もエンコードすると音質が劣化するので、1回エンコードした(最初からエンコードされていた)ものを最後に結合することで音質の劣化を防げる。

 おまけ)ちょっと便利にする方法

  • 送るメニューの活用
    エンコード用のバッチファイル「M4Vencode_simple.bat」のショートカットを作って、「送る」メニューに入れておくと、(やり方は適当にググって)
    エクスプローラーでavsファイルを選択して右クリック→送る→「M4Vencode_simple.batへのショートカット」とするだけでエンコードが始まって、わざわざドラッグ&ドロップする必要がなくなって楽ちん。
    エンコード送るこれを簡単にできるようにしてのが
    https://github.com/bee7813993/automp4encoder
    になります。

 

  • avsファイル編集の便利ツール
    avsファイルの編集の時「メモ帳」ではなくて「avsPmod」を使用すると作業が捗る。
    avsPmodの配布元
    https://github.com/AvsPmod/AvsPmod
    プレビュー用のソフトにVirtualDubの場所を指定すると、
    avsファイルを編集してプレビューするときに「F6」ボタンを押すだけでVirtualDubでプレビューができる。
    その他、avsの書式が色づけされて見やすくなったりする。

 参考資料置場

今回使用したツール類は以下の場所にも置いてます。

https://www.pcgame-r18.jp/owncloud/index.php/s/51v5zsQyGgUeA3N

こんそめ動画の元データも全部おいているので、そちらでも試してみて~。

Next 中級編 (2重縁とグラデーション)

今後。
最初のころのavsファイルは6行程度でシンプルだったんだけど、
今となっては 300行を超えるavsファイルを使うようになってしまった。
例) https://www.pcgame-r18.jp/owncloud/index.php/s/Z5TNr01Jzp8ySeB

ココに至る過程を全部書いていくときりがないので、何か真似したときに「そんな関数ねぇよ」みたいなエラーが出たらプラグインを探して追加していけば同じことができるようになるはず。

一応自分が今までに追加したと思うプラグインを書き出してみた。 使用しているAvisynthプラグインのメモ

  1. No comments yet.
(公開されません。ってか記入しなくてもいいです)