我已经使用 MCEBuddy 一段时间了,效果非常好。我会让它处理我所有的 Plex DVR 录制内容,提取隐藏字幕并重新封装成最终的 MKV 文件。多年来一直运行得很完美。然而,最新版本的 Plex 现在支持 EIA_608 字幕,它们在我的所有录制内容中都显示为“未知”字幕,因为我并没有重新编码视频,只是重新封装。所以现在这些 EIA 字幕:A) 看起来很糟糕,B) 导致 SRT 文件无法像以前那样被自动选中并播放。由于我家里有听障人士,必须始终自动开启字幕。
更不用说 EIA 字幕的显示效果远不如干净清爽的 SRT 字幕。
经过一些搜索,我发现 ffmpeg 确实可以从 ts(或 mkv)文件中移除 EIA_608 字幕……使用这条命令:
ffmpeg -i input.mkv -codec copy -bsf:v “filter_units=remove_types=6” output.mkv
我已经测试过,效果如预期。所以这是我的功能请求,或者想请问您现在是否有办法实现?
请给我选项,在您提取字幕到 SRT 文件之后、重新封装成 MKV 并加回字幕之前,运行那条 ffmpeg 命令。
现在能做到吗?
近期会支持吗?
提前感谢您的帮助。
我自己回答了這個問題。經過一番調整,我最終寫了一個 bat 檔案,在後製處理時完成這件事。
這個方法只是將 MCEbuddy 產生的 mkv 檔案,再次透過 ffmpeg 處理,移除 EIA_608 字幕,讓 Plex 不會偵測到它們。生活又恢復美好了。
如果有人想要我的腳本,告訴我,我會傳給你。
Goose
(Goose)
3
请随时将文件发布在这里(可以使用代码框)
您是否考虑过在配置文件中加入参数 -bsf:v "filter_units=remove_types=6"?这样不是更简单吗?
看起來應該可以,不過在我的測試中,從 TS 檔轉換成 mkv 時移除 EIA 字幕並沒有成功,但如果是從 mkv 轉 mkv 就完全沒問題。也許在初次轉換時有辦法做到,但我只知道這個方法,也不想再亂試其他方式了。
这是给任何想摆脱那些烦人的EIA_608字幕的人的代码,直到Plex和CCextractor解决它们的问题:
在你用来处理文件的profile.conf里加上:
CustomCommandPath=C:\Windows\System32\cmd.exe
CustomCommandParameters="/c C:\ccextractor\RemoveSubs\RemoveSubs.bat "%convertedfile%" "%srtfile%" "
CustomCommandHangPeriod=100
CustomCommandCritical=true
CustomCommandUISession=false
CustomCommandShowWindow=false
然后这是我的脚本(根据你的需求调整路径),我也会删除.srt文件,因为它已经合并到我的mkv文件里了(根据我的设置):
@echo off
For %%A in (%1) do (
Set Folder=%%~dpA
Set InputFileName=%%~nA
)
del /q %2
IF %ERRORLEVEL% EQU 0 (
ECHO 删除SRT文件 %2 成功
)
C:\Progra~1\MCEBuddy2x\ffmpeg\ffmpeg.exe -i %1 -codec copy -bsf:v "filter_units=remove_types=6" G:\BuddyTemp\working0\NoSubsOutput.mkv
IF %ERRORLEVEL% EQU 0 (GOTO :SUCCESS) ELSE (GOTO :FAIL)
:SUCCESS
ECHO 从 %1 移除EIA_608字幕成功
del /q %1
IF %ERRORLEVEL% EQU 0 (
ECHO 删除原始MKV成功
)
ECHO %InputFileName%
ren "G:\BuddyTemp\working0\NoSubsOutput.mkv" "%InputFileName%.mkv"
IF %ERRORLEVEL% EQU 0 (
ECHO 重命名无EIA字幕的新MKV成功
)
EXIT
:FAIL
ECHO 移除EIA字幕时出错。
EXIT /B %ERRORLEVEL%