前往
大廳
主題

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

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

寫了一支基於 FFmpeg 的影音處理程式,雖然  FFmpeg 很強大没錯。
但是因為它没有介面,只能透過以 DOS 下指令的方式來處理影音,實在很不親切,所以我弄了一個比較方便操作的圖形化介面。

我自己需要的大概是四到五項左右的功能,我整理出十二項常見功能來使用
FFmpeg 是有名的轉檔之神,能耐當然遠不止如此,我整理出來的也只是冰山一角
未來也許會加入其它功能,現在就先這樣吧

下面這部影片,就是我拿來測試圖轉影片、音訊替換、浮水印三種功能的

一般設定
核心數量會影響 CPU 的使用率,0 是 CPU 全力運作,2 是控制 CPU 只佔用 50 %
FFmpeg 在執行指令的時候會顯示一段基本的抬頭資訊,這跟指令是無關的,所以可以選擇隱藏

影片編碼
可以做一些細微的調整,如果不知道怎麼調整,保持預設就好了

音訊編碼
也是一樣,如果不知道就保持預設

字幕編碼
這部分我好像測試不足,使用影音轉檔的功能應該可以拿來做字幕格式互轉

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

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

影片合併
可以把多個影片前後串連成一個影片
先選取影片來源,再按合併影片就可以了
只要順序是對的,影片檔名可以無規則

影片裁切
意思是這部影片的時長不變,但是在原本的畫面中只擷取出一個矩形範圍

影片翻轉
包含上下翻轉、左右翻轉、旋轉、縮放等功能,應該不難理解

浮水印
循環的意思是說持續播放,假設你使用的是 gif 動畫,然後選擇不循環,那它出現後只會播放一次,播放完就會直接停在最後一格不動了
如果你希望浮水印從頭到尾都出現,那開始時間跟結束時間直接留空就可以了
不然的話就設定希望出現的時間跟結束的時間
時間格式:00:00:00

影音轉檔
如果勾選重新編碼,就會套用上面的編碼設定
不勾選就會沿用原本影片的編碼

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

音訊替換
取代原本的音訊,或是讓原本没有聲音的影片新增聲音
音訊來源可以是音訊檔或是影片檔,只要你確定這個影片檔是有聲音的

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

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

圖轉影片
基本上不需要補幀,如果需要更高的幀率直接把這裡的影片幀率提高就可以了
但我認為預設的夠用了,我看別人在弄,幀率也只設定 15 而已
它支援單一圖片跟多個圖片,看你圖片來源有幾個,會自動調整適當的指令

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

清空是除了設定的介面之外,清除所有的欄位內容或是回到預設狀態

下載點:暫時没有,等我再整理一下吧

創作回應

相關創作

更多創作