
我正在使用 ffmpeg 修改多個.mp4
檔案。
首先,我使用此命令將預設語言從 更改eng
為fr
。
ffmpeg.exe -i "imput 1.mp4" -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default "Output 2.mp4"
然後我想使用此命令將軟字幕從.srt
文件添加到.mp4
.
ffmpeg.exe -i "Input 1.mp4" -i "Input 2.srt" -c copy -c:s mov_text -metadata:s:s:0 language=fr "Output 1.mp4"
這兩個命令獨立工作,但我想將它們組合在一行中。
我嘗試了類似的方法,但只有音訊發生變化,對字幕沒有影響。
ffmpeg.exe -i "Input 1.mp4" -i "Input 2.srt" -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default -c:s mov_text -metadata:s:s:0 language=fr Output 1.mp4"
我知道有什麼問題,但我無法弄清楚。
有人可以告訴我我的組合指令有什麼問題嗎?
然後,正如我之前所說,我正在處理多個文件(確切地說是 314 個文件),每個文件都有自己的名稱,每次手動更改文件名非常繁瑣。有沒有辦法對目錄中存在的每個檔案執行此操作?
答案1
在視訊+字幕所在的資料夾中嘗試此操作開啟命令提示字元並使用以下命令:
for %a in (*.mkv *.mp4) do ffmpeg -i "%a" -i "%~na.srt" -map 0 -map 1:s:0 -disposition:a:0 0 -disposition:a:1 default -c copy -metadata:s:s:0 language=fr "%~na_new.%~xa"
它應該創建一個與舊視頻同名的新視頻,但名稱中帶有“新”,並且音頻和字幕已更改。