官方文檔:
https://www.ffmpeg.org/ffplay-all.html
https://www.ffmpeg.org/ffmpeg-all.html
# 01-Windows FFMPEG指令行環境搭建
要在Windows系統上使用FFmpeg指令行,可以按照以下步驟搭建環境:
1.通路FFmpeg官方網站,下載下傳已經編譯好的Windows shared庫。
2.将下載下傳得到的包中的執行檔案ffmpeg.exe、ffplay.exe和ffprobe.exe拷貝到C:\Windows目錄下。這樣,在指令行視窗中便可以直接通路這些可執行檔案。
3.将相應的動态庫拷貝到C:\Windows\SysWOW64目錄下,以確定FFmpeg可以正确地加載動态連結庫。(注:SysWOW64是Windows-on-Windows 64-bit的簡稱,是64位系統用來運作32位程式的檔案夾)
4.打開指令行視窗,輸入ffmpeg -version指令以檢查FFmpeg環境是否搭建成功。
通過以上步驟,我們可以在Windows系統上成功搭建FFmpeg指令行環境,進行音視訊處理等操作。
# 02-FFMPEG如何查詢指令幫助文檔
## ffmpeg/ffplay/ffprobe差別
● ffmpeg:
Hyper fast Audio and Video encoder
超快音視訊編碼器(類似愛剪輯)。ffmpeg是一個超快的音視訊編碼器,可以将音視訊檔案進行編碼、轉換、剪輯等操作。它支援多種格式的音視訊檔案,并且擁有強大的編碼能力,可以對音視訊進行高效的壓縮。
● ffplay:
Simple media player
簡單媒體播放器。ffplay是一個簡單的媒體播放器,可以播放多種格式的音視訊檔案。它支援實時播放、靜态顯示、錄制等多種功能,并且可以通過指令行參數來控制播放器的行為。
● ffprobe:
Simple multimedia streams analyzer
簡單多媒體流分析器。ffprobe是一個簡單的多媒體流分析器,可以擷取音視訊檔案的中繼資料資訊以及編解碼器相關資訊。它可以輸出多種格式的資訊,包括JSON、XML和CSV等格式。ffprobe還可以通過指令行參數來控制輸出的詳細程度和格式。
以上三個工具都是FFmpeg架構中的一部分,但它們的功能和用途不同。ffmpeg主要是用于音視訊編碼和轉換,ffplay則是用于媒體播放,而ffprobe則是用于多媒體流分析。
## ffmpeg指令檢視幫助文檔
通過FFmpeg指令行可以進行音視訊處理等操作,但對于不熟悉指令行的使用者來說,常常需要檢視幫助文檔以了解指令的使用方法和參數選項。
以下是檢視幫助文檔的幾種方式:
1.基本資訊:輸入ffmpeg -h指令即可檢視基本的幫助資訊。這些資訊包括常用的指令、選項和參數等。
2.進階資訊:輸入ffmpeg -h long指令可以檢視更加詳細的幫助資訊,包括各種輸入輸出格式、編碼器、濾鏡等的詳細說明。
3.所有資訊:輸入ffmpeg -h full指令可以檢視所有的幫助資訊,包括指令、選項、參數以及各種輸入輸出格式、編碼器、濾鏡等的詳細說明。
4.輸出到檔案:如果希望将幫助文檔儲存到檔案中,可以輸入ffmpeg -h full > ffmpeg_h_full.log指令,将輸出結果重定向到一個檔案中。然後再打開該檔案即可檢視完整的幫助文檔。
無論采用哪種方式,都可以通過usage:行了解FFmpeg指令的基本使用方法。
usage:
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
## ffplay指令檢視幫助文檔
所有資訊:ffplay -h
usage:
ffplay [options] input_file
## ffprobe指令檢視幫助文檔
所有資訊:ffprobe -h
usage:
ffprobe [OPTIONS] [INPUT_FILE]
ffmpeg/ffplay/ffprobe部分參數通用,部分參數不通用,在使用時需要注意。
# 03-ffmpeg音視訊處理流程
先看兩條指令
ffmpeg -i test_1920x1080.mp4 -acodeccopy -vcodeclibx264 -s 1280x720test_1280x720.flv
ffmpeg -i test_1920x1080.mp4 -acodeccopy -vcodeclibx265 -s1280x720test_1280x720.mkv
該指令的具體含義如下:
1.-i選項:指定輸入檔案名。
2.-acodeccopy選項:表示複制音頻流而不進行重新編碼。
3.-vcodeclibx264選項:表示使用libx264編碼器進行視訊編碼。
4.-vcodeclibx265選項:表示使用libx265編碼器進行視訊編碼。
5.-s選項:指定輸出視訊的分辨率大小。
6.test_1280x720.flv和test_1280x720.mkv:指定輸出檔案名和格式。
在執行轉碼過程中,FFmpeg會按照以下流程進行音視訊處理:
1.解封裝:将輸入檔案(test_1920x1080.mp4)解封裝為音頻流和視訊流。
2.解碼:分别對音頻流和視訊流進行解碼,得到原始的音頻幀和視訊幀資料。
3.編碼:使用指定的編碼器(libx264或libx265)對視訊幀進行重新編碼,以達到需求的分辨率和壓縮品質要求。音頻直接複制。
4.封裝:将編碼後的音頻流和視訊流重新封裝為FLV或MKV等格式,并寫入輸出檔案(test_1280x720.flv或test_1280x720.mkv)中。
總之,FFmpeg的音視訊處理流程包括解封裝、解碼、編碼和封裝等多個步驟,其中編碼步驟也是性能消耗最大的環節。業務場景下需要根據實際情況選擇合适的音視訊編碼格式,以達到最佳的音視訊品質和轉碼效果。
# 04-ffmpeg指令分類查詢
## ffmpeg指令分類查詢
## ffmpeg -version 顯示版本
要檢視FFmpeg的版本資訊,可以在指令行視窗中輸入ffmpeg -version指令。執行指令後,程式将輸出目前安裝的FFmpeg的版本資訊。
通過檢視版本資訊,可以了解目前安裝的FFmpeg版本号、編譯日期、編譯器類型和支援的音視訊格式等詳細資訊,進而确定目前的FFmpeg環境是否搭建成功或者是否需要進行更新等操作。
## ffmpeg -buildconf 顯示編譯配置
要檢視FFmpeg的編譯配置資訊,可以在指令行視窗中輸入ffmpeg -buildconf指令。執行指令後,程式将輸出目前安裝的FFmpeg的編譯配置資訊。
通過檢視編譯配置資訊,可以了解目前安裝的FFmpeg的編譯選項、支援的外部庫和平台相關資訊等詳細資訊。
## ffmpeg -formats 顯示可用格式(muxers+demuxers)
要檢視FFmpeg支援的音視訊格式,可以在指令行視窗中輸入ffmpeg -formats指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的音視訊格式,包括可用的muxers和demuxers。
## ffmpeg -muxers 顯示可用複用器
要檢視FFmpeg支援的複用器(也稱為muxers),可以在指令行視窗中輸入ffmpeg -muxers指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的複用器清單。
通過檢視複用器清單,可以了解目前安裝的FFmpeg支援哪些複用器以及它們的用途和參數選項等詳細資訊。同時,也可以根據需要選擇合适的複用器進行封裝操作。
## ffmpeg -demuxers 顯示可用解複用器
要檢視FFmpeg支援的解複用器(也稱為demuxers),可以在指令行視窗中輸入ffmpeg -demuxers指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的解複用器清單。
通過檢視解複用器清單,可以了解目前安裝的FFmpeg支援哪些解複用器以及它們的用途和參數選項等詳細資訊。同時,也可以根據需要選擇合适的解複用器進行分離操作。
## ffmpeg -devices 顯示可用音視訊裝置
要檢視FFmpeg支援的音視訊裝置,可以在指令行視窗中輸入ffmpeg -devices指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的音視訊裝置清單。
通過檢視音視訊裝置清單,可以了解目前安裝的FFmpeg支援哪些音視訊裝置以及它們的用途和參數選項等詳細資訊。同時,也可以根據需要選擇合适的音視訊裝置進行音視訊捕獲和播放操作,以達到最佳的音視訊品質和使用者體驗。
## ffmpeg -codecs 顯示可用編解碼器(decoders+encoders)
要檢視FFmpeg支援的編解碼器(包括解碼器和編碼器),可以在指令行視窗中輸入ffmpeg -codecs指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的編解碼器清單。
通過檢視編解碼器清單,可以了解目前安裝的FFmpeg支援哪些音視訊編解碼器以及它們的用途和參數選項等詳細資訊。同時,也可以根據需要選擇合适的編解碼器進行音視訊轉換和處理操作,以達到最佳的音視訊品質和轉碼效果。
## ffmpeg -decoders 顯示可用解碼器
要檢視FFmpeg支援的解碼器,可以在指令行視窗中輸入ffmpeg -decoders指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的解碼器清單。
通過檢視解碼器清單,可以了解目前安裝的FFmpeg支援哪些音視訊解碼器以及它們的用途和參數選項等詳細資訊。同時,也可以根據需要選擇合适的解碼器進行音視訊解碼操作。
## ffmpeg -encoders 顯示可用編碼器
要檢視FFmpeg支援的編碼器,可以在指令行視窗中輸入ffmpeg -encoders指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的編碼器清單。
通過檢視編碼器清單,可以了解目前安裝的FFmpeg支援哪些音視訊編碼器以及它們的用途和參數選項等詳細資訊。同時,也可以根據需要選擇合适的編碼器進行音視訊編碼操作。
## ffmpeg -bsfs 顯示可用比特流filter
要檢視FFmpeg支援的比特流filter(也稱為bsfs),可以在指令行視窗中輸入ffmpeg -bsfs指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的比特流filter清單。
通過檢視比特流filter清單,可以了解目前安裝的FFmpeg支援哪些比特流filter以及它們的用途和參數選項等詳細資訊。同時,也可以根據需要選擇合适的比特流filter進行音視訊轉換和處理操作。
## ffmpeg -protocols 顯示可用的協定
要檢視FFmpeg支援的協定,可以在指令行視窗中輸入ffmpeg -protocols指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的協定清單。
通過檢視協定清單,可以了解目前安裝的FFmpeg支援哪些協定以及它們的用途和參數選項等詳細資訊。同時,也可以根據需要選擇合适的協定進行音視訊傳輸和處理操作。
## ffmpeg -filters 顯示可用的過濾器
要檢視FFmpeg支援的過濾器,可以在指令行視窗中輸入ffmpeg -filters指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的過濾器清單。
通過檢視過濾器清單,可以了解目前安裝的FFmpeg支援哪些音視訊過濾器以及它們的用途和參數選項等詳細資訊。同時,也可以根據需要選擇合适的過濾器進行音視訊轉換和處理操作。
## ffmpeg -pix_fmts 顯示可用的像素格式
要檢視FFmpeg支援的像素格式,可以在指令行視窗中輸入ffmpeg -pix_fmts指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的像素格式清單。
通過檢視像素格式清單,可以了解目前安裝的FFmpeg支援哪些像素格式以及它們的用途和參數選項等詳細資訊。同時,也可以根據需要選擇合适的像素格式進行音視訊轉換和處理操作。
## ffmpeg -layouts 顯示标準聲道名稱
要檢視FFmpeg支援的标準聲道名稱,可以在指令行視窗中輸入ffmpeg -layouts指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的标準聲道名稱清單。
通過檢視标準聲道名稱清單,可以了解目前安裝的FFmpeg支援哪些常見的聲道配置以及它們的命名規則和參數選項等詳細資訊。同時,也可以根據需要選擇合适的聲道配置進行音頻處理和轉碼操作。
## ffmpeg -sample_fmts 顯示可用的音頻采樣格式
要檢視FFmpeg支援的音頻采樣格式,可以在指令行視窗中輸入ffmpeg -sample_fmts指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的音頻采樣格式清單。
通過檢視音頻采樣格式清單,可以了解目前安裝的FFmpeg支援哪些常見的音頻采樣格式以及它們的命名規則和參數選項等詳細資訊。同時,也可以根據需要選擇合适的音頻采樣格式進行音頻處理和轉碼操作。
為什麼在ffplay播放PCM的時候需要-f f32le這種模式而不是-f flt呢?比如
ffplay -ar 48000 -ac 2 -f f32le believe.pcm
是因為此時實際-f對應的是decoder,這裡解PCM則對應pcmdec.c(ffmpeg-4.2.1\libavformat)的PCM解碼器,這裡的PCM decoder實際隻是按照大小端、浮點還是整數、占用的bit數等參數來做解析。比如-f f32le對應為:
PCMDEF(f32le, "PCM 32-bit floating-point little-endian", NULL, AV_CODEC_ID_PCM_F32LE)
AV_CODEC_ID_PCM_F32LE屬于CODEC ID。
在使用ffplay播放PCM音頻時,需要指定正确的-f參數來對音頻進行解碼。例如,指令ffplay -ar 48000 -ac 2 -f f32le believe.pcm中的-f f32le表示将信号解碼為32位浮點格式的小端位元組序。
這是因為PCM音頻并不包含檔案頭等中繼資料資訊,在沒有其他資訊的情況下,FFmpeg無法正确地猜測采樣率、聲道數和采樣格式等參數,需要手動指定。同時,實際所指定的-f參數對應的是解碼器,即在此處使用的PCM解碼器(pcmdec.c),而該解碼器隻根據指定的參數解析原始音頻資料。
是以,如果音頻資料的采樣格式與所指定的參數不比對,将會導緻解碼失敗或者産生噪聲等問題。在選擇參數時,需要了解音頻資料的具體采樣格式和編碼方式,并根據需要選擇合适的解碼器和參數選項。
## ffmpeg -colors 顯示可用的顔色名稱
要檢視FFmpeg支援的顔色名稱,可以在指令行視窗中輸入ffmpeg -colors指令。執行指令後,程式将輸出目前安裝的FFmpeg支援的顔色名稱清單。
通過檢視顔色名稱清單,可以了解目前安裝的FFmpeg支援哪些常用的顔色名稱以及它們的命名規則和參數選項等詳細資訊。同時,也可以根據需要選擇合适的顔色進行視訊處理和轉碼操作,以達到最佳的視訊品質和效果。
## 檢視具體分類所支援的參數
文法:ffmepg -h type=name
比如:
● ffmpeg -h muxer=flv
● ffmpeg -h filter=atempo (atempo調整音頻播放速率)
● ffmpeg -h encoder=libx264
通過檢視特定分類下的參數清單,可以了解目前安裝的FFmpeg支援哪些常見的參數選項以及它們的用途和使用方法等詳細資訊。同時,也可以根據需要選擇合适的參數進行音視訊處理和轉碼操作。
# 05-ffplay播放控制
# 06-ffplay指令選項
## ffplay指令-主要選項
## ffplay指令-進階選項
## 更多參考
http://www.ffmpeg.org/ffplay.html