2019.2.10 修正
-r 30 を削除しました。
理由: ffmpegのフレームレートは少数以下2桁しか保持していないため、音声と映像のズレが発生するため、元のフレームレートを保持するようにした。
扱うコンテンツのほとんどが 29.97のため、30と変換する過程でのズレを防ぐため。
【使い方】
conv.batという名前で保存する(名前は例)
変換する前のファイルは、*.m2ts であることが前提
変換後のファイルは、*.mp4となる。
すでに 同名のmp4というファイルがあれば、そのファイルは変換しない。
途中で、ctrl-c で止めた場合は、変換途中の mp4が残ってしまうため、削除すること
REM 音声のトランスコードを削除
REM 音声のvolume 1.5を削除
REM vsyncをcfrで指定
REM -threadオプションでスレッド数を明示。指定しないとコア数の1.5倍で実行する模様。ノートPCのCPU使用率が上がりすぎないよう(熱が上がらないよう)にしたいので、コア数の半分位にする(利用環境に合わせて変更して下さい)
REM nvidia の GPU 積んでる場合はエンコーダを指定する事で高速化できる模様
pushd %~dp0%
for %%i in (*.m2ts) do (
if not exist "%%~ni.mp4" (
start /wait /low c:\ffmpeg\bin\ffmpeg -i "%%i" -s 1024x768 -f mp4 -c:v libx264 -crf 28 -
preset veryfast -profile:v high -level 4.1 -tune film "%%~ni.mp4" -vsync cfr -thread 2
)
)
-i "%%i" 入力ファイルの指定
-s 1024x768 フレームサイズ(wxh)
-f mp4 変換フォーマットの指定
-c:a aac Audioの(1番)ストリームをAACでエンコード
-b:a 128k Audioの(1番)ストリームのビットレートの指定(128k bps)
-af " volume=1.5"
-c:v libx264 Videoの(1番)ストリームのコーデックの指定(x264)
-crf 28 Videoの品質。VBR? とれる範囲は0から51。値が小さいほど、高画質になるが、その分ファイルサイズは増える。デフォルト値は23
-preset veryfast -presetオプションはエンコード速度と品質もしくは出来上がるファイルサイズを決定する。
-profile:v high
-level 4.1
-tune film プリセットで指定した後、さらにtuneで詳細な指定が行ない、動画を最適化できる。
-r xxxx 切り出したい画像の1秒あたりの枚数(フレームレート)。元のフレームレートから変更すると音ズレの可能性があるため、今回指定しない。
-vsync 1 音ズレを防ぐため 1 (=cfr )にする
-vsync parameter
Video sync method. For compatibility reasons old values can be specified as numbers. Newly added values will have to be specified as strings always.
0, passthrough
Each frame is passed with its timestamp from the demuxer to the muxer.
1, cfr
Frames will be duplicated and dropped to achieve exactly the requested constant frame rate.
"%%~ni.mp4" 書き出すファイル名の指定
※コメント投稿者のブログIDはブログ作成者のみに通知されます