ffmpegで動画を圧縮する
AVIから圧縮する
普通にmp4に変換すれば圧縮される
$ ffmpeg -i input.avi output.mp4
-crfを変える
1から51まで
encodingによってdefault valueが変わる
SVT-AV1はpreset 9で35だった
動画のサイズを減らすffmpeg - そこに仁義はあるのか(仮)
SVT-AV1で圧縮する
SVT-AV1で動画を圧縮するコマンド
$ ffmpeg.exe -i input.mp4 -c:a copy -c:v libsvtav1 -preset 5 -svtav1-params tune=0 output.mp4
ffmpegでmetadataを維持する
$ ffmpeg.exe -i input.mp4 -map_metadata 0 -movflags +use_metadata_tags -c:a copy -c:v libsvtav1 -preset 5 -svtav1-params tune=0 output.mp4
-presetを増やすとファイルサイズが減るhttps://qiita.com/daredeshow/items/a780041a0d023a12cc63#結果
H.264の動画を圧縮する
H.265に変換するだけでかなり圧縮される
$ ffmpeg -i input.mp4 -c:a copy -c:v libx265 -crf 22 output.mp4
defaultは-crf 28
22にしたほうが画質がいいらしいが、正直違いはわからないtakker.icon
Intel Quick Sync Videoが使える環境なら、-c:v hevc_qsvにする
decoderもhardwareでやりたい場合は、-hwaccel qsvと-hwaccel_output_format qsvもいれる
h.264の場合 | 【ffmpeg】WindowsでQSVを使って動画を圧縮する
オプション | QSV 対応 Intel CPU で H.264 のハードウェアエンコード on Linux #ffmpeg - Qiita
また、hardware encoderを使うときは-crfではなく-presetと-global_qualityを使う
ちなみに-vcodecと-c:vは同義
from ffmpegで動画をH.265エンコードして容量を大幅に節約する - 丁寧に手を抜く
Game bar (Xbox)で録画した5GBの動画をこれで圧縮したら150MBくらいになった
H.265がすごいのかGame bar (Xbox)のencodeがガバなのか
どちらの要素が強いのかはわからない
H.265の動画は埋め込みに失敗するので避けたほうが良い
代わりにAV1で圧縮する
$ ffmpeg -i input.mp4 -strict -2 -c:a copy -c:v libaom-av1 output.mkv
AV1は実験用フラグ-strict -2を立てないと使えない
めちゃくちゃ遅いので覚悟すること
2020年1月現在、リファレンス実装であるlibaomのエンコード速度が非現実的(x264の数千倍)なまでに低速であることが欠点とされる。エンコードの高速化を目標としたオープンソースのrav1eや、IntelがXeon CPU向けに開発しているSVT-AV1などの実装などが存在しているが、いずれれにせよエンコードにはx264やx265(英語版)の数倍~数十倍程度の時間がかかり、非常に低速である。
あまりにも遅すぎるので非推奨
2023-06-15 08:17:56 ffmpeg 6.0からav1_qsvを使えるようになった
takker.iconのdynabook GZ/HVは未対応だった
メタデータを維持して変換するには、-map_metadataを使う
ffmpegでmetadataを維持する
メタデータの引継ぎ | ffmpeg覚書 #ffmpeg - Qiita
一旦すべてのメタデータをmetadata.txtに出力する
$ ffmpeg -i input.mp4 -map_metadata 0 -map_metadata:s:v 0:s:v -map_metadata:s:a 0:s:a -f ffmetadata metadata.txt
metadata.txtの情報を出力先ファイルに書き込む
$ ffmpeg -i input.mp4 -f ffmetadata -i metadata.txt -map_metadata 1 -movflags +use_metadata_tags -c copy output.mp4
-movflags +use_metadata_tags: 任意のmetadata(com.android.versionなど)も付与する
from ffmpeg でメタデータを加える | ニコラボ
ある程度のmetadataなら、ファイルを介さずとも-map_metadata 0 -movflags +use_metadata_tagsを加えるだけですべてコピーされるみたい
#ffmpeg
#2025-05-19 09:01:33
#2025-05-17 14:50:30
#2025-01-13 12:17:54
#2023-06-15 08:18:36
#2021-07-11 21:39:21
#2021-05-24 15:42:32
#2021-05-23 17:12:41
#2021-04-17 14:43:26