###### tags: `デジタル信号処理` `FFmpeg` FFmpeg 基本 === # 基本 ## 入出力 入力や出力を指定する時に、パスの代わりに`pipe:(パイプ識別子)`とするとファイルと読み書きする代わりに*パイプ*に入出力できる パイプ識別子: `0`は標準入力、`1`は標準出力、`2`はエラー出力、`-`と書くか何も書かなかったら自動判定 例: 自動判定で受け取り、標準出力へ出す `ffmpeg -i pipe: pipe:1` ## コーデック `-c` : コーデックを指定する : これだけだとすべてのコーデックを一括指定する : コーデックとして`copy`を指定すると、再エンコードをせずロスレスかつ高速に出力してくれる(素通しエンコとも言われる) : このオプションだと映像と音声両方を同時に指定するため、指定する値は`copy`が多い `-c:v` : 映像のコーデックを指定する `-c:a` : 音声のコーデックを指定する `ffmpeg -codecs` : 使用可能なコーデックの一覧を表示する : コーデックを指定する時の参考になる `ffmpeg -h encoder=<コーデック名>` : 使えるエンコードオプションとその説明を得られる `ffmpeg -formats` : 使用可能なフォーマットの一覧を表示する ### x264 ``` ffmpeg -i input.mkv -vcodec libx264 -crf 20 -preset fastdecode -x264opts ref=6:keyint=600 output.mp4 ``` コーデックの名前は`libx264` 使える基本的なオプションは`ffmpeg -h encoder=libx264`で確認できる しかしx264の一部のオプションのみ指定できる `-x264opts`ですべてのx264のオプションを直接使える ただし始めのハイフンは抜き、オプション名と値は`=`で繋げ、オプションとオプションは`:`で繋げる `-x264opts <オプション名=数字:オプション名>` `-x264opts ref=6:bframes=6:keyint=600:min-keyint=60` # フィルター `-filter`で指定する 複数のフィルターはカンマ`,`で区切り、フィルターへの引数はコロン`:`で区切る : `hogefilter=1:2,fugafilter=1:2` ## 映像 `-s 横x縦` : 映像のリサイズを行う : 画素数(解像度と呼ばれることが多い)を指定する : 横のピクセル数を書き、アルファベットの`x`を挟んで、縦のピクセル数を書く : キーワードを指定することもできる、[キーワードとそれが示す画素数の一覧]() `-sws_flags` : リサイズを行う際の、オプションを指定できる : 複数のオプションは`+`を使って表す 例:`-sws_flags accurate_rnd+bicubic` `-g` : キーフレームの間隔 : `-g 1` はすべてキーフレーム `-pix_fmt` : ピクセルフォーマット(クロマサブサンプリング)を指定する : `yuv420p` `nv12` など : 使える値は `-pix_fmts` で一覧できる ### vfフィルター `-vf <映像フィルタの識別子>=<指定する値>,<2つ目の映像フィルタの識別子>=<指定する値>` って指定するフィルター `-filter:v`か`-vf`で映像へフィルターを指定する `-filter:1:v`で2つ目の入力ファイルの映像に対する指定となる `scale=<横>:<縦>` : リサイズを行う : 片方の値を`-1`にすると自動的にアスペクト比を維持する値にしてくれる : `-2`にするとさらに奇数にである場合に偶数に繰り上げてくれる : `flags=<値>`でsws_flagを指定できる(`-filter:v scale=1280:-2:flags=lanczos:accurate_rnd`) `subtitles=<ファイル名.srt>` : srtファイルから字幕を焼き込む : ファイル名に空白が含まれてたらどうするか不明 ## 音声 ### afフィルター `-af <音声フィルタの識別子>=<指定する値>,<2つ目の音声フィルタの識別子>=<指定する値>` ってやって指定するフィルター `volume=<倍率>` : 音量を変える、倍率かデシベルを指定する : `1`でそのまま、`2`で2倍、`0.5`で半分 : `+1db`で1db大きくする、`-2db`で2db小さくする ## 資料 1. https://nyanshiba.hatenablog.com/entry/2018/02/03/071256 2. https://nico-lab.net/scale_with_ffmpeg/ 3. https://ffmpeg.org/ffmpeg-filters.html#scale-1 4. https://ffmpeg.org/ffmpeg-scaler.html
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.