序#
最近 FFmpeg を発見し、使用してみたところ、非常に強力で、さまざまな音声と動画の操作ができることがわかりました。いくつかのソフトウェアも FFmpeg を引用しています。主に無料でオープンソースで、ライセンスが不要なツールであるためです。ここでは、FFmpeg の一般的なコマンドについて簡単にメモを作成し、初心者の読者が自分の動画のエンコーディングを簡単に変換できるように手助けします!ここでのほとんどの内容は、ネット上の既存の情報を参考にしています。
一緒に遊んでみましょう ฅ՞・ﻌ・՞ฅ
FFmpeg のインストール#
Windows#
FFmpeg はソースコードのみを提供しており、コンパイルが必要ですが、すでにコンパイルされた FFmpeg を直接使用できるリポジトリのリリース版があります。
https://github.com/BtbN/FFmpeg-Builds/releases
Ubuntu#
sudo add-apt-repository universe
sudo apt update
sudo apt install ffmpeg
概覧#
コンテナ形式#
私たちがよく見る動画ファイル形式は、実際にはコンテナそのもので、コンテナの中には動画トラック、音声トラック、メタデータ、字幕、タイトル、カバーなどが含まれています……
一般的な動画コンテナ形式には以下が含まれます。
- MP4 (MPEG 4)
- MKV (Matroska)
- WebM
- AVI (ASF)
- MOV (QuickTime)
TOP: WebM は最近人気の AV1、VP9、VP8 でよく使用されるコンテナで、コーデックには特定のハードウェアアクセラレーションが必要です。
例えば、AIN の 2022 年の新製品はすべて AV1 のコーデックハードウェアアクセラレーションをサポートしています。
エンコーディング#
一般的なエンコーディングの種類には、ライセンス付きエンコーディング、著作権フリーエンコーディング、音声エンコーディング形式が含まれます。
ライセンス付きエンコーディング
- H.262
- H.264
- H.265
著作権フリーエンコーディング
- VP8
- VP9
- AV1
音声エンコーディング形式
- MP3
- AAC
動画エンコーダ
libx264
: 最も人気のあるオープンソースの H.264 エンコーダNVENC
: NVIDIA GPU に基づく H.264 エンコーダlibx265
: オープンソースの HEVC エンコーダlibvpx
: Google の VP8 および VP9 エンコーダlibaom
: AV1 エンコーダ
音声エンコーダ
- libfdk-aac
- aac
インストール済みの FFmpeg エンコーダを確認する
ffmpeg -encoders
使用方法#
ffmpeg [1] [2] -i [3] [4] [5]
[1] グローバルパラメータ
[2] 入力ファイルパラメータ
[3] 入力ファイル
[4] 出力ファイルパラメータ
[5] 出力ファイル
パラメータ#
-c
: エンコーダを指定-c copy
: 再エンコードせずに直接コピー、より速い-c:v
: 動画エンコーダを指定-c:a
: 音声エンコーダを指定-i
: 入力ファイルを指定-an
: 音声ストリームを削除-vn
: 動画ストリームを削除-preset
: 動画エンコーディング品質ultrafast
,superfast
,veryfast
,faster
,fast
,medium
,slow
,slower
,veryslow
-y
: 確認なしで、同名のファイルを上書き出力
詳細:https://zh.m.wikipedia.org/zh-hans/FFmpeg
ファイル情報#
ffmpeg -i input.mp4
メタ情報のみを表示、クリーン
ffmpeg -i input.mp4 -hide_banner
フォーマット変換#
ffmpeg -i input.avi output.mp4
直接コピーが最も速い
ffmpeg -i input.avi -c copy output.mp4
-i 入力ファイル
-c copy 直接コピーして再エンコードせずに速度を向上
エンコード変換#
ffmpeg -i input.mp4 -c:v libx264 output.mp4
H.265エンコーダを選択
ffmpeg -i input.mp4 -c:v libx265 output.mp4
-i 入力ファイル
-c エンコーダを変換
トリミング#
ffmpeg -ss 00:00:00 -t 00:00:30 -i input.mp4 -vcodec copy -acodec copy output.mp4
-ss 開始時間
-t 終了時間
-i 入力ファイル
ビットレート#
この章は専門的すぎるため、より深い理解が必要です!ここでは最も簡単なエンコーディング方法を示し、圧縮設定は含まれていません。
ABR (VBR) 二次エンコード#
ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -pass 1 -f null /dev/null
ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -pass 2 output.mp4
もちろん、VBRを一度だけ行うこともできます
ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -pass 1 output.mp4
CBR 恒常ビットレート#
2Mビットレートに圧縮
ffmpeg -i input.mp4 -b:v 2M output.mp4
2Mビットレートに安定して圧縮
ffmpeg -i input.mp4 -b:v 2M -bufsize 2M output.mp4
2Mビットレートに安定し、最大2.5Mビットレートを許可
ffmpeg -i input.mp4 -b:v 2M -bufsize 2M -maxrate 2.5M output.mp4
libx264エンコーダを使用して、最小1Mビットレート、最大2Mビットレート、安定して1Mビットレートに設定
ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -minrate 1M -maxrate 2M -bufsize 1M output.mp4
-i 入力ファイル
-b 動画ビットレート
-minrate 最小ビットレートを許可
-maxrate 最大ビットレートを許可
-bufsize ビットレート制御バッファ
サイズ#
ffmpeg -i input.avi -fs 114M output.mp4
-i 入力ファイル
-fs ファイルサイズを制御
解像度#
ffmpeg -i input.mp4 -vf scale=1920:1080 output.mp4
アスペクト比を保持するには -1 を使用
ffmpeg -i input.mp4 -vf scale=1920:-1 output.mp4
-i 入力ファイル
[アスペクト比を保持 -1]
FPS#
ffmpeg -i input.avi -r 30 output.mp4
-i 入力ファイル
-r フレームレート値
音声抽出#
ffmpeg -i input.mp4 -aq 0 -f mp3 -vn output.mp3
ffmpeg -i input.mp4 -acodec aac -vn output.mp3
-i 入力ファイル
-f 出力形式
-vn 動画を含まない
-aq 0 圧縮品質
-acodec 音声コーデックを設定
音声と動画の分離#
動画を分離
ffmpeg -i input.mp4 -vcodec copy -an output.mp4
acc 形式を分離
ffmpeg -i input.mp4 -acodec copy -vn output.m4a
ffmpeg -i m.m4a m.mp3
音声を直接抽出
ffmpeg -i mavel4.mp4 m.mp3
音声と動画の結合#
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental output.mp4
-i 入力ファイル
-c 動画エンコーディング方式
音声の圧縮#
ffmpeg -i input.wav -b:a 64k -acodec mp3 -ar 44100 -ac 1 output.mp3
-i 入力ファイル
-b ビットレート
-ar サンプリングレート
スクリーンショット#
指定時間のスクリーンショット
ffmpeg -ss 00:11:45 -i input.mp4 -r 1 output.jpg
最初からフレームを抽出してスクリーンショット
ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 output.jpg
-i 入力ファイル
-r 秒ごとに 1 フレーム
-q 画像品質
-f 出力形式
カバー#
動画のカバー
ffmpeg -i input.mp4 -i input.jpg -map 0 -map 1:0 -c copy -disposition:v:1 output.mp4
音声のカバー
ffmpeg -i input.mp3 -i input.jpg -map 0:0 -map 1:0 -codec copy -id3v2_version 3 \
-metadata:s:v title="アルバムカバー" -metadata:s:v comment="カバー (前面)" output.mp3
ffmpeg を使用して動画ストリームと音声ストリームを分離する
ビットレート制御(一):ビットレート制御モードの理解(x264,x264,vpx)
この記事は Mix Space によって xLog に同期更新されました
元のリンクは https://www.miaoer.net/posts/blog/ffmpeg