[錯誤] 次要:具有不同節目名稱字元集編碼的媒體(撇號 = â€tm (aEtm))

我在 HDHR 和 Tivo 上都錄製了一個節目,節目名稱裡有撇號。
我用 KMTTG 把檔案從 Tivo 以 TS 格式傳出,再轉碼成 raw MP4(無壓縮,只因我搞不定如何跳過這步,讓 MCEBuddy 直接處理原始 TS)。我用 KMTTG 是因為我只想要處理 Tivo 上的部分節目。

結果我得到兩個資料夾,裡面是同一節目的檔案:
Christopher Kimballâ€tms Milk Street Television
以及
Christopher Kimball’s Milk Street Television
我「猜」Tivo 的檔案會落到名稱亂掉的那個夾。

在檔案系統上更詭異,我竟有三個目錄:

  1. Christopher Kimball’s Milk Street Television(正確撇號,應是 HDHR 來源)
  2. Christopher Kimball’s Milk Street Television(UTF-8 轉錯,Tivo 來源,來自內部 metadata)
  3. Christopher Kimballs Milk Street Television(撇號被整個拿掉,也是 Tivo,但為 KMTTG 轉碼後的 MP4,KMTTG 似乎沒保留內部 metadata)

甚至不同頻道錄下來的節目名稱可能還會因為我用 TVDB 資訊的特殊命名修正規則而長得不一樣,導致撇號消失。

我找到一篇 PHP 文章可能有解:

裡面提到用「iconv(“UTF-8”, “CP1252”, $data)」。
問題應該是我的檔案系統(Windows)用的是 Windows Code Page 1252(跟 ISO-1252 差不多,可視為等效)。

我懷疑 Tivo 在檔名(或 metadata 裡的節目名)用的是 UTF-8 編碼,才會讓「智慧引號」撇號在兩種來源間轉譯得亂七八糟。

更多資訊——這個奇怪的 ’ 出現在檔案名稱中的節目名稱、詮釋資料描述以及「Showname」的內部詮釋資料裡。
我會找出日誌檔案與媒體檔案供你上傳,如果你想查看 MCEBuddy 的處理流程。

我也已經縮小範圍,這些檔案來自 Tivo,由 KMTTG 提取後產生。

我已将问题源头缩小到 KMTTG 提取的文件,然而当 MCEBuddy 处理它们时似乎还会出现额外问题。
KMTTG 会提取原始 .TS 文件,然后(未经处理)转码为 .MP4 文件。因此在我的 Tivo 配置所监控的输出 “Tivo” 目录里会出现两个文件。
以下是 .MP4 文件的日志片段。注意 KMTTG 在节目名称里完全去掉了撇号,这就解释了为何 MCEBuddy 最终把它处理成 MKV 时会出现那种结果。

不过,在异常处理环节(来自 MP4 文件日志)似乎还有问题:

INFORMATION> --> Task -> MKV-TV-HD
Profile -> HEVC MKV
Source File -> F:\Recorded TV\Tivo\Christopher Kimballs Milk Street Television-S03E06-Chicken Around the World-2019-10-11.mpg

“Kimball’s” 里没有撇号——在 MCEBuddy 看到之前就被 KMTTG 去掉了。
下面这段我认为文件名/元数据没有按我预期工作。

Download Series Details -> True
Download Banner -> True
Overwrite metata from Title -> False
Overwrite metata from Internet -> Default
Metadata Correction => Option 0
[...]
Original Title -> Christopher Kimball*
Corrected Title -> 
TVDB Series Id -> 334523
IMDB Series Id -> 

注意这里用了通配符来忽略撇号是否存在(还是我的正则写错了?)。同样的情况也出现在 “America’s Test Kitchen” 上,原因相同。

下面这段日志我认为显示 TVDB 信息并未被采用(即覆盖没按预期生效)。

INFORMATION> 2019-10-19T16:33:37 MCEBuddy.Engine.ConversionJob --> Current System language is English (United States) (eng)
INFORMATION> 2019-10-19T16:33:37 MCEBuddy.Engine.ConversionJob --> Converting file -> F:\Recorded TV\Tivo\Christopher Kimballs Milk Street Television-S03E06-Chicken Around the World-2019-10-11.mpg
INFORMATION> 2019-10-19T16:33:40 MCEBuddy.Engine.ConversionJob --> Running custom commands
INFORMATION> 2019-10-19T16:33:40 MCEBuddy.Transcode.CustomCommand --> No custom commands found
INFORMATION> 2019-10-19T16:33:40 MCEBuddy.Engine.ConversionJob --> Getting show information and banner from Internet sources
INFORMATION> 2019-10-19T16:33:40 MCEBuddy.MetaData.VideoMetaData --> Extracting Generic Tags
INFORMATION> 2019-10-19T16:33:40 MCEBuddy.MetaData.VideoMetaData --> Downloading Series details
INFORMATION> 2019-10-19T16:33:40 MCEBuddy.MetaData.VideoMetaData --> Recording Type Show
INFORMATION> 2019-10-19T16:33:40 MCEBuddy.MetaData.VideoMetaData --> Checking TheTVDB
WARNING> 2019-10-19T16:33:54 MCEBuddy.MetaData.VideoMetaData --> TheTVDB failed
INFORMATION> 2019-10-19T16:33:54 MCEBuddy.Engine.ConversionJob --> Checking for destination file skip reprocessing
WARNING> --> Cannot find AirYear
WARNING> --> Cannot find AirMonth
WARNING> --> Cannot find AirDay
INFORMATION> 2019-10-19T16:33:54 MCEBuddy.Engine.ConversionJob --> Destination file F:\Video\TV Shows\Christopher Kimballs Milk Street Television\Season 03\Christopher Kimballs Milk Street Television-S03E06-Chicken Around the World 2019 10 11---.mkv does not exist, continuing with conversion
INFORMATION> 2019-10-19T16:33:54 MCEBuddy.Engine.ConversionJob --> Running custom commands
WARNING> --> Cannot find AirYear
WARNING> --> Cannot find AirMonth
WARNING> --> Cannot find AirDay
WARNING> --> Cannot find AirYear
WARNING> --> Cannot find AirMonth
WARNING> --> Cannot find AirDay
INFORMATION> 2019-10-19T16:33:54 MCEBuddy.Transcode.CustomCommand --> No custom commands found

