ETH官方钱包

前往
大廳
主題

[C#] 克伊娜 v1.0 版 基於 FFmpeg 的影音處理介面

高木秋人 | 2022-03-27 12:25:32 | 巴幣 10 | 人氣 976

寫了一支基於 FFmpeg 的影音處理程式,雖然  FFmpeg 很強(qiáng)大沒(méi)錯(cuò)。
但是因?yàn)樗鼪](méi)有介面,只能透過(guò)以 DOS 下指令的方式來(lái)處理影音,實(shí)在很不親切,所以我弄了一個(gè)比較方便操作的圖形化介面。

我自己需要的大概是四到五項(xiàng)左右的功能,我整理出十二項(xiàng)常見(jiàn)功能來(lái)使用
FFmpeg 是有名的轉(zhuǎn)檔之神,能耐當(dāng)然遠(yuǎn)不止如此,我整理出來(lái)的也只是冰山一角
未來(lái)也許會(huì)加入其它功能,現(xiàn)在就先這樣吧

下面這部影片,就是我拿來(lái)測(cè)試圖轉(zhuǎn)影片、音訊替換、浮水印三種功能的

一般設(shè)定
核心數(shù)量會(huì)影響 CPU 的使用率,0 是 CPU 全力運(yùn)作,2 是控制 CPU 只佔(zhàn)用 50 %
FFmpeg 在執(zhí)行指令的時(shí)候會(huì)顯示一段基本的抬頭資訊,這跟指令是無(wú)關(guān)的,所以可以選擇隱藏

影片編碼
可以做一些細(xì)微的調(diào)整,如果不知道怎麼調(diào)整,保持預(yù)設(shè)就好了

音訊編碼
也是一樣,如果不知道就保持預(yù)設(shè)

字幕編碼
這部分我好像測(cè)試不足,使用影音轉(zhuǎn)檔的功能應(yīng)該可以拿來(lái)做字幕格式互轉(zhuǎn)

FFmpeg 路徑
這支程式是基於 FFmpeg 實(shí)作的介面程式,所以一定要有 FFmpeg 的檔案路徑,F(xiàn)Fmpeg 可以直接從官方網(wǎng)站下載,這樣也比較安全一點(diǎn)
FFmpeg 官方網(wǎng)站:點(diǎn)我前往
FFmpeg 是負(fù)責(zé)影音處理
FFprobe 是負(fù)責(zé)查看影音的結(jié)構(gòu)資訊,也就是媒體資訊這一塊
那什麼是批次指令檔案呢?
它是用來(lái)處理具有多個(gè)檔案的列表,也就是說(shuō)當(dāng)你一次要處理多個(gè)檔案時(shí),它會(huì)把這些檔案的路徑儲(chǔ)存到批次指令檔案裡,再藉由指令去呼叫這個(gè)檔案來(lái)執(zhí)行,檔案格式是純文字檔 (*.txt)
一開始只要建立一個(gè)空白的純文字檔就可以了
按下建立,然後選定某個(gè)你知道的資料夾,它就會(huì)自動(dòng)建立了
那做完這些設(shè)定之後,可以回到一般設(shè)定去套用設(shè)定,它會(huì)儲(chǔ)存你目前的設(shè)定,下一次再開啟的時(shí)候就不用再重新設(shè)定一次了

影片分割
分割方式分為有損跟無(wú)損,我推薦使用有損分割,因?yàn)闊o(wú)損分割會(huì)以你給的時(shí)間點(diǎn),去找出最近的關(guān)鍵幀做分割,而不是分割在你設(shè)定的時(shí)間點(diǎn)上,所以時(shí)間定位比較不精準(zhǔn)
那有損分割是透過(guò)重新編碼的方式,所以能夠分割在正確的時(shí)間點(diǎn)上
分割方式會(huì)影響單段分割跟多段分割
如果是要做單段分割,只要設(shè)定保留片段的部分就可以了
如果是要做多段分割,那就設(shè)定分割多個(gè)段落的部分
差別在於單段分割是從一部影片中擷取出某一小段的部分
多段分割是每 xx 秒就自動(dòng)分割一部份,
例如一分鐘的影片,每 10 秒就自動(dòng)分割一次,理論上這樣它就會(huì)分割成 6 個(gè) 10 秒的影片

