1.簡介
ffmpeg的簡介就不多說了,照搬常見介紹:
引用wiki百科的解析.
FFmpeg是一個自由軟件,可以運行音頻和視頻多種格式的錄影、轉換、流功能1,包含了libavcodec ─這是一個用於多個項目中音頻和視頻的解碼器庫,以及libavformat——一個音頻與視頻格式轉換庫。
ffmpeg
的官網地址是:https://www.ffmpeg.org/ffmpeg
的Github項目地址是:https://github.com/FFmpeg/FFmpeg
2.ffmpeg下載
直接到ffmpeg官網下載和自己電腦系統相對應的版本即可。命令行使用時,定位到ffmpeg的目錄或將bin目錄配置在環境變量中。
3.ffmpeg基本命令使用
3.1轉化
將mp4文件轉化爲flv格式的文件
轉化前:
使用命令:ffmpeg -i 1.mp4 2.flv
ffmpeg -i 原視頻路徑 轉化名稱.格式
轉化後:記得命令加上輸出路徑
指定尺寸命令:ffmpeg -i input.mp4 -s 640x360 output.mp4
截取特定時間段的視頻:ffmpeg -i input.mp4 -ss 5 -t 10 output.mp4 爲從5秒開始截最多截取10秒 也就是截取5秒到15秒的數據
上述命令也可以爲
ffmpeg -ss 5 -i input.mp4 -t 10 -c:v copy -c:a copy output.mp4
上面的命令把-ss 5放到-i前面,與原來的區別是,這樣會先跳轉到第5秒在開始解碼輸入視頻,而原來的會從開始解碼,只是丟棄掉前5秒的結果。 而-c:v copy -c:a copy標示視頻與音頻的編碼不發生改變,而是直接複製,這樣會大大提升速度,因爲這樣就不需要完全解碼視頻(視頻剪切也不需要完全解碼)。
ffmpeg可以把一組圖片轉換成一個視頻(可以把gif動畫也當成一種視頻格式),反之亦可。命令如下
ffmpeg -i %04d.jpg output.mp4
ffmpeg -i input.mp4 %04d.jpg
第一行命令是把0001.jpg、0002.jpg、0003.jpg等編碼成output.mp4,第二行則是相反把input.mp4變成0001.jpg……。 %04d.jpg表示從1開始用0補全的4位整數爲文件名的jpg文件序列。 如果想要序列文件名爲hello_00001.png等等的話,就是hello_%05d.png
如果編碼視頻的時候還想加入聲音,則如下這般添加一個輸入文件:
ffmpeg -i input.mp3 -i %04d.jpg output.mp4
改變視頻FPS
FFmpeg可以用於降低或提高視頻的幀率,因爲信息丟失不可逆法則,提高幀率只會簡單地讓某些幀的畫面多重複一次或多次,所以提高幀率不會提高畫質。
ffmpeg -i input.mp4 -r 30 output.mp4
上面的命令,不論原始視頻幀率是多少,輸出視頻都會是30幀每秒。這種情況之下視頻的時間軸不會變化,不會有慢動作或快動作的效果。
ffmpeg -r 30 -i input.mp4 output.mp4
上面這種條換順序之後的寫法比較有意思,-r 30放在輸入文件之前表示影響的時輸入文件,而非輸出文件。 這樣的命令表達的是,把輸入文件當做30幀每秒,而忽略它的原始幀率。這樣如果原來的視頻FPS是25,被視作30之後,輸出的視頻會有快進的效果。 這個命令沒有指定輸出視頻的FPS,默認會與輸入文件保持一樣,可以與本節第一個命令和在一起,寫兩個-r參數,第一個指定輸入FPS,第二個指定 輸出FPS即可既控制播放速度,又控制輸出幀率。
H264視頻首尾拼接
如果確定輸入文件都是H264編碼,且尺寸、幀率等都相同,先把源視頻轉換成用於直播的ts格式。 然後直接對多個ts文件進行文件級的拼接,然後在轉換回到目標格式。這個過程中,不會發生格式轉換,所以非常迅速。
ffmpeg -i q.mp4 -c copy -bsf h264_mp4toannexb q.ts
ffmpeg -i r.mp4 -c copy -bsf h264_mp4toannexb r.ts
ffmpeg -i "concat:q.ts|r.ts" -c copy -bsf aac_adtstoasc qr.mp4
音頻篇
以下命令主要用於音頻操作。有許多上面已經給出的視頻操作,比如格式轉換,剪切等也可適用於音頻。大部分視頻也都包含音頻,所以下面的命令 往往可以與視頻命令混合適用。
提取音樂中的封面圖片
有些音樂文件包含專輯封面圖片在裏面,可以用如下命令簡單取出。命令從字面意義來講,就是把MP3格式轉換成JPEG格式了。
ffmpeg -i input.mp3 cover.jpg
音樂有損壓縮
在某些場合下,比如在給網站做背景音樂,或音樂網站提供預覽版音樂時,會選擇以犧牲音頻質量爲代價降低文件大小,讓網絡播放更順暢。 一個典型的壓縮命令如下:
ffmpeg -i input.mp3 -ac 1 -ar 32k -bit_rate:a 128k output.mp3
3.2播放
ffplay test.avi