追記:
長いファイル名の動画が複数ある場合などはファイル名の入力・コピペが面倒。
そこで動画名を入力しないですむ、もっと楽な方法を書きました。
ffmpegでTS(m2ts)ファイルをmp4に変換 2019年版
下記の内容より、↑ の方法をオススメします。
※注意:下記の記事の環境はUbuntu14.04です。現在のUbuntu18.04環境では再生時の音声トラブルも、WinFF変換時の音声トラブルもなくなったっぽいです。普通にWinFFを使えばトラブルなく変換できています。
- WinFF ←Windowsの人はここで「Clone or download」をクリックして、「Download ZIP」でzipファイルをダウンロードしてインストールすればいいはず。
- QWinFF 使ったことはないけど、これも良さげ。
動画の変換はGUIのWinFFというソフトがシンプルで簡単だったのでそれを使っていた。
しかし、あるTSファイルをWinFFでmp4に変換したら、変換後のmp4から音声が出ない…。
あるTSファイルとはN○Kの番組を録画したもので、目的の番組の前にニュースなどがちょっとだけ録画されてしまっていて、vlcで再生する際に音声がスローになってブツブツ切れてしまうファイル(界隈では結構有名な音声切り替えによるトラブル)。
TSファイルを見るだけなら、vlc再生時に一度音声を無効にしてから、また音声を有効にすればよいのだが、そのままだとファイルサイズが巨大すぎるのでmp4に変換してファイルサイズを小さくしたい。
WindowsならTsSplitterというソフトで対処できるらしい。
が、僕はUbuntuだし、わざわざwineを使ってまでWindowsのソフトを使いたくはない。
そこでいろいろ調べて、試行錯誤した結果、次のようにすれば問題のあるTSファイルでも変換できた。
シェルスクリプト
以下のような「tstomp4.sh」を作る。
(べつにシェルスクリプトを作らなくても、好きなものを選んで、端末で実行してもいい。動画名を2回入力するのが面倒なので、これを作った。)
# 音声エンコードなし
#ffmpeg -y -vsync 1 -i $1.m2ts -f mp4 -vcodec libx264 -map 0:0 -map 0:1 -s 1280x720 -aspect 16:9 -acodec copy -bsf:a aac_adtstoasc -ss $2 $1.mp4
# 音声ac3
#ffmpeg -y -vsync 1 -i $1.m2ts -f mp4 -vcodec libx264 -map 0:0 -map 0:1 -s 1280x720 -aspect 16:9 -acodec ac3 -b:a 192k -ss $2 $1.mp4
# 音声aac
ffmpeg -y -vsync 1 -i $1.m2ts -f mp4 -vcodec libx264 -map 0:0 -map 0:1 -s 1280x720 -aspect 16:9 -codec:a aac -bsf:a aac_adtstoasc -strict -2 -ss $2 $1.mp4
音声切り替えトラブルのないTSファイルなら、上記の「音声エンコードなし」でもいいのだが、音声切り替えトラブルがあるTSファイルの場合は「音声ac3」(ac3はDVD-Videoの音声コーデック)か「音声aac」にする。上記スクリプトでは「音声aac」にしている(それ以外はコメントアウトしている)。
$1
: 下記コマンドで入力する動画ファイル名が挿入される。map 0:0
: 映像ストリームmap 0:1
: 音声ストリーム。$2
: 下記コマンドで入力する変換開始時間が挿入される(x秒後のところから変換する)。
変換開始時間は目的の番組が始まった以降の時間を入れる。
実行
「tstomp4.sh」と変換したいTSファイルを同じフォルダに入れて、端末で開いて以下を実行。
sh tstomp4.sh [ファイル名。ただし、拡張子は書かない。] [変換開始時間]
例えば、test.m2ts というファイルの、冒頭3秒間にニュース等が録画されているとする。
そこで冒頭から(余裕を持って)5秒後、つまり目的の番組が始まったところから変換する場合は、
sh tstomp4.sh test 5
とする。test.mp4 ができているはず。
シンプルな方法(音声エンコードなし)
なお、冒頭部分をカットせずにたんに変換する場合は以下のコマンド。ただし、前記したように、古い環境では音声切替で問題が出る恐れあり。
$ ffmpeg -y -vsync 1 -i 入力.m2ts -f mp4 -vcodec libx264 -map 0:0 -map 0:1 -s 1280x720 -aspect 16:9 -acodec copy -bsf:a aac_adtstoasc 出力.mp4
変換するファイル名が長いときや、ファイルが複数ある場合は、上記コマンドでは面倒くさいので、ffmpegでTS(m2ts)ファイルをmp4に変換 2019年版 を強くオススメする。