banner
miaoer

miaoer

喵二の小博客 https://www.miaoer.net xLog 分站
tg_channel
telegram
bilibili

FFmpeg 常見命令

#

最近發現了並使用了 FFmpeg 發現他十分的強大,能做到各種音視頻操作,有的軟件也是引用的 FFmpeg 主要是他是免費開源不需要授權的工具,這裡就簡單做一下 FFmpeg 常見的幾個命令筆記,幫助小白讀者輕鬆轉換編碼自己的視頻!這裡大部分內容都是參考網絡上有的內容以標記引用源。

來一起玩一下吧 ฅ՞・ﻌ・՞ฅ

安裝 FFmpeg#

image

Windows#

因為 FFmpeg 只提供源碼需要編譯,但有大神編譯好的 FFmepg 可以直接使用倉庫中的發行版

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 22 年新品都支持 AV1 編解碼硬件加速

編碼#

常見的幾種編碼;包括了授權編碼、無版權編碼、音頻編碼格式

授權編碼

  • H.262
  • H.264
  • H.265

無版權編碼

  • VP8
  • VP9
  • AV1

音頻編碼格式

  • MP3
  • AAC

視頻編碼器

  • libx264: 最流行的開源 H.264 編碼器
  • NVENC: 基於 NVIDIA GPU 的 H.264 編碼器
  • libx265: 開源的 HEVC 編碼器
  • libvpx: 谷歌的 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 音頻碼率

-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 音頻編碼方式

-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 幾秒一幀

-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="Album cover" -metadata:s:v comment="Cover (front)" output.mp3

引用:
FFmpeg 視頻處理入門教程

使用 ffmpeg 分離視頻流和音頻流

ffmpeg 常用參數說明及例子

碼率控制(一):理解碼率控制模式(x264,x264,vpx)

此文由 Mix Space 同步更新至 xLog
原始鏈接為 https://www.miaoer.net/posts/blog/ffmpeg


載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。