.MKV 到 .MP4,搭配 2 條配樂(音訊)

.MKV 到 .MP4,搭配 2 條配樂(音訊)

我找到了這個線程: 手煞車設定可將 MKV 轉換為 MP4,同時保留原始質量

我可以使用以下程式碼將 .MKV“轉換”為 .MP4:

for %%a in ("*.mkv") do D:\Programme\Converter\ffmpeg\bin\ffmpeg.exe -i "%%a" -c:v copy -c:a copy "%%~na .mp4"
pause

唯一的問題是有 2 個音訊通道。德語和英語。使用上面的程式碼,它僅複製德語(第一)語言。但不是第二種音訊語言。我怎樣才能做到這一點?

目前,我僅使用德語從 .MKV 轉換為 .MP4。但我希望能夠將 VLC 播放器的語言從德語切換為英文。

感謝您的幫忙!

編輯: 我在這裡找到了該線程: http://ffmpeg.gusari.org/viewtopic.php?f=25&t=611

我用這些資訊進行了測試。我將上面的程式碼更改為以下程式碼:

for %%a in ("*.mkv") do D:\Programme\Converter\ffmpeg\bin\ffmpeg.exe -i "%%a" -map 0:0 -map 0:1 -map 0:2 -c:v copy -c:a:0 copy -c:a:1 copy "%%~na.mp4"
pause

我在這裡做錯了什麼嗎?我怎樣才能添加德語/英語字幕?如果我在那裡添加一個字幕圖,而我的 .MKV 根本沒有字幕,這會是一個問題嗎?我只想創建一個 .bat 檔案來轉換帶有 2 個音軌和 2 個字幕的 .MKV。這樣我就可以將所有 .MKV 檔案「重新混合」(或轉換為未知)為 .MP4,而不會遺失任何資訊。

目前,我的 .MKV 沒有字幕,所以這並不重要。但最好為未來做好準備,對嗎?

所以請告訴我我做得是否正確,以及如何添加字幕。這是我第一次使用 FFmpeg。剛下載了,沒聽過。從來沒有真正使用過CMD。

答案1

ffmpeg 不會自動映射所有軌道;預設流選擇只會將一個音訊、一個視訊和一個字幕軌道映射到輸出。如果你想地圖所有流,使用-map 0.如果您希望能夠選擇什麼要進行映射,您必須先解析輸入檔 ( ffmpeg -i input.mkv) 並使用一些腳本來建構最終的轉換命令。 ffprobe 對此很有幫助。看FFmpeg Wiki:FFprobe 提示舉些例子。

您可以-c copy指定串流複製所有流,無論它們是什麼類型。您也可以分別索引視訊和音訊串流,因此您的命令可以縮短為:

ffmpeg -i input.mkv -c copy -map 0 output.mp4

答案2

有一個開源程式叫做VCT: https://sourceforge.net/projects/videoconvertertranscoder/?source=directory

這是 ffmpeg 的 GUI。您也可以手動編輯 ffmpeg 指令。它有一個名為轉碼您可以在其中將 MKV 重新打包為 MP4,但此選項卡沒有添加字幕的選項。

如果您想將 MKV 重新打包為 MP4 並同時新增字幕,步驟如下:

  1. 轉變選項卡並選擇您的輸入文件
  2. 視訊容器選擇複製並在音訊編解碼器還選擇複製
  3. 點選新增字幕並選擇您的外部 SRT 文件
  4. 在ffmpeg命令文字方塊中替換字幕部分-c:s srt ""-c:s mov_text ""
  5. 點選新增到批次列表然後單擊開始 編碼將在一兩分鐘內完成。

當然,如果你不介意編碼兩次,並且不喜歡輸入命令,你也可以這樣做:

  1. 選擇選項卡轉碼並將您的文件拖到輸入檔.., 點選開始,一分鐘內即可完成。
  2. 然後,選擇新編碼的MP4並在視訊容器選擇複製並在音訊編解碼器點選複製
  3. 點選新增到批次列表然後單擊開始。編碼將在一分鐘內完成。

執行請求的 MKV 編碼為 MP4 的螢幕截圖

答案3

好吧,我使用的是這樣的 .bat 檔案:

for %%a in ("*.mkv") do D:\Programme\Converter\ffmpeg\bin\ffmpeg.exe -i "%%a" -c:v copy -c:a copy "%%~na.mp4" 

但我收到一條錯誤訊息,但 .MP4 仍然工作正常。這裡有一個日誌檔:pastie.org/private/9lqyvhyotnh1o4gp6rg5g

問題是我的舊索尼電視在觀看 .MP4 時有時會凍結。 GUI 看起來不錯。但如果您想連續轉換 20 個文件,則需要點擊很多次。 .bat 檔案只是自動將所有這些檔案放在一個資料夾中。

也許有人知道為什麼我收到錯誤訊息,以及這個腳本是否錯誤:)

相關內容