AvisynthでAC3・aac・mp3音声を読み込む方法を紹介するページ。
BeHappy と云うツールに含まれている BassAudio.dllを利用する事で、AC3・aacなどの音声ファイルをAviSynthで読み込む事が可能です。

AviSynthでMP3の読み込み

mp3 はMPASourceで普通にデコード出来た。長い間勘違いしてた。
(デコード出来るのはmp1/mp2だけだと思ってた(^_^;)

V=BlankClip(height=100,width=100, length=20000, fps=25)
 #ダミービデオ作成 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

BeHappy
▲2011年9月現在、ダウンロードリンクはここ。

BassAudio.dllのコピー
▲BeHappyをダウンロード・解凍したら、[plugins]フォルダ内の BassAudio.dll をコピーして、AviSynth内の[plugins]フォルダにペースト(またはavsファイル内でファイルへのパスを指定する。)

しかし、これだけではaac音声の読み込みは出来ない。

スポンサー リンク

BASS Audio Liblaryのdllファイル入手

AC3・aac・mp3音声をAvisynth / BassAudio.dll 経由で取り込めるようにする為には、さらに専用のdllファイルを入手する必要あり。

 公開サイト: Bass - Un4seen Developments

BassAudio.dll
▲このサイトは少し特殊な構造になっていて、目的のページに直接リンク出来ていないないかも。
(1)BASSのリンクをクリックして BASS Audio Liblary のページに飛び
(2)ページ上部のDownloadリンクから[bass.dll]をダウンロード。

これもAviSynth内の[plugins]フォルダに移動させる(またはavsファイル内でファイルへのパスを指定する。)

必要なファイルは更にある。

AC3・AAC用プラグインのダウンロード
▲クリックで拡大
同じページの下の方の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

v =MPEG2Source    ("F:\sample.d2v")
 #地デジTSファイルをDGndexで分離。インデックスファイルの読み込み
a = bassAudioSource("F:\sample PID 110 DELAY -36ms.aac")
 #DGIndexで分離した音声を直接読み込み。
AudioDub(v,a)
 #映像と音声の合成
DelayAudio(-0.036)
 #音声ファイルに付いている音声遅延情報を加える。
AddRange("F:\VirtualDubで編集したファイル.vcf")
 #VirtualDubMod 等で編集したvcfファイル(編集時は音声読み込み無し)
 #を読み込んでも(音声が切り替わる部分をカットしてあれば)音ズレ・エラー等無し
対応するプラグインをインストールしておけば、全てbassAudioSourceで読み込める。
色々試してみてるけど、特に問題なさそう。
市販されている動画編集ツールで激しくシークしながら編集しても問題なし。

 

地デジ素材を編集&変換する場合

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経由で読み込める動画・音声の場合、
DirectShowSource("C:\movie\file.avi",fps=29.97, convertfps=true)

みたいな書き方をしても動画内の音声を取り込めます。

でも、特殊な音声(地デジTSファイル等)の場合、この方法では失敗が多いです。