最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

(11)ffmpeg如何批量處理音視頻字幕?結(jié)合批處理相關(guān)寫法模板

2020-05-01 22:33 作者:思思陸思思  | 我要投稿

ffmpeg用多了,或者平時在用一些轉(zhuǎn)碼、剪輯軟件的時候,不時看到有小伙伴問:能不能批量轉(zhuǎn)碼?批量壓制?有時一些資源想統(tǒng)一剪掉某一段,或者一個視頻想剪許多鏡頭下來,up自己剪得像個人工智能…

所以,也正是第一篇說的那樣,ffmpeg可以做到這么簡單。個人覺得在平常使用這方面上,ffmpeg最大的魅力優(yōu)點是能結(jié)合批處理也就是batch,來對音視頻字幕文件進(jìn)行各種批量的處理。(簡單你寫3w多字基本還是基礎(chǔ)…


1、上手例子:批量轉(zhuǎn)封裝flv→mp4

好吧,老是瞎扯這么多x我們先看一個最典型的例子——轉(zhuǎn)封裝。回想一下轉(zhuǎn)封裝的命令行:

ffmpeg -i .\in.flv -c copy .\out.mp4

這里我們將一個flv視頻轉(zhuǎn)成一個mp4視頻,注意俺特別寫出“一個”,這樣想來,批量就是很多很多個。換言之,可以想象很多很多個flv和mp4,在命令行的那個相應(yīng)位置拼命排隊“輪換”,其它都不用變,不影響。那ffmpeg不就可以實現(xiàn)所謂的批量轉(zhuǎn)封裝了嗎?!

確實.jpg。不過ffmpeg本身(好像?)沒這種做法的參數(shù)指令。但正因為我們是以cmd來使用的ffmpeg,而cmd本身可以運行一種腳本指令,叫做batch,就是…(又繞回上文去了…


批量轉(zhuǎn)封裝的命令行如下。直接在cmd輸入運行:

for %i in (.\*.flv) do ffmpeg -i "%i" -c copy "%~dpni.mp4"

等等這啥玩意…跟你第八篇毫無說明一樣恐怖不經(jīng)歷風(fēng)雨,怎么見彩虹嘛,咳咳…up相信小伙伴們,嗯√

這邊up不會對batch指令作詳細(xì)介紹,感興趣的話可以看我另一本文集~

簡單說說它的意思。第一個?%i?指的是(.\*.flv)這個內(nèi)容,*是指所有全部的flv。順便復(fù)習(xí)一下“.\”在第一篇還記得什么意思吧?flv所在的某個目錄。因此for?%i in (.\*.flv) do就是說,要對某個目錄(不包括其子目錄)里的所有flv進(jìn)行什么操作。-i后面的“%i”也表示?%i?的內(nèi)容,只是給它加上英文雙引號。"%~dpni.mp4"表示照抄"%i"的盤符(比如C盤)、文件夾目錄、文件名的內(nèi)容,只是后綴拓展名是和原來單獨用ffmpeg一樣手打的mp4。

啊,看圖~

成功的,懶得截全了(


當(dāng)然,我們還可以把這個命令行以某種文件形式保存起來,方便以后運行。這點也像第八篇x

新建記事本,復(fù)制粘貼以下內(nèi)容:

for %%i in (.\*.flv) do ffmpeg -i "%%i" -c copy "%%~dpni.mp4"

和之前直接cmd的略有不同,分別多了個“%”

這樣做的話建議(*.flv)這樣就好,原因下面再說

然后直接另存為:

注意把編碼改成ANSI,默認(rèn)是UTF-8

最后,當(dāng)我們需要flv轉(zhuǎn)封裝mp4的時候,

直接把這個cmd文件粘貼到flv所在目錄,運行即可

cmd文件讀取當(dāng)前目錄,免得我們設(shè)置改來改去。這就是原因~


2、觸類旁通:批量轉(zhuǎn)碼、壓制、抽取、剪輯等

回顧一下第二篇里提到的“如何理解ffmpeg的命令行”:輸入input、處理process、輸出output。學(xué)過編程的朋友也許有感覺了,就是“IPO”模式嘛,程序的一個基本編寫方法。

cmd直接輸入“ffmpeg”運行可以看到,ffmpeg命令行組成結(jié)構(gòu)是這樣的:

ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

也就是說,ffmpeg 全局設(shè)置 輸入設(shè)置 -i 輸入文件 … 輸出設(shè)置 輸出文件 …

溫故知新。我們想想,就像中學(xué)的“控制變量法”,要把批量轉(zhuǎn)封裝變成批量做其它事,ffmpeg命令行中哪些需要變,哪些保持不變。

顯然,批量轉(zhuǎn)碼,要改變-c,其它設(shè)置和轉(zhuǎn)封裝的情況一般一樣。批量壓制,除了改變-c,還可考慮相關(guān)壓制參數(shù)的設(shè)置,其它也和轉(zhuǎn)封裝基本一樣。(這里暫不討論批量二次編碼)批量抽取,用到-map,其它也是看著照抄。這三個主要考慮的都是“處理process”,或者說“輸出設(shè)置”。批量剪輯,在開頭加上-ss -to,其它還是照抄。它改變的就是“輸入設(shè)置”或“全局設(shè)置”了。


同理,還有其它的什么“姿勢”,都可以試想著看看能否這樣觸類旁通~


3、思路拓展:多樣需求,程序交互

嚯,這很有意思。如果我的是其它容器格式,那么把后綴拓展名照改,其它跟著設(shè)置就行。視頻、音頻、字幕都可以這么來。

于是up做了一個“ffmpeg批量轉(zhuǎn)封裝器.bat”:https://lusisi.lanzouv.com/b015ewkgj?密碼:3cl4

方便平時批量轉(zhuǎn)封裝各種音視頻字幕文件,可自定義輸出目錄,下載下來照著用就知道了。


那么按照這個思路,其它process也可以這么“程序交互”,還可以把它們?nèi)颊掀饋?。我還沒做(那啥從未開始x

另外,還有些需求例如:對一個音視頻文件進(jìn)行多段剪輯最后逐個輸出,同時封裝許多音視頻字幕軌最后輸出一個視頻,同時進(jìn)行幾種不同的process……

對于batch的不同寫法所能解決的不同需求,或者能不能帶來更好的使用體驗?例如,現(xiàn)在是通過雙擊運行batch文件,再做下一步操作。還能將待處理文件拖入batch文件即自動運行,或者簡單寫個txt文本再由batch所運用,或者……等等。

嘛,人生苦短,道阻且長,這些就未來再說啦~



感謝你觀看到這里。

(11)ffmpeg如何批量處理音視頻字幕?結(jié)合批處理相關(guān)寫法模板的評論 (共 條)

分享到微博請遵守國家法律
上饶市| 广宁县| 五原县| 盱眙县| 保靖县| 林西县| 沙坪坝区| 会泽县| 南澳县| 贵港市| 孟村| 南江县| 漳浦县| 郎溪县| 望江县| 屏南县| 太原市| 天柱县| 庄河市| 庆云县| 海安县| 紫阳县| 南安市| 广平县| 绥宁县| 蒙城县| 宁河县| 周宁县| 诏安县| 肥东县| 黔西| 老河口市| 肇源县| 于田县| 沙洋县| 宁晋县| 新巴尔虎左旗| 西乡县| 泉州市| 仙居县| 施秉县|