1. 程式人生 > 實用技巧 >win10系統ffmpeg命令初體驗

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

官方教程

http://ffmpeg.org/ffmpeg-all.html