win10系統ffmpeg命令初體驗
1.1 官網下載地址:
http://www.ffmpeg.org/download.html
1.2 選擇系統對應的壓縮包下載
(我這裡是用window系統測試)
點選跳轉後頁面如下,根據操作下載
1.3 配置環境變數
① 把壓縮包解壓到指定的目錄下
② 把檔名改為ffmpeg
③ 開啟ffmpeg複製bin目錄之前的路徑,把路徑配置到系統環境變數path下
④ 儲存配置,開啟cmd命令視窗輸入:ffmpeg -version
輸入命令點選回車之後輸出內容如下,則下載配置成功,否則請檢查前面的步驟是否有錯誤
二.ffmpeg中的檔案瞭解
2.1 ffmpeg\bin
中的三個命令列程式(這裡一般存放可執行程式):
ffmpeg.exe: 用於操作,轉換和流式傳輸多媒體內容
ffplay.exe:一個簡潔的播放器
ffprobe.exe: 媒體引數分析工具
2.2 ffmpeg\doc
大量的離線文件,英文
2.3 ffmpeg\presets
存放一些預設
2.4 LICENSE.txt
版權許可
2.5 README.txt
宣告檔案
三 命令除錯
(1) 檢視ffmpeg的幫助說明,提供的指令
-
ffmpeg -h
(2) 播放媒體的指令
-
ffplay video.mp4
-
ffplay music.mp3
(3)常用快捷鍵
按鍵"Q"或"Esc":退出媒體播放鍵盤方向鍵:媒體播放的前進後退點選滑鼠右鍵:拖動到該播放位置按鍵"F":全屏按鍵"P"或空格鍵:暫停按鍵"W":切換顯示模式
(cls清空指令頁面)
(4)檢視媒體引數資訊
-
ffprobe video.mp4
四.轉換格式(檔案格式,封裝格式)
(1)檔名可以是中英文,但不能有空格。
(2)轉換格式:
mp4轉avi:ffmpeg -i video.mp4 video_avi.avi
flv轉mp4:FFmpeg -i .\3420001320000167_30000120000001.flv a.mp4
ffmpeg把m3u8的視訊下載到本地(如果是直播流,需要中斷ffmpeg下載之後才可以播放): ffmpeg -i http://139.9.63.35:10000/sms/34020000002020000001/hls/34020000001320000462_34020000001320000001/34020000001320000462_34020000001320000001_live.m3u8 o3.mp4
注意:目前沒有找到邊下載邊播放的辦法
五.改變編碼 上(編碼,音訊轉碼)
(1)檢視編解碼器
-
ffmpeg -codecs
(2)網站常用編碼(1080p以下)
MP4封裝:H264視訊編碼+ACC音訊編碼(常用)WebM封裝:VP8視訊編碼+Vorbis音訊編碼(谷歌的方案,軟硬體支援程度不高,為了避開專利糾紛而設計的)OGG封裝:Theora視訊編碼+Vorbis音訊編碼(完全開源的編碼方案,無專利困擾)
(3)無損編碼格式.flac轉換編碼
ffmpeg -i music_flac.flac -acodec libmp3lame -ar 44100 -ab 320k -ac 2 music_flac_mp3.mp3說明:acodec:audio Coder Decoder 音訊編碼解碼器libmp3lame:mp3解碼器ar:audio rate:音訊取樣率44100:設定音訊的取樣率44100。若不輸入,預設用原音訊的取樣率ab:audio bit rate 音訊位元率320k:設定音訊的位元率。若不輸入,預設128Kac: aduio channels 音訊聲道,2:聲道數。若不輸入,預設採用源音訊的聲道數
概括:設定格式的基本套路-先是指名屬性,然後跟著新的屬性值
檢視結果屬性ffprobe music_flac_mp3.mp3
六.改變編碼 中(視訊壓制)
(1)視訊轉碼
ffmpeg -i video.mp4 -s 1920x1080 -pix_fmt yuv420p -vcodec libx264 -preset medium -profile:v high -level:v 4.1 -crf 23 -acodec aac -ar 44100 -ac 2 -b:a 128k video_avi.avi說明:-s 1920x1080:縮放視訊新尺寸(size)-pix_fmt yuv420p:pixel format,用來設定視訊顏色空間。引數查詢:ffmpeg -pix_fmts-vcodec libx264:video Coder Decoder,視訊編碼解碼器 ,libx264是H264的軟體編碼器-preset medium: 編碼器預設。改變編碼演算法的精度,精度越高,編碼速度越慢,cpu佔用率越多,
10個可選引數:ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo
-profile:v high :編碼器配置,與壓縮比有關。實時通訊-baseline,流媒體-main,超清視訊-high-level:v 4.1 :對編碼器設定的具體規範和限制,權衡壓縮比和畫質。-crf 23 :設定位元速率控制模式。constant rate factor-恆定速率因子模式。範圍0~51,預設23。數值越小,畫質越高。一般在8~28做出選擇。-r 30 :設定視訊幀率-acodec aac :audio Coder Decoder-音訊編碼解碼器-b:a 128k :音訊位元率.大多數網站限制音訊位元率128k,129k其他參考上一個教程
七.改變編碼 下(位元速率控制模式)
ffmpeg支援的位元速率控制模式:-qp -crf -b
(1).qp
-qp :constant quantizer,恆定量化器模式無失真壓縮的例子(快速編碼)ffmpeg -i input -vcodec libx264 -preset ultrafast -qp 0 output.mkv無失真壓縮的例子(高壓縮比)ffmpeg -i input -vcodec libx264 -preset veryslow -qp 0 output.mkv
(2).crf(浮動的qp模式)
-crf :constant rate factor,恆定速率因子模式,常用
(3).b
-b :bitrate,固定目標位元速率模式。一般不建議使用
3種模式預設單遍編碼
VBR(Variable Bit Rate/動態位元率) 例子ffmpeg -i input -vcodec libx264 -preset veryslow outputABR(Average Bit Rate/平均位元率) 例子ffmpeg -i input -vcodec libx264 -preset veryslow -b:v 3000k outputCBR(Constant Bit Rate/恆定位元率) 例子... -b:v 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k ...
八.合併,提取音視訊
(1)單獨提取視訊(不含音訊流,實際是將音訊剔除)
ffmpeg -i Av36.mp4 -vcodec copy -an video_silent.mp4
(2)單獨提取音訊(不含視訊流)
ffmpeg -i Av36.mp4 -vn -acodec copy video_novideo.m4a
(3)具備多個音訊流的,如
Stream #0:2[0x81]:Audio:ac3,48000Hz,5.1,s16,384kb/sStream #0:3[0x82]:Audio:ac3,48000Hz,5.1,s16,384kb/sStream #0:4[0x80]:Audio:ac3,48000Hz,5.1,s16,448kb/s
針對性的單一的提取,例如提取第2條,用指令: -map 0:3
(4)合併音視訊
ffmpeg -i 修仙.mp3 -i video_silent.mp4 -c copy video_merge.mp4
九.擷取,連線音視訊
(1)擷取
從前往後擷取90秒: ffmpeg -i 修仙.mp3 -ss 00:00:30 -to 00:02:00 -acodec copy music_cutout.mp3擷取60秒:ffmpeg -i music.mp3 -ss 00:00:30 -t 60 -acodec copy music_cutout60s.mp3
-sseof : 從媒體末尾開始擷取
fmpeg -i in.mp4 -ss 00:01:00 -to 00:01:10 -c copy out.mp4ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -c copy out.mp4ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -c copy -copyts out.mp4
把-ss放到-i之前,啟用了關鍵幀技術,加速操作。但擷取的時間段不一定準確。可用最後一條指令,保留時間戳,保證時間準確。
(2)連線音視訊
ffmpeg -i "concat:a.mp3|修仙.mp3" -c copy out.mp4
不同格式的音視訊可以連線在一起,但不推薦不同格式連線在一起。建議使用Avidemux軟體連線(開源免費,簡單)
十.截圖,水印,動圖
(1)截圖.
擷取第7秒第1幀的畫面
ffmpeg -i Av36.mp4 -ss 7 -vframes 1 video_image.jpg
(2)水印
ffmpeg -i Av36.mp4 -i logo.png -filter_complex "overlay=20:80" video_watermark.mp4
(3)擷取動圖
ffmpeg -i Av36.mp4 -ss 7.5 -to 8.5 -s 640x320 -r 15 video_gif.gif
十一.錄屏,直播
(1)錄屏
windows命令: ffmpeg -f gdigrab -i desktop rec.mpg //MP4格式無法播放
ubuntu命令: sudo ffmpeg -f fbdev -framerate 10 -i /dev/fb0 rec.mp4
gdigrab :ffmpeg中的一個元件。只捕獲視訊.若要錄屏,錄音,獲取攝像頭,麥克風,換元件,推薦使用用OBS Studio軟體(開源,免費,穩定)
(2)直播
ffmpeg -re i rec.mpg 按照網站要求編碼 -f flv "你的rtmp地址/你的直播碼"
將rtmp流,以檔案的形勢儲存到本地
ffmpeg -i "rtmp://139.9.63.35:11935/hls/34020000001110000400_34020000001320000001" -acodec copy -vcodec copy -f flv -y D:\Software\blibli\Download\RTMPtest2test.flv
官方教程