Aviutl+x264guiExで二重音声(FAW)

わりと面倒な二重音声。

簡単にならないか実験したけど、結果は微妙…、という記事。

Aviutlで二重音声



そもそもAviutlの音声は基本的に1系統なので、2系統以上の音声を扱おうとすると、わりと困ってしまう。

まあ、やり方がないわけではなくて、エンコ前に副音声のほうはあらかじめ出力しておき、x264guiEx.iniを改造してmux時に組み込むとか、エンコ後バッチ処理で組み込むとか、そういう方法を使うことになる。

ただ、この「エンコ前に副音声のほうはあらかじめ出力しておく」というのもそれなりに大変。というのも分離した音声を用意すればいいというだけの話ではなく、Aviutl上で行ったカット編集をどう反映させるかとかいう問題。

具体的には、一回aup保存して、音声ファイル名をスイッチして音声のみ出力とか。

ほかには、Trim ExportしたtxtからTrim情報をaaceditでAACに反映させ、そのAACをさらにmuxするとか。しかし、この方法をエンコ前後バッチ処理で書こうとしたら、ファイル名どうしようとか考えてるうちに、だんだん頭が痛くなってきてやめてしまった。(おい
※わたしはバッチファイルを書くのは嫌いです。

で、これなんか違う方法でもう少し簡単にできないか、少し考えてみた&試してみた。



とにかく一度でやってしまいたいんです



分離した主音声と副音声のAACがあるとして、そこから主音声、副音声のFAW half size(8bit wav)をまず作る。

このままだと、どちらか片方しか読みこむことができない。これが問題なので、なんとか両方読み込み、一度にカット編集、出力するようにしたい。

そこで、2つのFAW half size(8bit wav)を交互に混ぜあわせて、16bit wav化してしまう。この16bit wavをAviutlに読み込ませ、カット編集を行い、出力時に分離してやれば、二重音声も同時にカット編集できるはず、というのが基本的な考え。



混ぜ合わせるってどういうことか



FAWのhalf sizeは8bitのwav形式なため、Aviutlに読み込まれるときには16bit wavに変換される。この変換は、

wav16bit_上位8bit = wav8bit - 128;
wav16bit_下位8bit = 0;

のように計算されるので、実は下位8bitは空いている、といっていい。そこで、この空いている下位8bitを利用することにして、

wav16bit_上位8bit = wav8bit(主音声) - 128;
wav16bit_下位8bit = wav8bit(副音声) - 128;

のように混ぜあわせていく。これは見た目は16bit wavファイルに偽装できているので、普通にAviutlに読み込ませたり、カット編集できたりする。

あとは、出力段階でこれを分離して、もとのhalf sizeっぽくしてやれば、普通のhalf size FAWと変わりなくfawclが解除してくれる。




手順 ~ faw_mixer と x264guiEx 1.71



1. 主音声、副音声のFAW half size(8bit wav)をまず作る。delayはここで修正される。

fawcl.exe -s2 <主音声aac> <主音声half size FAW>
fawcl.exe -s2 <副音声aac> <副音声half size FAW>

2. で、今回新しく作ったfaw_mixerを使って、2つのhalf size FAWを混ぜ合わせる。

faw_mixer.exe -i <主音声half size FAW> -i <副音声half size FAW> -o <FAW half size mix>

3. 出力した<FAW half size mix>をAviutlに映像データとともに読み込ませ、カット編集等を行う。

4. x264guiEx 1.71の音声エンコーダで、FAWのhalf size mixモードを指定するか、FAW Checkにチェックを入れる。(FAW Checkが自動的にモードを切り替える。)

x264guiEx_faw_half_size_mix


5. このhalf size mixモードが動くと、自動的に主音声・副音声に分離、その後自動的に両音声をmuxする。



x264guiEx ダウンロード>>
※今回の拡張を使うにはx264guiEx.iniの更新が必要

faw mixer ダウンロード>>

x264guiExの導入>







結局どうなのよ



メリット
・faw mixという手順を踏んでおけば、あとは簡単に二重音声を扱うことができる。(x264guiEx 1.71以降が自動でmuxする)
・つまり、めんどくさいバッチ処理を書いたり、エンコ後に色々作業したりしなくていい。

デメリット
・FAW half size限定。
・前処理段階で一工程増える。
・aacfaw.aui, chapter.auf, fawpreviewなどのFAW関連ツールが対応していないため、この辺りは正常に使用できない。

実用的かといわれると、どうだろう…。自信ない。特にchapter.aufの無音検索が使えないのが痛い。

chapter.auf, fawpreviewあたりでも正常に扱えたらよかったのだけど、やはり無理だった。どうもhalf sizeの検出そのものに失敗しているのかな?

面白そうだなと思ったら使ってみてくれればと。



まあでも、やはり二重音声はいろいろ大変。なんかほかにいい方法ないものか…。全自動でできるいい方法ありましたら教えてください。



さて、あとは座談会を見て…。
http://live.nicovideo.jp/watch/lv126897261


スポンサーサイト

コメントの投稿

非公開コメント

No title

>エンコ前に副音声のほうはあらかじめ出力しておき、x264guiEx.iniを改造してmux時に組み込むとか

このiniを改造してあらかじめ出力してある音声を入れる方法の例を示して貰えないでしょうか
AviUtl経由では渡せない音声(BDMV用に作成した5.1chAC-3)を扱う機会があって
その時は後からMP4Boxでmuxすることでやり過ごした
んですが
今後同じような場合が出てきた時の為に覚えておきたいもので

Re: No title

mp4box使用でしたら、x264guiEx.iniの
[MODE_MUXER_MP4]
のcount=5をcount=6に変更して、

[MODE_MUXER_MP4]セクション内に

ex_cmd_6_name=副音声追加
ex_cmd_6="-add "%{savfile}_audio2.ac3"#audio:name=Audio"
ex_cmd_6_apple=" -add "%{savfile}_audio2.ac3"#audio:name=Audio -ab "M4V " -mpeg4"

を追加し、ac3ファイルをiniファイルの記述に対応するよう、"<出力ファイル名>_audio2.ac3"というファイル名にしておきます。

これで、エンコ時に設定画面のmuxerタブで「副音声追加」を選択しておけば、副音声もmuxできます。


L-SMASH系はややめんどうです。

L-SMASH remuxerはmp4コンテナに入ったものしか多重化できないので、ac3音声をまずmp4(m4a)にしてやる必要があります。そのため、まず以下のコマンドを実行します。

muxer.exe -i "<入力ac3ファイル>" -o "<出力m4aファイル>"

次に、x264guiEx.iniの[SETTING_MUXER_MP4]セクションのbase_cmd内の順序を入れ替えます。

base_cmd="%{ex_cmd} %{vd_cmd} %{au_cmd} -o "%{muxout}" "

base_cmd="%{vd_cmd} %{au_cmd} %{ex_cmd} -o "%{muxout}" "


さらに、[MODE_MUXER_MP4]セクションの

count=3

count=4

と変更し、[MODE_MUXER_MP4]セクション内に

ex_cmd_4_name=副音声追加
ex_cmd_4="-i "%{savfile}_audio2.m4a""

を追加します。あとはmp4box使用時同様、m4aファイル名を"<出力ファイル名>_audio2.m4a"に合わせ、設定画面のmuxタブで「副音声追加」を選択すればOKです。

No title

ありがとうございました
これでMuxの二度手間を減らすことができてかなり助かります
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先(@を半角にしてください!)
rigaya34589@live.jp
github

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutlプラグイン
x264guiEx 2.xx (ミラー)
- x264を使用したH264出力
- x264guiExの導入>
- x264.exeはこちら>

x265guiEx (ミラー)
- x265を使用したH.265/HEVC出力
- x265.exeはこちら>

QSVEnc + QSVEncC (ミラー)
- QuickSyncVideoによるH264出力
- QSVEncCはコマンドライン版
- QSVEncC 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC (ミラー)
- NVIDIAのNVEncによるH264出力
- NVEncCオプション一覧>

VCEEnc + VCEEncC (ミラー)
- AMDのVCEによるH.264出力

ffmpegOut (ミラー)
- ffmpeg/avconvを使用した出力

自動フィールドシフト (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: aji様

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: まじぽか太郎様

PMD_MT (ミラー)
- SSE2~FMA3による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (ミラー使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR