如何修復:Plex 顯示音訊和/或字幕軌道為「未知」

我發現在很多情況下,Plex 會把字幕軌或音軌顯示成「Unknown」,這是因為 .MKV 檔裡的屬性值沒有正確設定。我寫了一個小腳本來修正這個問題。

只要打開你的 MCEBuddy profiles.conf 檔案……(在 Windows 上的路徑是:C:\\Program Files\\MCEBuddy2x\\config),然後在你用來轉檔的 profile 結尾加上下面幾行,如果你用多個 profile,就每個都加。

CustomCommandPath=C:\\Windows\\System32\\cmd.exe
CustomCommandParameters="/c del /q "%edlfile%" "%srtfile%" & "C:\\Program Files\\MKVToolNix\\mkvpropedit.exe" "%convertedfile%" --edit track:s1 --set language=eng"
CustomCommandHangPeriod=100
CustomCommandCritical=true
CustomCommandUISession=false
CustomCommandShowWindow=false

有幾點要注意……我用 MCEBuddy 轉成 .mkv 檔,並把字幕軌封裝進去,這樣就不需要額外的 .srt 檔。所以前面那幾行會把 edl 和 srt 檔刪掉做清理,然後把第一條字幕軌的屬性設成 Eng(英文)。

你得先安裝 MkvEdit 才能運作;如果你想改音軌屬性,只要再加一行類似:--edit track:a1 --set language=eng

可以去看 mkvpropedit 的說明檔,找設定音軌類型的詳細指令。

我發現這方法完全可行,現在字幕軌不會再出現惱人的「Unknown」——我們家永遠開字幕,而且 Plex 設成自動顯示英文字幕,這樣很有用,因為 Plex 現在會自動從每部片開始就載入字幕,不用再手動選「Unknown」軌。

希望對遇到同樣問題的人有幫助。

祝好,

  • {c}guy

P.S. 超級感謝 Goose 開發出這麼棒又實用的軟體,我超愛 MCEBuddy。

2 个赞

感謝 @robtheone 提供這個為 MP4 檔案新增語言代碼給 Plex 使用的腳本:

CustomCommandPath=mp4box\mp4box.exe
CustomCommandParameters="%convertedfile%" -lang 1=eng -lang 2=eng
CustomCommandHangPeriod=100
CustomCommandCritical=true
CustomCommandUISession=false
CustomCommandShowWindow=false
1 个赞

供您参考,此功能已添加到 2.4.9 版本中

MCEBuddy 将自动在 MKV 和 MP4 元数据中包含语言标签,并在外部 SRT 文件中包含语言标签。

我刚刚使用 MCEBuddy,还在熟悉设置,但到目前为止,我用“MP4 未处理”配置文件修剪的所有 mp4 文件音频都显示为“未知”。我已在“常规设置”和“高级设置”中都将语言设为英语。还有其他我遗漏的设置吗?

1 个赞

我尝试将 @robtheone 脚本添加到我的配置文件末尾,但似乎没有任何反应。

我在 MCEBuddy 安装文件夹中看到了 mp4box.exe。

以下是日志摘录。

2020-04-21T10:18:38 MCEBuddy.Transcode.CustomCommand → 读取自定义命令参数 →
CustomCommandPath = c:\windows\system32\cmd.exe
CustomCommandParameters = “/c mp4box.exe “%convertedfile%” -lang 1=eng -lang 2=eng”
CustomCommandHangPeriod = 100
CustomCommandCritical = True
CustomCommandUISession = False
CustomCommandShowWindow = False
CustomCommandExitCodeCheck = False
2020-04-21T10:18:38 MCEBuddy.Transcode.CustomCommand → 即将运行自定义命令,参数为:
CustomCommandPath = c:\windows\system32\cmd.exe
CustomCommandParameters = “/c mp4box.exe “\HOMEMEDIA-PC\wdultra1tb\Videos-MCEBuddyTemp\working0\Last.Week.Tonight.with.John.Oliver.s07e09.WEBDL-720p_1.mp4” -lang 1=eng -lang 2=eng”
CustomCommandHangPeriod = 100
CustomCommandCritical = True
CustomCommandUISession = False
CustomCommandShowWindow = False
CustomCommandExitCodeCheck = False
2020-04-21T10:18:38 MCEBuddy.AppWrapper.Base → 启动进程 c:\windows\system32\cmd.exe
2020-04-21T10:18:38 MCEBuddy.AppWrapper.Base → 进程参数 “/c mp4box.exe “\HOMEMEDIA-PC\wdultra1tb\Videos-MCEBuddyTemp\working0\Last.Week.Tonight.with.John.Oliver.s07e09.WEBDL-720p_1.mp4” -lang 1=eng -lang 2=eng”
2020-04-21T10:18:38 MCEBuddy.AppWrapper.Base → UI 会话管理员进程:False
2020-04-21T10:18:38 MCEBuddy.AppWrapper.Base → 设置进程优先级为 Normal
2020-04-21T10:18:38 MCEBuddy.AppWrapper.Base → ‘mp4box.exe’ 不是内部或外部命令,
2020-04-21T10:18:38 MCEBuddy.AppWrapper.Base → 也不是可运行的程序或批处理文件。
→ 进程退出代码为 1

这个有效。谢谢。

1 个赞