2016年5月23日月曜日

Aviutl + x264guiEx で作成したMP4の音声LRを入れ替えるDOSバッチプログラム

 五月も後半に突入し、皆さまいかがお過ごしでしょうか。 先日モニターを購入した後に、さび付いたメインアンプをアップデートしました。 
 密林購入の青く光るアナログメーターが渋いミニアンプですが、これを設置する際のオーディオケーブルのつなぎ直しで衝撃の事実が、、、ナンジャコリャー!スカパーチューナーとPCキャプチャボードの音声LR接続が逆じゃねーかっ!!!! 

 地上BS録画はPT2を使用なので音声チャンネル間違いは無いのですが、CSで唯一契約しているスカパーのアニメチャンネルだけは、音声ケーブルにてPCキャプチャボードに接続してました。 途中セレクターを介していたのですが、それがLR逆になってるとは、、、、orz
 とりあえず、何時からこーなったと思い返してみると、二年位前にキャプチャボードとPT2の場所入替えた時あったよなーと、そのあたりの番組の音声をヘッドホン視聴で入念に比較(このためにホームセンターで安物購入)すると、、、ビンゴでした。 ある時期を境に音声左右が逆になってました。
 ふつーは気が付くと思うのですが、自分アニメの視聴にはヘッドホンはほとんど使わず、スピーカーにて小音量で聞くため、左右逆音声の違和感に全く気が付かなかったのです。

 ここで音声が左右逆が気に入らんから削除ダァァァァッ!っとは出来ません。 アニメチャンネルでは不定期ですが有名アニメは何度か再放送するため、再録画エンコードの機会はあるでしょうが、それをすると日常の録画エンコードに支障が、、、、。
 該当する音声が左右逆になってる動画MP4ファイルは、過去二年のアニメチャンネルソースのステレオアニメの録画エンコードしたAviutl + x264guiEx で作ったMP4ファイル、、、、あーイチイチ調べるのめんどいな。 大体ファイル名から類推は出来るけど、こーなると視聴する直前にサクっと手軽に音声のみ左右入れ替えするのが面倒なくてよさげ、、、って出来るのか?

 まーこういう時は教えて!グルグルセンセーイ!

 と言うわけで、くされ元エンジニアなホリデープログラマ(最近はシステムな仕事から離れて工員)の琴線に触れた記事はまずコレ。 
 Wavステレオ音声を左右入れ替える・Wavステレオ音声を片方モノラルにする(Soxを使って) : アキのサイト
 WavファイルをDOSコマンドで左右入替える事が出来るってのがスバラッ! MP4からWavを同様にDOSコマンド抽出できれば、バッチコマンド組めるって事だな。
 ちなみにWavファイルとMP4映像ファイルをくっ付ける方法はAviutl + x264guiEx エンコードで音声くっつけるのミスッタ時に使用しているneroAacEnc・mp4boxコマンドを使うつもり。

 そしてMP4からWav作成ハケ~ン!ヘッダーつけてみた - 徒然雑記帳++
 ほへーAviutl + x264guiEx でお世話になってるneroAacEnc.exeに同梱してたneroAacDec.exeでMP4からWav抽出できるのか。

 これでMP4の音声LRを入れ替えるDOSバッチが出来るな。何度かテストをして完成したDOSバッチはこんな感じ。
 ※下記の青の部分をメモ帳とかに張り付けてファイル名 「mp4LRrv.bat」で保存してください。

setlocal
@echo off
set CRF=C:\GPAC\
set WKF=C:\!work\
set VDF=C:\!video\
@echo on

rem 変数表示
@echo BATファイル : %0
@echo 変換元MP4 : %1
@echo 実行パス     : %CRF%
@echo 作業パス     : %WKF%
@echo 完了パス     : %VDF%
@echo 音LRファイル : "%WKF%@%~n1%~x1.wav"
@echo 音RLファイル : "%WKF%@@%~n1%~x1.wav"
@echo aac ファイル : "%WKF%@@%~n1%~x1.wav.aac"
@echo 結合ファイル : "%WKF%%~n1@%~x1"
@echo 完成ファイル : "%VDF%%~n1%~x1

@echo ======変換作業開始====

rem MP4より音声チャンネルをWAV抽出
%CRF%neroAacDec -if "%~f1" -of "%WKF%@%~n1%~x1.wav"

rem 音声ファイルの左右チャンネルを入替え
%CRF%sox "%WKF%@%~n1%~x1.wav" "%WKF%@@%~n1%~x1.wav" swap 2 1

rem 入替音声ファイルをAAC化
%CRF%neroAacEnc.exe -br 96000 -lc -if  "%WKF%@@%~n1%~x1.wav" -of "%WKF%@@%~n1%~x1.wav.aac"

rem MP4BOXにより映像と入替音声を結合
%CRF%MP4Box.exe -add "%~1"#video -add "%WKF%@@%~n1%~x1.wav.aac"#audio -new "%WKF%%~n1@%~x1"

rem 左右入替音声映像を完成パスに移動
move /Y "%WKF%%~n1@%~x1" "%VDF%%~n1%~x1"

rem 作業ファイル削除
del /q "%WKF%@%~n1%~x1.wav"
del /q "%WKF%@@%~n1%~x1.wav"
del /q "%WKF%@@%~n1%~x1.wav.aac"

@echo ======変換作業終了====
endlocal


 ※バッチの動作環境の作成手順。

 1.mp4box.exe をセットアップ。
  MP4box を各サイトからダウンロードする : ニコニコ動画研究所
  セットアップはmp4boxだけでよい。 ※インストール先はC:\GPAC

 2.sox.exe をセットアップ
  zipファイルの中をすべてmp4boxフォルダ C:\GPAC にセット。

 3. neroAacEnc.exe , neroAacDec.exe をセットアップ
  Nero AAC Codec zipファイルの中のwin32用をすべてmp4boxフォルダ C:\GPAC にセット。

 4.C:\GPACフォルダにメモ張とかで作成したバッチプログラム mp4LRrv.bat をセット。

 5.予め作っておくフォルダ
  C:\!work\ 作業フォルダ
  C:\!video\ 出力フォルダ
  ※C:\GPAC\ 、C:\!work\ 、C:\!video\ は mp4LRrv.bat 内に記載箇所あり。変更可能

 6.バッチを実行
  コマンドプロンプトで
とかしてもいいのだが、DOS窓起動して、イチイチこの文字列作るのメンドクサイっ

  なので、このバッチを手軽の呼び出すフロントエンドスクリプトを作るところで以下次号。

追記
  『MSVCR100.DLL が見つからなかったため、アプリケーションを開始できませんでした。』が出た場合>>>解決メモAdd 
  自分の場合、 Windows10セットアップ直後の状態だったためか発生。x64版を入れて解決しました。

0 件のコメント:

コメントを投稿