1,000万円を超えたbitcoinを少しだけどもらえるURL
https://bitflyer.com/invitation?id=l50e5ljw&lang=ja-JP
ハピタスからポイントもらえるURL
いろいろ録画したtsファイル(動画)がたまっていて
それぞれのサイズが、例えば12GBもあるとしよう。
mp4にエンコードしながら変換すると速いPCでも丸一日かかる。HandBrakeでもffmpegでも、時間はそう変わるまい。
そこで再エンコードなしでコンテナ変換(ts→mp4)だけをする。
拡張子がtsのままだとhttpで配信できないから。Apacheの設定しだいでは配信できるのかもしれないけど、今回は動画のほうをコンテナ変換することを目指す。
このへん参照して進める。
まずはtsコンテナの動画がどんなコーデックなのかffprobeコマンドで調べる。
ffprobe -i ではないことに注意。
ffprobe に続けていきなり動画名.ts でよい。
$ ffprobe wow_16916_20200816_053301.ts
赤文字や黄文字のエラーは無視するとして、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
inputファイル名には -i を忘れずにつける。
outputファイル名には-o は不要なので要注意!
変換が進む。PES packet size mismatch(黄色)は無視してよさそう。
speed=52.9x は、動画の52倍速で変換できているということだから、仮に12GBで12時間の動画だとすると、50分の1の時間で変換が終わることになる。
12時間 = 60分x12 = 720分 ÷ 50 = 14分
12時間のts動画が14分でmp4になる計算だ。充分に速い。
やってることはこの記事(動画の切り出し、トリミング)と同じ。
実行中のtopコマンドでロードアベレージを見てみるが、ほとんど負荷がない。
エンコードしない、実質ファイルコピーだということがわかる。
だいたい計算どおりの時間で変換完了。
サイズも1GBくらい減っていて素晴らしい。
ffprobeで情報を見てみよう。
$ ffprobe wow_16916_20200816_053301.ts_test01.mp4
変換前にあった赤文字や黄文字のエラーも消えている。素晴らしい(コンテナmp4の仕様というかh264の仕様に沿った形に変換されたから?)
変換後の動画をhttp経由で再生してみる。
完璧だ。
15時間の動画が、どこからでもヌルヌル再生できる。Linux最高すぎ。
参考)