先日導入したフリーオで録画したmpeg2tsデータをAviutlでaviに再エンコードしようとしてちょっと躓いたのでメモ。
tsの映像は、まるも製作所の
MPEG-2 VIDEO VFAPI Plug-Inで扱えるらしい。私の環境では特に変更はなし。
音声は MPEG-2 AAC で、Aviutlの場合そのままでは扱えないので、何かAAC音声を扱えるプラグインがないか探してみたけど見当たらず。
ので、別のアプリケーションで AAC→WAV の変換をしなくてはいけないが、
ちょっと調べた結果、一番楽そうなのが
VLC media player を使った変換。
というわけで、VLC media player を使った場合のwavへのデコード手順。(ウィザード編)
「ファイル」→「ウィザード」から「Transcode/Save to file」を選択して「Next」ボタンで次ページへ。
入力ページで「ストリームを選択する」が選択された状態で「選択」ボタンを押すと、読み込むファイルを指定するウィンドウが表示される。
「ファイル」タブが表示されている状態で「参照」ボタンを選択すると「ファイルを開く」ウィンドウが表示されここでファイルを選択し「開く」。
「OK」を押すと入力ページに戻るので「Next」を選択。
Transcodeページが表示されるので、オーディオの「Transcode audio」にチェックを入れ、
セレクトリストから「Uncompressed,integer」(リニア整数)を選択し「Next」
次ページで「wav」が選択されているのでそのまま「Next」。
Additional Transcode option ページが表示され、ここで書き出すファイル名・フォルダを指定する。
「Choose」を選択して保存するフォルダを表示してファイル名を入力して「保存」を選択した後「Finish」ボタンを押すとwavファイルの書き出しが始まる。
Vlc media player のシークバー(この場合プログレスバーってことになるか)が消えたら変換終了。
まあ、一番楽そうといってもウィザード形式はやっぱりちょっと面倒くさい。
コマンドラインで変換できれば楽そうだと思ってまたまた調べてみた。
以下、コマンド例
(web上では改行されて表示されていると思うが、以下のコマンドは改行なしで記述する。)
vlc.exe -vvv "N:\project\test.ts" --sout #transcode{acodec=s16l,channels=2}:duplicate{dst=std{access=file,mux=wav,dst="N:\project\test.wav"}
上記のコマンドは、"N:\project\test.ts" のファイルの音声を、16bitリニア2chのwavファイルで "N:\project\test.wav" に出力するというもの。
上記のように記述して、vlc.exeと同じフォルダに hoge.bat として保存して実行するとwavが書き出される。別にVLCと同じフォルダに保存したbatファイルから実行しなくても cmd.exe から vlc へのパスを指定して実行しても、環境変数にvlcへのパスを登録して別フォルダから batの実行もできると思うが、そこらへんは確認していない。
でもこれだけだと、コピペして改変するにしても毎回面倒くさいので、スクリプトかなんかでファイル名を指定して「変換」ボタンとか押したら上記のようなコマンドラインに変換されて出力されるようにしたいなぁ。
といった感じで、AAC→WAVに変換してしまえば後はいつものm2p→aviへのAviutlでのエンコードとほとんど同じ。
違うところは、Aviutlにtsファイルをドラッグ&ドロップした後に先ほどデコードしたwavファイルを「音声読み込み」で読み込ませることぐらい。
上記手順で ts→(wav→)avi への変換ができることを確認したので、これからはこの手順でエンコードするかなといったところ。でもやっぱり ts→avi と一発でエンコードしたいなぁ。
20090228追記:
cowscorpion.com が死亡のようなので、本家にリンク差し替え。
関連エントリ: