第二篇:FFmpeg基本指令

02.簡介,上手(FFmpeg FFprobe FFplay)
(1)查看ffmpeg的幫助說明,提供的指令
ffmpeg -h
(2)播放媒體的指令
ffplay video.mp4
ffplay music.mp3
(3)常用快捷鍵
按鍵"Q"或"Esc":退出媒體播放
鍵盤方向鍵:媒體播放的前進後退
點擊鼠標右鍵:拖動到該播放位置
按鍵"F":全屏
按鍵"P"或空格鍵:暫停
按鍵"W":切換顯示模式
(4)查看媒體參數信息
ffprobe video.mp4

03.轉換格式(文件格式,封裝格式)
(1)文件名可以是中英文,但不能有空格。
(2)轉換格式
ffmpeg -i video.mp4 video_avi.avi

04.改變編碼 上(編碼,音頻轉碼)
(1)查看編解碼器
ffmpeg -codecs
(2)網站常用編碼
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:設置音頻的比特率。若不輸入,默認128K
ac: aduio channels 音頻聲道
2:聲道數。若不輸入,默認採用源音頻的聲道數

概括:設置格式的基本套路-先是指名屬性,然後跟着新的屬性值

查看結果屬性
ffprobe music_flac_mp3.mp3

05.改變編碼 中(視頻壓制)
(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,視頻編碼解碼器
-preset medium: 編碼器預設。參數: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-恆定速率因子模式。範圍051,默認23。數值越小,畫質越高。一般在828做出選擇。
-r 30 :設置視頻幀率
-acodec aac :audio Coder Decoder-音頻編碼解碼器
-b:a 128k :音頻比特率.大多數網站限制音頻比特率128k,129k
其他參考上一個教程

06.改變編碼 下(碼率控制模式)
ffmpeg支持的碼率控制模式:-qp -crf -b
(1)
-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 :constant rate factor,恆定速率因子模式
(3)
-b :bitrate,固定目標碼率模式。一般不建議使用

3種模式默認單遍編碼

VBR(Variable Bit Rate/動態比特率) 例子
ffmpeg -i input -vcodec libx264 -preset veryslow output
ABR(Average Bit Rate/平均比特率) 例子
ffmpeg -i input -vcodec libx264 -preset veryslow -b:v 3000k output
CBR(Constant Bit Rate/恆定比特率) 例子
… -b:v 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k …

07.合併,提取音視頻
(1)單獨提取視頻(不含音頻流)
ffmpeg -i video.mp4 -vcodec copy -an video_silent.mp4
(2)單獨提取音頻(不含視頻流)
ffmpeg -i video.mp4 -vn -acodec copy video_novideo.m4a

具備多個音頻流的,如
Stream #0:2[0x81]:Audio:ac3,48000Hz,5.1,s16,384kb/s
Stream #0:3[0x82]:Audio:ac3,48000Hz,5.1,s16,384kb/s
Stream #0:4[0x80]:Audio:ac3,48000Hz,5.1,s16,448kb/s

針對性的單一的提取,例如提取第2條,用指令: -map 0:3
(3)合併音視頻
ffmpeg -i video_novideo.m4a -i video_silent.mp4 -c copy video_merge.mp4

08.截取,連接音視頻
(1)截取
ffmpeg -i music.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 : 從媒體末尾開始截取

ffmpeg -i in.mp4 -ss 00:01:00 -to 00:01:10 -c copy out.mp4
ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -c copy out.mp4
ffmpeg -ss 00:01:00 -i in.mp4 -to 00:01:10 -c copy -copyts out.mp4

把-ss放到-i之前,啓用了關鍵幀技術,加速操作。但截取的時間段不一定準確。可用最後一條指令,保留時間戳,保證時間準確。
(2)連接音視頻
ffmpeg -i “concat:01.mp4|02.mp4|03.mp4” -c copy out.mp4

不同格式的音視頻可以連接在一起,但不推薦不同格式連接在一起。
建議使用Avidemux軟件連接

09.截圖,水印,動圖
(1)截圖.
截取第7秒第1幀的畫面
ffmpeg -i video.mp4 -ss 7 -vframes 1 video_image.jpg
(2)水印
ffmpeg -i video.mp4 -i qt.png -filter_complex “overlay=20:80” video_watermark.mp4
(3)截取動圖
ffmpeg -i video.mp4 -ss 7.5 -to 8.5 -s 640x320 -r 15 video_gif.gif

10.錄屏,直播
(1)錄屏
windows: ffmpeg -f gdigrab -i desktop rec.mp4
ubuntu: sudo ffmpeg -f fbdev -framerate 10 -i /dev/fb0 rec.mp4

gdigrab :ffmpeg中的一個組件。
只捕獲視頻.若要錄屏,錄音,獲取攝像頭,麥克風,換組件,用OBS Studio軟件

(2)直播
ffmpeg -re i rec.mp4 按照網站要求編碼 -f flv “你的rtmp地址/你的直播碼”

官方教程
http://ffmpeg.org/ffmpeg-all.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章