WebM 形式から MP4 に変換する

入力ファイルに WebM 形式のファイルを指定し、出力ファイルに拡張子 .mp4 のファイル名を指定する。

$ ffmpeg -i input.webm output.mp4

参考:

FFmpeg で WebM を MP4 に変換する | みかづきブログ

WebM を MP4 に変換する | あしたの Ubuntu

WebM 形式に変換する

動画を ffmpeg コマンドで WebM 形式に変換する。

$ ffmpeg -i input.mp4 output.webm

ドキュメント:

VP9 Encoding Guide | FFmpeg Wiki [Official]

VP8 Encoding Guide | FFmpeg Wiki [Official]

VP9 ビットレート モードの詳細 | Google for Developers [公式]

VP8 Encode Parameter Guide | The WebM Project [Official]

参考:

FFmpeg を使って動画を WebM へ変換する手順 – Qiita

Mac + Homebrew 環境に FFmpeg を導入し、動画を .mp4 → .webm へ変換する方法 | 0017

WebM to MP4 conversion using FFmpeg – Stack Overflow

constant rate factor for different WebM qualities – Super User

H.264 でエンコードする

通常画質でエンコードする。

$ ffmpeg -i movie.avi \
    -vcodec libx264 -preset medium -crf 23 \
    -pix_fmt yuv420p -movflags +faststart output.mp4

高画質でエンコードする。

$ ffmpeg -i movie.avi \
    -vcodec libx264 -preset slow -crf 21 \
    -pix_fmt yuv420p -movflags +faststart output.mp4

ドキュメント:

H.264 Video Encoding Guide | FFmpeg Wiki [Official]

参考:

H.264 でエンコード | tech.ckme.co.jp

FFmpeg エンコード設定メモ | cafegale

x264 の CRF 値はどれくらいが適切なのか? | もにっき

フレームレートを変換する

フレームを間引く

-r オプションで出力のフレームレートを指定する。入力と出力の間で -r オプションを指定すると、入力ファイルのフレームレートより小さい値の場合は、動画の再生時間を維持したままフレームが間引かれる。入力ファイルのフレームレートより大きい場合は効果がない。

$ ffmpeg -i movie.mp4 -r 30 movie_30fps.mp4

ドキュメント:

Changing Frame Rate | FFmpeg Wiki [Official]

Video Options | FFmpeg Documentation [Official]

参考:

再エンコードせずに FPS を変更する | ニコラボ

FFmpeg でのフレームレート設定の違い | ニコラボ

動画のフレームレートを強制的に変更して出力したい | 人生は読めないブログ

Set FPS | Nobu

Using FFmpeg to change framerate – Stack Overflow

change FPS while-loops exporting FFmpeg – Stack Overflow

Faster way to change framerate from 60FPS to 30 FPS? – reddit

ファイル形式を指定する

AVI ファイルを MP4 形式に変換する。

$ ffmpeg -i movie.avi -pix_fmt yuv420p movie.mp4

参考:

FFmpeg を利用した動画ファイルフォーマット変換 – Qiita

Encode with FFmpeg using AVI to MP4 – Unix & Linux Stack Exchange

convert from AVI to MP4 using FFmpeg – Stack Overflow

YUV420

一部のプレイヤーは YUV420 でないと再生できないため、-pix_fmt yuv420p オプションを指定して、色情報を YUV420 でエンコードする必要がある。

オプション
  • -pix_fmt yuv420p色情報を YUV420 でエンコードする

参考:

Twitter に MP4 動画をアップロードするには yuv420p を使う必要がある (らしい) | kivantium 活動日記

FFmpeg で AVI を MP4 に変換すると Windows Media Player で再生できない? | urashita.com

YUV – Wikipedia

再生をすぐに開始できるようにする

メタ情報 (Moov Atom) をファイルの先頭に移動して、ファストスタート (Fast Start) を有効にする。

$ ffmpeg -i movie.mp4 -c copy -movflags +faststart output.mp4

参考:

YouTube の MP4 ファストスタート (moov atom 先頭) とは?変換ツールも紹介 | アカスブログ

HTML5 の video タグで利用する MP4 の動画を作る時の Tips – Qiita

MP4 動画をプログレッシブダウンロード再生するには | 端くれプログラマの備忘録