更奇怪的是,转换任务过程中 MCEBuddy 居然又去读 .TS 文件(见下)。

INFORMATION> 2019-10-19T16:34:46 MCEBuddy.Engine.ConversionJob --> Analyzing video information
INFORMATION> 2019-10-19T16:34:46 MCEBuddy.VideoProperties.VideoInfo --> Reading MediaInfo from F:\Temp\working0\Christopher Kimballs Milk Street Television-S03E06-Chicken Around the World-2019-10-11.ts
INFORMATION> 2019-10-19T16:34:53 MCEBuddy.VideoProperties.VideoInfo --> Supplementing Media information using FFMPEG
INFORMATION> 2019-10-19T16:34:55 MCEBuddy.VideoProperties.VideoInfo --> Reading Original File Media information

有什么想法吗?我会研究一下要么让 KMTTG 别再把 .TS 转码成 MP4,要么让它完成后把 MP4 删掉。

无论哪种方式,我的流程都坏了——MP4 文件完全没有撇号,而 .TS 文件里却有个奇怪的 UTF-8 撇号,没能转成 CP1252(也就是我们常见的 ASCII)。

这是.TS版本文件的MCEBuddy处理日志片段。该文件似乎被重命名,并使用了错误转换的UTF8撇号字符(我无法判断它是撇号还是“智能引号”,即右单引号,而非真正的撇号)。

INFORMATION> 2019-10-19T15:35:40 MCEBuddy.Engine.ConversionJob --> Converting file -> F:\Recorded TV\Tivo\Christopher Kimballs Milk Street Television-S03E06-Chicken Around the World-2019-10-11.TiVo
INFORMATION> 2019-10-19T15:35:43 MCEBuddy.Engine.ConversionJob --> Running custom commands
INFORMATION> 2019-10-19T15:35:43 MCEBuddy.Transcode.CustomCommand --> No custom commands found
INFORMATION> 2019-10-19T15:35:43 MCEBuddy.Engine.ConversionJob --> Getting show information and banner from Internet sources
INFORMATION> 2019-10-19T15:35:43 MCEBuddy.MetaData.VideoMetaData --> Extracting Generic Tags
WARNING> 2019-10-19T15:35:43 MCEBuddy.MetaData.VideoMetaData --> Unable to extract meta data from file F:\Recorded TV\Tivo\Christopher Kimballs Milk Street Television-S03E06-Chicken Around the World-2019-10-11.TiVo. F:\Recorded TV\Tivo\Christopher Kimballs Milk Street Television-S03E06-Chicken Around the World-2019-10-11.TiVo (taglib/tivo)
INFORMATION> 2019-10-19T15:35:43 MCEBuddy.MetaData.FileExtractMetadata --> Extracting TiVO metadata using TDCat
INFORMATION> 2019-10-19T15:35:45 MCEBuddy.MetaData.FileExtractMetadata --> Extracting XML Tags
INFORMATION> 2019-10-19T15:35:45 MCEBuddy.MetaData.VideoMetaData --> Downloading Series details
INFORMATION> 2019-10-19T15:35:45 MCEBuddy.MetaData.VideoMetaData --> Recording Type Show
INFORMATION> 2019-10-19T15:35:45 MCEBuddy.MetaData.VideoMetaData --> Checking TheTVDB
WARNING> --> No match found on TVDB for language en
INFORMATION> 2019-10-19T15:35:46 MCEBuddy.Engine.ConversionJob --> Checking for destination file skip reprocessing
INFORMATION> 2019-10-19T15:35:46 MCEBuddy.Engine.ConversionJob --> Destination file F:\Video\TV Shows\Christopher Kimball’s Milk Street Television\Season 03\Christopher Kimball’s Milk Street Television-S03E06-Chicken Around the World-2019-10-12.mkv does not exist, continuing with conversion

请注意,原始的.TiVo文件(.TS)并没有撇号,但在从TiVo(.TS)文件提取元数据时,节目名称中似乎被插入了撇号。

无论如何,这里也存在两个问题:1)未应用命名/TVDB匹配覆盖;2)未使用nVidia GPU硬件转码H.265 HEVC编解码器。

需要完整的日誌才能了解發生了什麼事。這很可能來自 TiVO 詮釋資料的提取。如果能有原始的 MPG 檔案以及 MAK 金鑰會更好,方便檢查。