トップ 差分 一覧 ソース ヘルプ ログイン

ts(AAC音声)をm2ts(AC3音声)に一発で変換させてみた

最終更新時間:2014年06月29日 11時17分11秒
このエントリーをはてなブックマークに追加

[PC]

これだけやってみたものの、結局ffmpegで

ffmpeg -i a.ts -vcodec copy -acodec ac3 -ab 320k aa.m2ts

などど指定したら一発で完全なファイルができたので何もする必要がなかったorz
というわけでMultiAVCHDで音ずれに悩んでる場合はこれでm2tsに変換しておこう。


↓残骸('A`)


動作に必要なツール:


Windowsバッチファイルのあまりの貧弱さに泣いた('A`)

動作としては

  • tsファイルからAAC音声を取り出す
  • AACをwavにする
  • wavをAC3にする
  • tsファイルの動画とAC3音声を取り出しながらm2tsにする

というだけ。
ただし、元のtsファイルに音声のずれ情報(Stream delay)が書いてあるので、これをちゃんと保持したm2tsファイルを作るのがポイント。MultiAVCHDはこれをやってないようで。

MultiAVCHDにts(AAC音声)を放り込むと音がずれる問題への対処として作ってみたけど
ファイルによって音ずれが直ったり直らなかったりする。
ダメなファイルはmurdoc cutterやHDTVtoMPEG2で先頭数秒を切ってからこれに通すと直るっぽい。
(TSMuxeRのカット機能ではダメだった)

┌(┌;・o・)┐cciconv で自動カットだと…
よし作ってくる(


↓のテキストをコピペして***.sh とでも拡張子と適当なファイル名を付けて
 「bash %~dp0\***.sh "%1"」とだけ書いた***.batファイルも作ると
 ドラッグドロップ1発で変換してくれる。

#!/bin/sh
set -u
#-------------------
# 設定
#-------------------
tsmuxer="D:\tsmuxer.exe"	#tsMuxeR.exe の場所
aacdec="D:\faad.exe"	#faad.exe の場所
ac3enc="D:\ffmpeg.exe"	#ffmpeg.exe の場所


#windows用(でもLinuxは知らん)
inputts=`echo $1 | sed 's@\\\@\\/@g'`
inputfile=`echo $inputts | sed -e  s/\.ts$//`



#delay取得とAAC作成
delay=`$tsmuxer "$inputts" | grep 'Stream delay:' | sed -e 's/[^0-9-]//g'`
echo timeshift=${delay}ms
exit
aactrack=`$tsmuxer "$inputts" | grep -B 1 'Stream\ type:.*AAC' | head -n 1 | sed -e 's/[^0-9]//g'`
echo MUXOPT --demux > "${inputfile}.meta"
echo A_AAC, "$inputts",track=${aactrack} >> "${inputfile}.meta"
$tsmuxer "${inputfile}.meta" `dirname "$inputts"`

#AC3作成
$aacdec $inputfile.track_${aactrack}.aac
rm "${inputfile}.track_${aactrack}.aac"
echo ${inputfile}.track_${aactrack}.aac
$ac3enc -i ${inputfile}.track_${aactrack}.wav -ab 320k ${inputfile}.track_${aactrack}.ac3
rm "${inputfile}.track_${aactrack}.wav"

#m2ts作成と先頭カット
mpegtrack=`$tsmuxer "$inputts" | grep -B 1 'Stream\ type:.*MPEG-2' | head -n 1 | sed -e 's/[^0-9]//g'`
echo MUXOPT > "${inputfile}.meta"
echo V_MPEG-2, "${inputts}",track=${mpegtrack} >> "${inputfile}.meta"
echo A_AC3, "${inputfile}.track_${aactrack}.ac3",timeshift=${delay}ms,track=${aactrack} >> "${inputfile}.meta"
$tsmuxer "${inputfile}.meta" "${inputfile}.m2ts"

rm "${inputfile}.track_${aactrack}.ac3"
rm "${inputfile}.meta"