ffmpeg 批次轉換影片格式

📢 本文由 gemini-2.5-flash 翻譯

前言

因為接觸了 YouTube-dl ,下載頻道的所有內容非常好用,但是下載下來是 webm 格式,相容性不是很好,於是查詢了使用 ffmpeg 轉換格式的指令。

設定檔

後來發現改一下設定檔就行了,在檔案後面加上

1
--merge-output-format mp4

這是我的設定檔

1
-o 'C:/Users/yexca/Downloads/Video/%(uploader)s/%(upload_date)s%(title)s%(id)s.%(ext)s' --merge-output-format mp4

單一指令

使用以下指令即可快速轉碼

1
ffmpeg -i before.webm after.mp4

但一個一個轉碼實在是太慢了,於是就想到使用批次處理。

批次處理

新增記事本,輸入以下程式碼

1
for %%a in (*.webm) do ffmpeg -i "%%~a" -vcodec copy -f mp4 "%%~na.mp4"

其中 (*.webm) 為原始檔案類型,「%%~na.mp4」為想要產生的檔案類型。

然後儲存並命名為run.bat 後,放到對應的資料夾執行即可。

但這樣每次想轉換不同的檔案,還得修改一下,這樣不大實用啊(

dos

然後我就看了一些 bat 檔案的資料,簡單寫了下面的程式 (需要使用 GB2312 編碼才能在命令列正常輸出中文)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
echo off
:0
echo 請輸入數字選擇操作
echo 1.轉碼
echo 2.刪除
echo 3.退出
set /p choice=請選擇
goto %choice%
:1
set /p before=請輸入轉碼前檔案格式
set /p after=請輸入轉碼後檔案格式
echo 開始轉碼%before%到%after%
for %%a in (*.%before%) do ffmpeg -i "%%~a" -vcodec copy -f %after% "%%~na.%after%"
echo 轉碼完成
goto 0
:2
set /p delet=請輸入需要刪除的檔案格式
echo 開始刪除%delet%
del *.%delet%
del %delet%
echo 刪除完成
goto 0
:3
exit

放到對應的資料夾下使用就好了。

參考文章

youtube-dl 的一些實用技巧 · eisen 部落格

給新手的 20 多個 FFmpeg 指令範例 - 知乎

FDM 當掉了,youtube-dl 慢得要死,烤肉man 的末日到了! AnnMilne 的評論

用bat指令執行ffmpeg進行批次轉碼-五仁的紀錄

Bat指令學習 - 陽光雨露& - 部落格園

bat set指令詳解_python資深小白的部落格-CSDN部落格

This post is licensed under CC BY-NC-SA 4.0 by the author.