AvisynthでAC3・aac・mp3音声を読み込む方法を紹介するページ。
BeHappy と云うツールに含まれている BassAudio.dllを利用する事で、AC3・aacなどの音声ファイルをAviSynthで読み込む事が可能です。
AviSynthでMP3の読み込み
mp3 はMPASourceで普通にデコード出来た。長い間勘違いしてた。
(デコード出来るのはmp1/mp2だけだと思ってた(^_^;)
#ダミービデオ作成 100x100サイズ、20000フレーム、毎秒25コマ
A=MPASource( "f:\sample.mp3", normalize = false)
#MPASourceでmp3音声を取り込み
AudioDub(V,A)
#映像と音声を結合
trim(1000,1000+10*25)
#1000フレーム目から(10秒(250フレーム分)をトリム(切り取り))
▲ちなみにAVSスクリプトはこんな感じに書く。
ダミーでも良いので映像を用意しないとAviSynthで音声を取り込む事は出来ない。
またAviSynthで吐き出される音声データは無圧縮PCM形式になっているので注意。
AC3・aac音声用プラグインの導入
AC3・aac音声用プラグイン[BassAudio.dll]の導入は、手順を間違えやすいので注意して行う事。複数のdllファイルを異なるサイトから入手する必要がある。
1. BeHappyのBassAudio.dll
2. BASS Audio Liblaryの基本dllと、目的音声用のdll
と、最低でもの3つ以上のdllファイルをAviSynthのpluginsディレクトリにインストールする必要がある。
BeHappyの入手
最新版の情報は、Doom9 内のBassAudio フォーラム
公開・配布サイト:BeHappy
▲2011年9月現在、ダウンロードリンクはここ。
▲BeHappyをダウンロード・解凍したら、[plugins]フォルダ内の BassAudio.dll をコピーして、AviSynth内の[plugins]フォルダにペースト(またはavsファイル内でファイルへのパスを指定する。)
しかし、これだけではaac音声の読み込みは出来ない。
BASS Audio Liblaryのdllファイル入手
AC3・aac・mp3音声をAvisynth / BassAudio.dll 経由で取り込めるようにする為には、さらに専用のdllファイルを入手する必要あり。
公開サイト: Bass - Un4seen Developments
▲このサイトは少し特殊な構造になっていて、目的のページに直接リンク出来ていないないかも。
(1)BASSのリンクをクリックして BASS Audio Liblary のページに飛び
(2)ページ上部のDownloadリンクから[bass.dll]をダウンロード。
これもAviSynth内の[plugins]フォルダに移動させる(またはavsファイル内でファイルへのパスを指定する。)
必要なファイルは更にある。
▲クリックで拡大
同じページの下の方のBASS AC3 / BASS AAC など、欲しい音声形式のdllファイルもダウンロードする。
もちろんこれら(bass_ac3.dll/ bass_aac.dll)も、AviSynth内の[plugins]フォルダに移動させる(またはavsファイル内でファイルへのパスを指定する。)
bass.dllで扱える音声は、AC3/AACのほか、WAV/MP1/MP2/MP3/OGG/AIFF/VST/MIDI/WMA/FLAC/M4A・・・
扱えるファイルは非常に沢山ある。
サンプルスクリプト1
#地デジTSファイルをDGndexで分離。インデックスファイルの読み込み
a = bassAudioSource("F:\sample PID 110 DELAY -36ms.aac")
#DGIndexで分離した音声を直接読み込み。
AudioDub(v,a)
#映像と音声の合成
DelayAudio(-0.036)
#音声ファイルに付いている音声遅延情報を加える。
AddRange("F:\VirtualDubで編集したファイル.vcf")
#VirtualDubMod 等で編集したvcfファイル(編集時は音声読み込み無し)
#を読み込んでも(音声が切り替わる部分をカットしてあれば)音ズレ・エラー等無し
色々試してみてるけど、特に問題なさそう。
市販されている動画編集ツールで激しくシークしながら編集しても問題なし。
地デジ素材を編集&変換する場合
BonTsDemuxでwav 形式に分離してから編集するのとどっちが楽かなぁ・・・と考えながら使っていますが、「答えは人それぞれ」になりそうです。
市販されている一般的な動画編集ツールを利用する場合は、このBassAudio.dllでaac音声をAvisynthで読み込んでからAVFS でAVI化してた方が楽っぽいです(ウチは安定操作出来るけど、PC環境や編集ソフトによっては不安定になるらしい。)
x264やffmpeg等のフリーツールを使って動画変換する場合は、BonTsDemuxで音声をwav化して別々に処理した方が楽っぽいです。
この方法の注意
テレビ放送のTS素材を扱う場合、CM時の音声切替にはかなり弱い。
5.1ch⇔ステレオ⇔モノラル の変換時には高確率で音ズレ・無音・エンコードツールの強制終了があります。
音声の切り替わる部分は、全てカットするのが無難です。
ちなみに本編ステレオ放送⇔CMステレオ放送 の場合は、今の所エラー・音ズレなどの問題無し。
また、avisynth.infoさんでも言及されている通り、bass.dllをAviSynthのpluginsディレクトリに置くとVirtualDubMod等が強制終了する場合があります。
ウチの古い環境(XP / AMD / Athron64x2 Avisynth2.5.4~5)でも同じ現象が多発し、使い物になりませんでした。(現環境(64bit Windows7 / Core i7 /AviSynth2.5.8)では、pluginsディレクトリに全てのdllファイルを置いて利用しても(今の所)何も問題は発生していません。)
注意その2
[[BassAudio.dll + Avisynthでaac音声を読み込み] → AVFSでAVI化 →カット編集 → 変換]
を行うと、ツールによっては変換速度が出ません
(地デジ90分超の録画ファイルの場合 & 40fps以上の高速変換出来る設定の場合、特に速度が出ない)
- TSファイルのフラグメントを解消
- TSファイルと分離したaacファイルを物理的に異なるドライブに設置
- カット編集まで行ったら、動画変換を開始する前に一旦PC再起動
一応だけど、上記が効果的みたい。
とりあえず速度が出ない一番の原因は、AVFSでAVI化を行う際PismoFile Mount Audit Packageが異様にメモリを食う&メモリの管理が下手(?)なのが原因っぽい。
AviUtlやVirtualDubで一旦編集し、avsスクリプト内でtrimカットを行っても、多くの市販動画編集ソフトでガクっと変換速度が落ちます。
こんな場合は、aac音声を無理にavsファイル内に納めず、別に処理したほうが良いみたいです。
注意その3
AviSynthを経由して音声を取得すると、音声データは一旦無圧縮のPCMデータに変換されます。
再びaacやAC3にして保存するという事は、データを再圧縮し、劣化させる事になります。
出来るならばこのような方法は取らず、元の状態のまま利用出来る方法を取りたいものですが・・・テレビ放送素材の場合は難しいんですよね(^_^;
上記が面倒な場合
DirectShowFilter経由で読み込める動画・音声の場合、みたいな書き方をしても動画内の音声を取り込めます。
でも、特殊な音声(地デジTSファイル等)の場合、この方法では失敗が多いです。