min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

tsファイルを再エンコードなしでmp4にコンテナ変換する(ffmpeg -i tsファイル名 -vcodec copy -acodec copy mp4ファイル名)

いろいろ録画したtsファイル(動画)がたまっていて

f:id:min117:20200822120643p:plain

それぞれのサイズが、例えば12GBもあるとしよう。

f:id:min117:20200822120611p:plain

mp4にエンコードしながら変換すると速いPCでも丸一日かかる。HandBrakeでもffmpegでも、時間はそう変わるまい。

 

そこでエンコードなしでコンテナ変換(ts→mp4)だけをする。

f:id:min117:20200822121014p:plain

拡張子がtsのままだとhttpで配信できないからApacheの設定しだいでは配信できるのかもしれないけど、今回は動画のほうをコンテナ変換することを目指す。

 

このへん参照して進める。

www.ellinikonblue.com

 

まずはtsコンテナの動画がどんなコーデックなのかffprobeコマンド調べる

f:id:min117:20200822111220p:plain

ffprobe -i ではないことに注意。

ffprobe に続けていきなり動画名.ts でよい。

 

$ ffprobe wow_16916_20200816_053301.ts

f:id:min117:20200822121516p:plain

赤文字や黄文字のエラーは無視するとして、Streamの行をみると既にh264でエンコードされていることがわかる。

 

ということは「拡張子をmp4にしたいがためだけに、さらにHandBrakeでエンコードする」なんて時間の無駄だ。つまりはコンテナ形式だけtsからmp4に変えてやれば済むと分かる。

 

コンテナ形式の変更ffmpeg-vcopyオプションで行う。

 

$ ffmpeg -i tsファイル名 -vcodec copy -acodec copy mp4ファイル名

$ ffmpeg -i input.ts -vcodec copy -acodec copy output.mp4

$ ffmpeg -i wow_16916_20200816_053301.ts -vcodec copy -acodec copy wow_16916_20200816_053301.ts_test01.mp4

f:id:min117:20200822122517p:plain

inputファイル名には -i を忘れずにつける。

outputファイル名には-o は不要なので要注意!

 

変換が進む。PES packet size mismatch(黄色)は無視してよさそう。

f:id:min117:20200822122849p:plain

speed=52.9x は、動画の52倍速で変換できているということだから、仮に12GBで12時間の動画だとすると、50分の1の時間で変換が終わることになる。

 

12時間 = 60分x12 = 720分 ÷ 50 = 14分

f:id:min117:20200822123220p:plain

12時間のts動画14分でmp4になる計算だ。充分に速い。

 

やってることはこの記事(動画の切り出し、トリミング)と同じ

min117.hatenablog.com

 

実行中のtopコマンドでロードアベレージを見てみるが、ほとんど負荷がない。

f:id:min117:20200822133958p:plain

エンコードしない、実質ファイルコピーだということがわかる。

 

だいたい計算どおりの時間で変換完了

f:id:min117:20200822124705p:plain

 

サイズも1GBくらい減っていて素晴らしい。

f:id:min117:20200822125456p:plain

 

ffprobeで情報を見てみよう。

$ ffprobe wow_16916_20200816_053301.ts_test01.mp4

f:id:min117:20200822125658p:plain

変換前にあった赤文字や黄文字のエラーも消えている。素晴らしい(コンテナmp4の仕様というかh264の仕様に沿った形に変換されたから?)

 

変換後の動画をhttp経由で再生してみる。

f:id:min117:20200822124232p:plain

完璧だ。

f:id:min117:20200822124356p:plain

f:id:min117:20200822124458p:plain

15時間の動画が、どこからでもヌルヌル再生できる。Linux最高すぎ。

 

参考)

min117.hatenablog.com

min117.hatenablog.com

gordiustears.net