影片合併
可以把多個(gè)影片前後串連成一個(gè)影片
先選取影片來(lái)源,再按合併影片就可以了
只要順序是對(duì)的,影片檔名可以無(wú)規(guī)則

影片裁切
意思是這部影片的時(shí)長(zhǎng)不變,但是在原本的畫面中只擷取出一個(gè)矩形範(fàn)圍

影片翻轉(zhuǎn)
包含上下翻轉(zhuǎn)、左右翻轉(zhuǎn)、旋轉(zhuǎn)、縮放等功能,應(yīng)該不難理解

浮水印
循環(huán)的意思是說(shuō)持續(xù)播放,假設(shè)你使用的是 gif 動(dòng)畫,然後選擇不循環(huán),那它出現(xiàn)後只會(huì)播放一次,播放完就會(huì)直接停在最後一格不動(dòng)了
如果你希望浮水印從頭到尾都出現(xiàn),那開始時(shí)間跟結(jié)束時(shí)間直接留空就可以了
不然的話就設(shè)定希望出現(xiàn)的時(shí)間跟結(jié)束的時(shí)間
時(shí)間格式:00:00:00

影音轉(zhuǎn)檔
如果勾選重新編碼,就會(huì)套用上面的編碼設(shè)定
不勾選就會(huì)沿用原本影片的編碼

影音同步
影片跟音訊是不同檔案,如果是同一個(gè)檔案在延遲畫面的時(shí)候,會(huì)連同音訊也一起延遲
如果影片跟音訊的來(lái)源都是同一個(gè)檔案,那就直接複製它就好了,到時(shí)候音訊選擇複製的檔案也可以
然後加減速的部分,其實(shí)就是讓畫面變快或變慢,但是音訊不變
只是這樣需要注意畫面的時(shí)長(zhǎng)可能跟音訊的時(shí)長(zhǎng)會(huì)對(duì)不上

音訊替換
取代原本的音訊,或是讓原本沒(méi)有聲音的影片新增聲音
音訊來(lái)源可以是音訊檔或是影片檔,只要你確定這個(gè)影片檔是有聲音的

字幕提取
先讀取字幕,讓讀到的字幕流顯示在下面黑色的輸出框中
然後再按提取字幕就可以了,它可以一次提取出影片檔中封裝的所有字幕

字幕合併
烙印字幕是把字幕直接繪製在畫面中,成為影片的一部份,缺點(diǎn)是以後不能再提取或去除字幕
封裝字幕適合像 MKV 這樣的封裝格式,日後需要提取或是去除這個(gè)字幕都還可以做到
緩衝區(qū)基本維持預(yù)設(shè)就可以了,如果顯示緩衝區(qū)不夠大,那就有可能是影片檔太大了

圖轉(zhuǎn)影片
基本上不需要補(bǔ)幀,如果需要更高的幀率直接把這裡的影片幀率提高就可以了
但我認(rèn)為預(yù)設(shè)的夠用了,我看別人在弄,幀率也只設(shè)定 15 而已
它支援單一圖片跟多個(gè)圖片,看你圖片來(lái)源有幾個(gè),會(huì)自動(dòng)調(diào)整適當(dāng)?shù)闹噶?br>

最後再提一下,下面的指令條跟黑色框的意義
當(dāng)你在執(zhí)行指令功能的時(shí)候,會(huì)自動(dòng)把擬好的指令顯示在指令條中
按下複製,可以把指令條中的指令複製到剪貼簿中
黑色框是執(zhí)行 FFmpeg 指令的時(shí)候,從 FFmpeg 處所獲取的即時(shí)訊息

清空是除了設(shè)定的介面之外,清除所有的欄位內(nèi)容或是回到預(yù)設(shè)狀態(tài)

下載點(diǎn):暫時(shí)沒(méi)有,等我再整理一下吧

創(chuàng)作回應(yīng)

相關(guān)創(chuàng)作

更多創(chuàng)作