ログイン中のQiita Team
ログイン中のチームがありません

Qiita Team にログイン
コミュニティ
OrganizationイベントアドベントカレンダーQiitadon (β)
サービス
Qiita JobsQiita ZineQiita Blog
ffmpeg
122
どのような問題がありますか?

投稿日

更新日

FFmpegでよく使う例、コーデックをまとめてみた(2021年版)

FFmpegは、動画形式変換、動画ダウンロードなどで大変助かります。
しかし、パラメータをたまに忘れてしまうのでここにばっと書いていきます。

2021/02/06 コーデック追加、項目を追加しました。

コーデックの変換

input.mp4を映像コーデックlibx264で、音声コーデックlibmp3lameでoutput.mp4に出力するとき

ffmpeg -i ./input.mp4 -vcodec libx264 -acodec libmp3lame output.mp4

映像のビットレートを変える

映像ビットレート変更は-vb [ビットレート(数字の後にk,m)]

  • 600kbpsに下げるとき
ffmpeg -i ./input.mp4 -vb 600k output.mp4

音声のサンプリングレートを変える

音声のサンプリングレート変更は-ar [周波数(Hz単位)]

  • 48000Hzに変更するとき
ffmpeg -i ./input.mp4 -vcodec copy -ar 48000 output.mp4

音声のビットレートを変える

音声のビットレート変更は-ab [ビットレート(数字の後にk,m)]

  • 128kbpsに変更するとき
ffmpeg -i ./input.mp4 -vcodec copy -ab 128k output.mp4

ハードウェアアクセラレーションを使う

FFmpegは様々なハードウェアアクセラレーション機能を使うことができます。

Intel CPUの場合

Intel CPUの場合は、QSVというハードウェアアクセラレーションが使えます。
H.264はSandy Bridge以降、H.265とVP9はKaby Lake以降の世代でQSVを使うことができます。
通常に比べてエンコード速度がそこそこ上がります。
アクセラレーション名は qsvです。
H.264,H.265は専用コーデックがあります。

NVIDIA GeForceの場合

GeForceを装着しているパソコンなら、CUDAコアを使ったアクセラレーションが使えます。
GeForce 8シリーズ以降なら使えるので、最近のGeForceは100%使えます。
アクセラレーション名は cudaです。
H.264,H.265は専用コーデックがあります。

Windows Vista以降の場合

CPUに関係なく、Vista以降ならDXVA(DirectX Video Acceleration)が使えます。
アクセラレーション名は dxva2です。

Linuxの場合

ほとんどの環境で「vaapi」(Video-Acceleraion API)が利用可能です。
QSVなどと同等のパフォーマンスが得られます。
アクセラレーション名は vaapiです。

Twitterの動画をダウンロードする

例えば、以下のツイートの動画をダウンロードしたいとします。
https://twitter.com/SquidSky1/status/933593660779724801

まず、そこにアクセスしてから、F12キーを押してDev Toolsを開きます。
「Network」タブで、Allを選び「.m3u8」がつくリクエストを探します。
キャプチャ.PNG
それを右クリックで、Copy▶Copy link addressでリンクをコピーします。
そうしたら、端末などで以下のように入力します。

ffmpeg -i [コピーしたURL] -movflags faststart -c copy -bsf:a aac_adtstoasc twitter.mp4

こうすると、カレントディレクトリにtwitter.mp4としてダウンロードされます。

動画を逆にする

逆再生をするのには、動画編集ソフトが必要かなと思うと思いますが、実はFFmpegでも処理できます。
-filter_complexオプションにreverse;areverseをつけるだけです。
input.mp4を逆にしてoutput.mp4に保存する場合です。

ffmpeg -i ./input.mp4 -filter_complex "reverse;areverse" output.mp4

これで、逆再生になります。

ただし、メモリの消費が大きいので、8GBメモリの環境をおすすめします。

AACなのに、サイズが小さいのに、音質を良くする方法

Star.flacというファイルがあって、これをAAC 192kbpsに変換します。

普通は、192kbpsは音質が悪くなるんですが、FFmpegであるパラメータを指定すると、サイズが小さいのに高音質になります!

ffmpeg -i Star.flac -b:a 192k -aac_coder twoloop Star.m4a

これだけでいいんです!
-aac_coder twoloop」がポイントです。

一般的なエンコーダは、twoloopがfastになっています。twoloopにすると、エンコーダの精度が上がります。なのに、ファイルサイズがあまり変わらない。

魅力的ですね。

おまけ2

主な映像コーデック一覧

これらは-vcodecオプションなどで指定できます。

コーデック名 形式(拡張子)
libx264 MPEG-4,H.264(.mp4)
h264 MPEG-4,H.264(.mp4)
h264_qsv H.264(Intel Quick Sync Video)
h264_nvenc H.264(NVIDIA CUDAアクセラレーション)
h264_vaapi H.264(vaapi)
hevc H.265(.mp4)
hevc_qsv H.265(Intel Quick Sync Video, Kaby Lake以降)
hevc_nvenc H.265(NVIDIA CUDAアクセラレーション)
flv1 Flashムービー(.flv)
mjpeg Motion JPEG(.jpeg)
mjpeg_qsv JPEG(Intel Quick Sync Video)
mpeg1video MPEG-1 Video(.mpg)
mpeg2video MPEG-2 Video(.m2ts、.vob)
mpeg2_qsv MPEG-2 Video(Intel Quick Sync Video)
msvideo1 Microsoft Video(.avi)
vp3 VP3(.avi、.mov、.mkv)
vp6 VP6(.avi、.mkv、.tc7)
vp6a VP6(Flash用、アルファチャンネル対応) (.flv)
vp6f VP6(Flash用) (.flv)
vp7 VP7(.avi)
vp8 VP8(.webm、.avi)
vp9 Google VP9
vp9_qsv VP9 (Intel Quick Sync Video, Kaby Lake以降)
wmv1 Windows Media Player 7向け
wmv2 Windows Media Player 8向け
wmv3 Windows Media Player 9向け

主な音声コーデック一覧

これらは-acodecオプションなどで指定できます。

コーデック名 形式
libmp3lame MPEG audio layer 3
aac Advanced Audio Coding
alac Apple Lossless
flac Free Lossless Audio Codec
on2
mp1 MPEG audio layer 1
mp2 MPEG audio layer 2
mp3 MPEG audio layer 3
opus Opus(webm)
pcm_s16le PCM 16bit(WAVファイル)
pcm_s24le PCM 24bit(WAVファイル)
vorbis Vorbis(OGGファイル)
wmav1 Windows Media Audio 1(WMAファイル)
wmav2 Windows Media Audio 2(WMAファイル)
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
CyberRex
毎日がマイペース。写真、プログラ厶大好き。 主にWebサイト、サーバーサイドプログラムのデザイン・開発を行っております。 Linux経験豊富です。

コメント

リンクをコピー
このコメントを報告

あれっ、opus in mp4って許可されるんでしたっけ・・・?

0
(編集済み)
リンクをコピー
このコメントを報告

FFmpegでは Opus in MP4(ISOBMFF) に対応しているようですよ。
https://github.com/FFmpeg/FFmpeg/commit/0c4d2082961f23bb8d5b8f9e963bbecf4147d699

FFmpegサポートは実験的(experimental)ですし、仕様自体も非公式なものにはなりますが、事実上の標準とみなせるかと...

0
どのような問題がありますか?
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
122
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー