ラベル neroAacEnc の投稿を表示しています。 すべての投稿を表示
ラベル neroAacEnc の投稿を表示しています。 すべての投稿を表示

2016年5月23日月曜日

Aviutl + x264guiEx で作成したMP4の音声LRを入れ替えるDOSバッチプログラムを呼び出すVBスクリプト「mp4LRrv.vbs」

 で、目的は達したのですが、使い勝手からいえば全く未完成なわけです。音声の左右を入れ替える旅のDOS窓あけてコマンドポチポチなんてあり得ませんっ!
 と言うわけで、ファイルをドラッグ&ドロップ(複数選択可)するだけで「mp4LRrv.bat」を実行できるようなフロントエンドスクリプトを作ります。
 で、最初は勉強がてらJavaスクリプトでつくってみよーかなーと思いましたが結局思っただけで、過去【Ffmpesync ver.1】 ffmpeg.exeを手っ取り早く簡単手軽に使うためのファイル同期風フロントエンドVBスクリプト 【まとめ】で培ったノウハウ使って手っ取り早く作っちまお~だって42型60fpsで過去アニメ堪能したいんだもんもんって学習意欲なくなってるなー
 でサクッとこんな感じになりました。 青い部分をメモ帳とかに張り付けて「mp4LRrv.vbs」としてC:\GPAC\に保存してください。ショートカットをデスクトップに置いとけば便利かも。 これで音声を左右正しくしてから視聴ができるっ。これにて完了!

'***mp4LRrv.vbs (C)是々録画 http://zezerokuga.blogspot.jp/
'***2016/5/22 Update
'
'処理概要
'・Aviutl + x264guiEx で作成したMP4の音声LRを入れ替える。
'・
'・処理条件
'・C:\GPAC フォルダに以下をセットアップ
'
'・mp4LRrv.vbs
'  本VBスクリプト。ドラッグ&ドロップされたファイル名をmp4LRrv.batに渡す。複数可能。フォルダは未対応
'
'・mp4LRrv.bat
'  mp4box.exe 、sox.exe 、neroAacDec.exe を使用した音声左右入れ替えパッチ
'
'・mp4box.exe
'  MP4box を各サイトからダウンロードする : ニコニコ動画研究所
'  http://looooooooop.blog35.fc2.com/blog-entry-707.html
'
'・sox.exe
'  Wavステレオ音声を左右入れ替える・Wavステレオ音声を片方モノラルにする(Soxを使って) : アキのサイト
'  http://www.xucker.jpn.org/pc/sox_swap.html
'
'・neroAacEnc.exe , neroAacDec.exe
'  ヘッダーつけてみた - 徒然雑記帳++
'  http://d.hatena.ne.jp/EternalDestiny/20080412
'
'・予め作っておくフォルダ
'  C:\!work\ 作業フォルダ
'  C:\!video\ 出力フォルダ
'  ※C:\GPAC\ 、C:\!work\ 、C:\!video\ は mp4LRrv.bat 内に記載箇所あり。変更可能
' 
'・追記 Windows10セットアップ直後の状態発生(x64を入れて解消)
'  『MSVCR100.DLL が見つからなかったため、アプリケーションを開始できませんでした。』解決メモAdd
'  http://d.hatena.ne.jp/yasuhallabo/20111105/1320504409
'
'・IN
'  処理するファイルを選択してドラッグ&ドロップ
'
'・OUT 
'  音声の左右を入替えた映像を完成パスに作成
'
'################################################
Option Explicit

'***'各オブジェクト取得
Dim oWSSHEL , oWSFSO , oWARGU

'実行シェル
Set oWSSHEL = WScript.CreateObject("WScript.Shell")

'フォルダ・ファイル操作
Set oWSFSO = WScript.CreateObject("Scripting.FileSystemObject")

'パラメータ処理ファイル用
Set oWARGU = WScript.Arguments

'***'メイン処理

Dim sVbsPath , sBatPath ,sRunBat
Dim iPos , cDC
cDC = Chr(34) ' ”ダブルコーテーション

'実行vbsファイルのパス取得
sVbsPath = oWSFSO.GetParentFolderName( WScript.Scriptfullname )

'LRrvの実行パスファイル取得
sBatPath = oWSFSO.BuildPath( sVbsPath , "mp4LRrv.bat" )

If oWSFSO.FileExists(sBatPath) = true Then
For iPos = 0 to oWARGU.count  - 1
'メイン実行
sRunBat = sBatPath & " " & cDC  & oWARGU.item( iPos )  & cDC 

Call oWSSHEL.Run( sRunBat , 1 , true )
Next

sRunBat = oWARGU.count & "件 処理が完了しました"
Else
sRunBat = sBatPath & "が無いので処理が行えません。設置してください"
End if


Call WScript.Echo( sRunBat  )


Set oWSSHEL = Nothing
Set oWSFSO = Nothing
Set oWARGU = Nothing

Wscript.Quit


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版を入れて解決しました。