Re: [軟體] 影片大量轉檔程式
更新一下 Batch-FFmpeg 腳本 v2.0
這是用 Applescript 寫的 ffmpeg GUI 介面腳本
主要讓使用者從 Finder 選取影片,重新編碼成新影片
花了幾個禮拜把腳本整個重寫,增加了自訂軌號和自訂濾鏡的功能
需要的人自取
腳本下載 https://www.mediafire.com/file/iboz8839tudimds/Batch-FFmpeg2.zip
為什麼不用 macOS 系統內建的影片轉碼功能?
內建的轉碼,只能輸出標準解析度,ffmpeg 自由性高很多,還能套用上百種濾鏡
另外,使用 ffmpeg libx265 轉碼後,容量可大幅縮小
─────────────────────────────────────
準備工作 1
執行 macOS 內建的 Script Editor.app,然後在設定內勾選顯示工序指令選單
打開後,右上方的常駐程式區會多一個工序指令的圖示
https://i.meee.com.tw/PerGGn4.png

準備工作 2
下載腳本解壓縮後放在 ~/Library/Scripts/ 下面即可
zip 解開有兩個檔案,兩個檔案必須放在同一資料夾內
Batch-FFmpeg 是腳本主體,setting 放自訂參數
可依喜好修改 setting 的參數,複製多份不同設定來使用
https://i.meee.com.tw/7EOz7GW.png

準備工作 3
腳本會用到兩個套件,ffmpeg 和 mkvtoolnix
更詳細的說,是 ffmpeg, ffprobe, mkvppropedit 這三個程式
可從官網下載編譯好的程式,或是透過 Homebrew 編譯安裝(詳見 setting 裡面的註解)
安裝完成後,修改 setting 檔案內的對應程式路徑即可
https://i.meee.com.tw/LY83Jl0.png

macOS 權限
腳本會使用到 Finder, System Events, TextEdit 這幾個內建 app
在[系統設定/隱私權與安全性]裡面的[自動化]&[輔助使用],允許"工序指令選單"的權限
另外腳本預設在結束時會發出系統通知,也可在 setting 裡面設定不發出通知
腳本第一次存取磁碟檔案時,macOS 安全性應該會跳出來擋.
除了腳本,也會詢問 ffmpeg, ffprobe, mkvpropedit 的磁碟存取權限,分別允許即可
https://i.meee.com.tw/43hOvK8.png

─────────────────────────────────────
使用方式:
直接在 Finder 選取要轉檔的影片,然後點選右上方的工序指令圖示,執行腳本就行
或是反過來先執行腳本,再從跳出的視窗裡選取檔案也可.
https://i.meee.com.tw/VwjIbC1.png

(Finder 一次最多可處理 999 個檔案,官方設的系統限制,超過的話無法使用腳本)
選取的每個影片都可自訂要保留的軌號
像下圖這影片,包含了1視訊軌+2音訊軌+16語言字幕+9個字型+1張封面圖,共29軌
腳本預設抓取視訊第1軌、音訊第1軌、字幕則依照 setting 內設定的字幕語言
有封面圖的話預設也會保留,可手動選取軌號,其他沒被選取的就是直接捨棄.
https://i.meee.com.tw/Alne3GI.png

(要一次處理大量影片的話,建議在 setting 裡關閉自訂軌號以節省時間)
選完軌號後,可編碼成新影片。或是不轉碼、只把選中的軌號重新複製打包(Remux)
(編碼項目在 setting 內可自訂)
https://i.meee.com.tw/fGlWop2.png

選取的軌號有特效字幕(ass/ssa)或檔案附件時,會用 mkv 封裝,否則以 mp4 封裝
(ffmpeg 對 mp4 的支援度比較好,對於 mkv 支援度略差,尤其是附件。
若要弄成 mkv,建議先用 ffmpeg 輸出 mp4,再用 mkvtoolnix 把附件一起封裝成 mkv)
選重新編碼的話,可套用 ffmpeg 的濾鏡。若選 Remux 則無法套用濾鏡
(濾鏡項目在 setting 內可自訂)
https://i.meee.com.tw/ihjCzPZ.png

降低搖晃(防手震)是 2-pass 濾鏡,也就是說第一輪會先分析整段影片,儲存分析檔,
第二輪才對照分析檔開始編碼。費時較長、分析檔的容量也不小,需留意硬碟空間.
但某些拍攝很隨便的影片(例如fc2ppv)套這濾鏡還是挺有用的
目前腳本只支援防手震這個 2-pass 濾鏡,其他自訂濾鏡只能用 1-pass 的
前面那個29軌的影片,選取其中5軌轉碼成 hevc 的最終結果
https://i.meee.com.tw/yZrq8su.png

輸出的影片,會解除所有字幕軌的"forced"標籤,不強制顯示任何字幕
因為被設定強制顯示的字幕,通常不是中文字幕
─────────────────────────────────────
腳本開始轉碼時會建立一個 4MB RAM disk,用來存放編碼進度和錯誤記錄
正常結束時就會自動卸載,編碼未結束前不要把它強制卸載
https://i.meee.com.tw/aoF43GA.png


轉碼中的資訊窗: (整體進度) [現/全] 目前處理的影片 (目前影片進度%)
預設每 3 秒更新一次進度
https://i.meee.com.tw/zvCbi55.png

轉碼輸出的影片存放在同一目錄下,檔名尾端可附加自訂字串,以示區別
目標檔名已存在時,會自動加上流水號另存新檔,不覆蓋
https://i.meee.com.tw/tDANbL3.png

setting 裡面可自訂檔名的字串取代規則,主要用來縮短檔名
https://i.meee.com.tw/X63NAnx.png

全部轉碼結束時的摘要視窗
https://i.meee.com.tw/5NV1s3e.png

(這裡是設定略過 hevc 影片,只把其它格式的影片轉成 hevc)
編碼記錄有花費時間和取用的軌號,利於後續確認。
原影片的軌號,順序是 { {視訊軌}, {音訊軌}, {字幕軌}, {資料軌}, {封面圖} }
若影片有問題,導致編碼出錯的話,也可在這裡面查詢錯誤訊息
https://i.meee.com.tw/u2GfL4O.png

以上.
這腳本大致上把我平常會用到的都寫進去了,也留一些自訂的擴展性.
應該可以再用個幾年吧.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.121.165.219 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/MAC/M.1759851503.A.834.html
推
10/08 10:07,
12小時前
, 1F
10/08 10:07, 1F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
MAC 近期熱門文章
PTT數位生活區 即時熱門文章