Help us understand the problem. What is going on with this article?

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

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

コーデックの変換

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は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です。

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アクセラレーション)
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)
mpeg1video MPEG-1 Video(.mpg)
mpeg2video MPEG-2 Video(.m2ts、.vob)
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
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ファイル)
CyberRex
PHP,HTML5,Python,JavaScriptをメインに色々やってます。 GitHubもぜひ。https://github.com/CyberRex
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした