也許能用得上的FFmpeg常用命令
這幾天悶著研究了幾天的FFmpeg其實還有Aegisub和vs但這邊兩個也只能說是淺嘗輒止,想著發(fā)個綜合的總結(jié)文章,就當是學習成果的筆記了
但其實都是些比較常用的視頻處理命令,再復雜一些的ffmpeg命令我也不會而且還是直接上Pr吧好吧就是因為不想開Pr才會研究這些
我也是外行,可能會有用詞不準確等地方,而且講的都是些很基礎(chǔ)的命令,有問題歡迎評論區(qū)指教
首先還是
環(huán)境問題都用ffmpeg了還要問環(huán)境問題嗎
首先必然是要把ffmpeg目錄添加到環(huán)境變量的Path里?基本操作 不懂先百度
我用的是windows terminal開命令提示符不是Powershell真是很抱歉,進設(shè)置把默認的啟動目錄改成了桌面。這么做的理由是桌面僅僅是作為一個臨時的文件夾,后來處理結(jié)束的視頻項目都會被我歸類到存儲文件夾里,簡單總結(jié)來說就是整理起來很方便。
一圖流(用于廣播)
如果不加-x264opts "keyint=24:min-keyint=24:no-scenecut" 這段代碼的話,很有可能出現(xiàn)關(guān)鍵幀問題,類似于你點到了00:05這個位置但關(guān)鍵幀是在00:04所以跳去了00:04這個時間上,無論是本地播放還是打軸都會有影響,但上傳后經(jīng)過服務(wù)器轉(zhuǎn)碼應(yīng)該就沒有這個問題
-tune stillimage 靜止圖像
如果是本地視頻沒什么需要改的,但是有上述關(guān)鍵幀問題的話,可以用這條命令解決:
復制視頻流和音頻流,不經(jīng)過二次轉(zhuǎn)碼,畫面沒有損失,速度快
一開始我是用小丸和quickcut來做一圖流,但都有一些兼容性問題,只好自己研究下
可以通過crf這個命令自行修改畫質(zhì)?額 該不會我還要在這里介紹crf是什么吧?
簡單點來說crf這個數(shù)值越大畫質(zhì)越差,越小畫質(zhì)越好,但都一圖流了,畫質(zhì)隨便你了.jpg
將第一個視頻的畫面和第二個視頻的音頻合并(用于文化放送之類的低畫質(zhì)畫面廣播)
將一個視頻內(nèi)的第一個音軌和第二個音軌混流(用于鵝鵝鴨or其他游戲)
因為我的個人習慣是OBS把自己的錄音和游戲聲音放在兩個音軌里?因為一旦錄音這邊出了什么突發(fā)狀況我可以后期把它剪掉?
有的時候會需要把鵝鵝鴨的錄像發(fā)給群友,但視頻太大不方便,這里可以同時把視頻變成720p外加混流兩條音軌,在同一條命令里解決:
繼續(xù)延伸一下 有的時候你不需要整個視頻全發(fā)出去 要剪切一下的
按秒剪切+合并音軌+縮放成720p+改幀率
按秒剪切這個只能簡單地剪切一下,有的時候你得準確到關(guān)鍵幀,但ffmpeg的準確到關(guān)鍵幀剪切這個我研究了一下沒研究出來,一直在報錯,干脆用的losslesscut的GUI
地址:https://github.com/mifi/lossless-cut
這玩意兒支持導入potplayer的章節(jié)文件,我有的時候直接potplayer打好位置然后把.pbf章節(jié)文件直接導入進來首先你得去potplayer設(shè)置里把章節(jié)文件設(shè)置成保存在視頻文件旁邊,選好內(nèi)容導出完事
這玩意兒還支持把多余的音軌給去掉,就是不支持混流,不過夠用了。
合并音視頻(用于扒流orVS混流)最基礎(chǔ)的一條
順便說一句 -y的意思是默認覆蓋 -hide_banner的意思是省略開頭一長串的內(nèi)容
壓硬字幕(字幕文件要放在運行目錄下不然會報錯 我也不知道為什么)
-b:v 8000k 設(shè)置碼率,這個設(shè)定和crf沖突,兩邊只能選一個
碼率是8000k 1080p下這個畫質(zhì)基本已經(jīng)很好看了
-c:v 后面跟的是編碼器,可以輸入ffmpeg -encoders來查詢受支持的編碼器,可以根據(jù)喜好換成libx264、h264_nvenc、libx265、hevc_nvenc之類的
如果追求壓制速度,當然前提你是n卡可以無腦
當然出來的畫質(zhì)也就十分感人了
-preset 是壓制速度預設(shè) 一般選slow
放大到1080p(用于處理文化放送之類的感人畫質(zhì)廣播)字幕是1080p的就行了
可以自選加一下編碼器、碼率、壓制預設(shè)等設(shè)定
縮小到720p(用于處理上傳大小限制)比如QQ群啥的你只是想分享一下好看的視頻當然不需要那么大對不對
可以自選加一下編碼器、碼率、壓制預設(shè)等設(shè)定
然后就是偶爾要加入的說明性圖片,這個如果要加的有點多處理起來麻煩那還是干脆Pr吧
真的不想開Pr真的不想開Pr真的不想開Pr真的不想開Pr真的不想開Pr
插入1280*720大小的圖片 放在x=0 y=0的位置 時間從第240秒到第327秒
這個是按秒加入圖片的,如果需要更準確一點,按幀加入圖片的話:
圖片縮放至400:300 放在x=100 y=150的位置 時間從第11幀到第21幀
再發(fā)散思維一下,如果我要加入多個圖片怎么辦
首先-filter_complex這個命令后面的內(nèi)容,不同的命令可以通過分號「;」來分隔開來
通過這種方式我們可以在-filter_complex后的命令里同時完成多個目的
然后簡單介紹一下,[1:v]代表第二個輸入內(nèi)容的畫面部分,[0:a]代表第一個輸入內(nèi)容的所有音頻部分
[0:0]代表第一個輸入文件的第一個軌道一般是畫面本體,[0:1]代表第一個輸入文件的第二個軌道一般是音頻軌道,[0:2]代表第一個輸入文件的第三個軌道一般還是音頻軌道,以此類推
所以"[1:v]scale=400:300[ovrl], [0:v][ovrl]overlay=100:150:enable='between(n,11,21)'"這段的意思是,第二個輸入圖片改變?yōu)?strong>400*300的大小,并且把改變后的圖片自定義命名[ovrl],把[0:v]和[ovrl]混流合并 位置是x=100 y=150 持續(xù)時間按幀計數(shù)?從第11幀到第21幀
這么一來的話,加入兩個圖片就是
解釋一下就是第一個圖片拉伸到400:300 放在x=100 y=150的位置?時間從第11幀到第21幀,第二個圖片500:200 放在x=200?y=220的位置?時間從第70幀到第90幀
但這是嵌套的,臨時想出來,也許有更好的寫法吧。開Pr啦(低語)
插入gif好像要設(shè)定一下給透明通道,但我到現(xiàn)在還沒試過加gif,先不管了
可以自選加一下編碼器、碼率、壓制預設(shè)等設(shè)定
有的時候你臨時用整個桌面錄制的視頻,但是實際上你只需要這個桌面的一部分畫面 該怎么辦呢
1920*1080大小的視頻 以左上角為原點 x=10 y=20的位置 截取250*300大小的畫面
在這之前可以先用截圖工具定位一下,比如snipaste
-vf crop=w:h:x:y?
w h是裁切后的視頻的大小 x y是原視頻左上角的起點
可以自選加一下編碼器、碼率、壓制預設(shè)等設(shè)定
最后
-vn 不處理視頻
-sn 不處理字幕
-an 不處理音頻
簡單點寫一下?
提取音頻
好像大部分視頻默認的音頻都是aac格式,所以這里-c:a copy后面跟的輸出的音頻文件是aac格式的
如果不介意有損壓縮的話就轉(zhuǎn)換成mp3格式 應(yīng)該不會因為直接復制碼流而報錯
提取視頻
感覺這些應(yīng)該可以包括大部分平時常用的視頻處理命令了
大概整篇文章都很nerd吧 都是些很無聊的碎碎念 能看到這里真是非常感謝
如果能幫到你就再好不過了