ゆっくり技術ノート!

いつかきっとできるだろうよ

ffmpegでmkvをmp4にした

動画を以下の様に映像は無変換でmkv(FLAC/AVC)からmp4(AAC/AVC)にしたい

今回はffmpegを使うことにする

ffmpeg

FFmpeg(エフエフエムペグ)は動画と音声を変換することのできるUNIX系OS生まれのフリーソフトウェアであり、libavcodec(動画/音声のコーデックライブラリ)、libavformat(動画/音声のコンテナライブラリ)、libswscale(色空間・サイズ変換ライブラリ)、libavfilter(動画のフィルタリングライブラリ)などを含む。ライセンスはコンパイル時のオプションによりLGPLGPLに決定される。コマンドラインから使用することができる。対応コーデックが多く、多彩なオプションを使用可能なため、幅広く利用されている。
via FFmpeg - Wikipedia

やってみる

ffmpegで普通に変換したらMPEG Audioになって音が曇った感じになってしまった
いろいろ調べて今のところ最適なオプションにたどり着いた

DIRPATH=$1

for FILE in ${DIRPATH}*.mkv
do

    ffmpeg -i "${FILE}"  -vcodec copy -acodec aac -strict experimental -ab 128k -aprofile aac_low -ac 2 -ar 44100 "${FILE%.mkv}.mp4"

done

変換するファイルが複数だったので初めてシェルスクリプト使った

変換するファイルのあるディレクトリで実行するとmkvのファイルだけをmp4に変換してくれる

雑感

  • 映像のエンコードはしないので20GBほどがファイルコピーと同じくらいの速さで仕上がった
  • 音質もほとんど聞き分けられないほどになった
  • これからシェルスクリプトも積極的に使っていきたい

参考ページ

  1. シェルスクリプトで指定したディレクトリ内のファイルを取得する - Webエンジニア(予定)のメモ帳
  2. H264 - 動画処理の定番ツール「FFmpeg」ことはじめ - Qiita
  3. 最近のFFmpegで動画の音声にMP3やAACを指定する方法 | TeraDas-テラダス
    • audioオプションについて