Any downsides to always using the -movflags faststart parameter? – Super User

Fastest way to add -movflags +faststart to an MP4 using FFmpeg, leaving everything else as-is – Stack Overflow

画質

参考:

保存用動画は CRF/固定品質モードでエンコードしよう | 翔星 Be ランド日記

Understanding Rate Control Modes (x264, x265, vpx) | Werner Robitza

CBR, CRF, and Changing Resolution using FFmpeg | OTTVerse

2-Pass Encoding vs. 1-Pass CRF – Stack Overflow

CRF / CQP is incompatible with 2-pass – Stack Overflow

CRF (Constant Rate Factor)

  • 051 の値を指定する。
  • 値が小さいほど高画質となる。
  • デフォルト
    • libx264 23
    • libx265 28

動画:

CRF / Constant Rate Factor Comparison (Bozott)

ドキュメント:

H.264 Video Encoding Guide | FFmpeg Wiki

参考:

動画出力の品質レベルの最適値考察 (x264 CRF) | デジタルキャットの備忘録

CRF Guide – Constant Rate Factor in x264, x265 and libvpx | Werner Robitza

What is -crf used for in FFmpeg? – Super User

What does -crf mean in FFmpeg resize video file command? – Stack Overflow

How FFmpeg CRF works? – Stack Overflow

Will I get any visual benefit if I use CRF values below 17 in x264? – Super User

Multiple outputs with ffmpeg using Constant Rate Factor – Super User

How to estimate CRF for H.264 video target size – Stack Overflow

What is the right way to calculate 1080p 720p 360p 240p quality? – Super User

可逆/ロスレスエンコード (Lossless)

x264 形式で可逆エンコードを実行するには、CFR オプションに 0 を指定する。

$ ffmpeg -i movie.avi -vcodec libx264 -preset slow -cfr 0 movie.mp4
注意事項

可逆エンコードはビットレートが高いため、特に解像度が高い動画はリアルタイムに再生できず、主に中間保存形式としての用途に用いる。用途によっては、十分に品質が高い不可逆エンコードを用いる方が適切な場合がある。

参考:

可逆圧縮コーデックのエンコード速度 | ニコニコ動画研究所

x264 とそのライブラリを用いた FFmpeg / MEncoder の可逆エンコードに関する覚え書き #2 | 試験運用中な Linux 備忘録

x264 とそのライブラリを用いた FFmpeg / MEncoder の可逆エンコードに関する覚え書き #1 | 試験運用中な Linux 備忘録

VFR を CFR に変換する

オプション -vsync cfr を付けて処理する。

$ ffmpeg -i input.mp4 -vsync cfr output.mp4

リポジトリ:

nssuperx/vfr2cfr: FFmpegを使って VFR 動画を CFR 動画に変換する – GitHub

参考:

FFmpeg で VFR の MP4 ファイルを CFR の MP4 ファイルに変換する方法 | PC 役立ち情報

動画の VFR に悩まされた話 | 青い空の間

How to convert VFR to CFR without messing up the timing – Super User

コーデック

使い分け
  • H.264
    • エンコードが比較的高速である。
    • ビットレートが多少高くても、高画質を維持したい場合に使う。
  • H.265
    • エンコードに時間を掛けてでも圧縮したい場合に使う。
    • 画質を多少犠牲にして圧縮率を高められる。
  • VP9 / AV1
    • 個人が使うにはエンコード時間が長過ぎる。
    • プラットフォーマー向け

ドキュメント:

Codecs | FFmpeg Documentation [Official]

参考:

FFmpeg でよく使う例、コーデックをまとめてみた – Qiita

-c:v or -vcodec copy or -codec:v | FFmpeg User ML

再エンコードしない

映像を再エンコードせずにその他の処理を実行する場合は、オプション -vcodec copy を指定する。

参考:

What’s the difference between FFmpeg’s “-vcodec copy” and “-sameq”? – Super User

偶数/奇数フレームのみを抜き出す

参考:

Drop every even or odd frames using FFmpeg? – Super User

UtVideo 形式

コード:

UtVideo フォーマットにエンコード (dashimaki360) – GitHub Gist

参考:

UtVideo Codec Suite の UtVideo T2 (UMxx) ファミリと FFmpeg | yumetodo の旅とプログラミングとかの記録

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA