序#
最近發現了並使用了 FFmpeg 發現他十分的強大,能做到各種音視頻操作,有的軟件也是引用的 FFmpeg 主要是他是免費開源不需要授權的工具,這裡就簡單做一下 FFmpeg 常見的幾個命令筆記,幫助小白讀者輕鬆轉換編碼自己的視頻!這裡大部分內容都是參考網絡上有的內容以標記引用源。
來一起玩一下吧 ฅ՞・ﻌ・՞ฅ
安裝 FFmpeg#
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 視頻碼率
-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 幾秒一幀
-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 視頻處理入門教程
碼率控制(一):理解碼率控制模式(x264,x264,vpx)
此文由 Mix Space 同步更新至 xLog
原始鏈接為 https://www.miaoer.net/posts/blog/ffmpeg