NVIDIA、MCEBuddy 还是 Comskip?

我遇到了一个问题,无法确定是否与我的 Nvidia、MCEBuddy 或 Comskip 设置有关。我在笔记本上用 Happauge 的 HD PVR 2 录制 1 小时电视节目,录出来是 H.264 编码(在 MCEBuddy 里查看媒体信息确认过),但文件属性显示为 MPEG-2 TS Video (.ts)。系统为 Windows 7 Pro 64 位,CPU 是 Intel Core i5-3230M 2.6 GHz,独显为 NVIDIA NVS 5200M,同时也有核显 Intel HD Graphics 4000。我目前用的是 MCEBuddy 2.4.8,并花了 10 美元买了 Donator 版(0.82.003),后来才知道 2.4.8 已经自带 Donator 版,这 10 美元其实不必花。

在论坛看了不少帖子后,我把 MCEBuddy 按以下方式设置:在 Nvidia 控制面板里把 MCEBuddy 指定给“高性能 NVIDIA 处理器”,以利用独显而非核显。最初效果显著,总处理时间从 6 小时降到 2.5 小时。

第一次转换时,日志显示:广告扫描 36 分钟、去广告 5 分钟、转码 1 小时 39 分钟,总计 2.5 小时,比最初的 6 小时好,但我看到有人能把 1 小时节目 15–20 分钟搞定。我把这次日志保存为 File 1 并附上。

接着我试了 Donator 版 Comskip,把它放到独立文件夹,并在 MCEBuddy 系统设置里指向该路径。

再转另一部 1 小时节目时,广告扫描与转码的时间对调:广告扫描 1 小时 30 分钟、去广告 5 分钟、转码 46 分钟,总耗时 2 小时 41 分钟。我把这次日志保存为 File 2。File 1.log (2.1 MB)
*更新:File 2 的日志有 70.5 MB,传不上来。这也是个奇怪的地方,File 1 只有 2 MB。

我现在完全不知道下一步该试什么?是我的设置问题,还是 H.264 本身处理就慢?要不要先用别的软件把 H.264 转成 MP4,再拿 MCEBuddy 去广告?任何建议都非常感谢,谢谢!

压缩后再上传

扫描时间变长,大概率是因为你用的是免费版 comskip(非捐赠版)。请从日志里确认一下,这是常见错误。

至于转码,它没用上你的 NVIDIA 硬件,因为检测不到:

2018-02-23T20:28:36 MCEBuddy.AppWrapper.NVidiaQuery → C:\Program Files\MCEBuddy2x\nvidia\nvidiaQuery.exe 正在启动…
2018-02-23T20:28:36 MCEBuddy.AppWrapper.NVidiaQuery → CUDA Device Query (Runtime API) version (CUDART static linking)
2018-02-23T20:28:36 MCEBuddy.AppWrapper.NVidiaQuery → cudaGetDeviceCount returned 30
2018-02-23T20:28:36 MCEBuddy.AppWrapper.NVidiaQuery → -> unknown error
2018-02-23T20:28:36 MCEBuddy.AppWrapper.NVidiaQuery → Result = FAIL
→ Process exited with code 1
WARNING> 2018-02-23T20:28:38 MCEBuddy.AppWrapper.NVidiaQuery → nvENC NVIDIA 驱动未检测到或驱动版本过旧
WARNING> → 检测 NVIDIA 硬件编码器能力出错

你的驱动没有报告 CUDA 能力,请尝试安装推荐的 NVIDIA 驱动。

它正在用 HandBrake 的软件编码器(HandBrake 报告无 Intel CUDA 支持),所以耗时 1.5 小时

2018-02-23T20:28:39 MCEBuddy.AppWrapper.Handbrake → [20:28:39] Intel Quick Sync Video support: no

2018-02-23T20:28:48 MCEBuddy.AppWrapper.Handbrake → [20:28:48] + encoder: H.264 (libx264)

如果你查看 File 1 的日志文件,会发现它显示使用了 Comskip 的 Donator 版本。File 2 的日志也同样显示了这一点,我现在把 File 2 作为 zip 附件上传(谢谢你提供的建议!)。生成 File 1 后,我直接从戴尔官网下载了显卡驱动更新,因为我的笔记本是 Dell Latitude E6530,正如你在 File 2 日志里看到的,CUDA 已被检测到。

File 2.zip (684.8 KB)

谢谢你指出日志里需要关注的关键点。我想我可能已经找到了问题所在。生成 File 1 时,我使用的是 MCEBuddy 2.4.8,该版本已内置 Donator 版 Comskip,因此广告扫描耗时 36 分钟。当时我没意识到 2.4.8 已经自带 Comskip。网上和论坛里关于 2.4.8 的信息让我困惑,因为一直说如果要转换 H.264 文件就得用 Donator 版 Comskip,所以我以为必须捐 10 美元才能获得 Donator 版;显然 2.4.8 已经内置,这在 File 1 的日志里也得到了确认。

在转换 File 2 之前,我单独下载了 Comskip 的 Donator 版并解压到 C:\Comskip。然后在 MCEBuddy 设置里把 Comskip 路径指向了这个目录。
image

这样做之后,我怀疑 MCEBuddy 是不是同时“看到”了两个 Comskip(这样说有道理吗?),导致广告扫描时间变长。接下来我准备把 MCEBuddy 里指向 C:\Comskip 的设置清空,再转换一个文件,看看广告扫描时间是否有变化。转换完成后我会汇报结果。

我查看了这两个转换及其源文件(虽然不同),但它们在特性上(大小、时长、格式、编码、帧率、码率等)非常相似,因此我假设它们在比较时是相同的。

其他所有参数看起来也一致。

使用内置的 Comskip,我看到处理速度约为 100fps

2018-02-23T20:15:48 MCEBuddy.AppWrapper.Comskip → 215069 帧在 2188.00 秒内解码完成(98.29 fps)

而使用外部 Comskip,我看到处理速度约为 40fps

2018-02-25T12:41:04 MCEBuddy.AppWrapper.Comskip → 219470 帧在 5417.97 秒内解码完成(40.51 fps)

这基本上说明内置 Comskip 比外部 Comskip 快约 250%。

原因可能有以下几点:

  1. 内置 Comskip 是定制构建,可能使用了更新、更快的库来处理视频。
  2. Comskip INI 文件不同:默认情况下,内置版本使用自带的 Comskip.ini,而外部 Comskip 使用外部目录中的 comskip.ini。

如果你想排除 Comskip.ini 的差异,可以复制/替换任一 INI 文件,使两种方法使用相同的 INI,这样就能确认是否是内置 Comskip 更快。

我进入 MCEBuddy 的设置,把 Comskip 路径中的 C:\ComSkip\comskip.exe 删除,随后干脆把整个 C:\ComSkip 文件夹删掉,确保它不会再被检测到。接着我又转换了另一个与之前两个类似的文件,结果依旧:广告扫描耗时一个多小时,Comskip 显示约 46 fps。

我决定从头开始:卸载 MCEBuddy 2.4.8,并删除残留的所有日志、配置文件等。然后重新安装 MCEBuddy,不做任何设置改动,直接转换附件中的文件。虽然总分析加转换时间缩短到了 22 分钟,非常理想,但广告扫描仍花了 1 小时 18 分钟,Frames Decoded 显示 46.04 fps。日志中可以看到这是 Donator 版本的 Comskip;由于是重装,这自然是 MCEBuddy 自带的 Comskip,同时也确认 CUDA 已启用并正在使用。随信附上 Comskip.ini 文件,方便查看是否有需要调整的地方。再次衷心感谢您的帮助,谢谢!

File 3.zip (565.7 KB)
comskip.ini (6.2 KB)

所以現在我有點困惑,第一次內建的 comskip 跑在 100fps,而 donator 版本是 46fps。第二次內建的 comskip 卻只有 46fps?

如果是這樣,我唯一能想到的就是你電腦裡有其他程序正在占用資源,導致 Comskip 無法全力運作。你可以檢查一下背景正在執行哪些程序。

另外,試著在 comskip.ini 裡把這個值改掉:

hardware_decode=0

把它改成 1 來啟用硬體解碼。這招不一定有效,預設是關閉的,因為不是每套系統都支援硬體解碼,但如果你的支援,速度可能會大幅提升。

也試著把 MCEBuddy 的處理程序優先順序調成「高」,在主畫面右下角。

我把 hardware_decode 改成 1,並把 MCEBuddy 的處理優先順序調到「高」,但還是沒用。廣告掃描花了一小時多。我回頭檢查原始貼文,卻看不出為什麼 File 1 的廣告掃描只要 36 分鐘,現在卻超過一小時。File 1 用的是隨 Donator 版附贈的 Comskip。唯一可能想到的是我的錄影檔案變了,但我不知道怎麼變的。我從開始使用 Hauppauge HD PVR 2 後就沒改過設定。記得曾在某處讀到,有時候電視台會改變廣播訊號,連帶改變廣告識別方式,或許 File 1 和 File 2 之間、以及後續錄影時,訊號有了變化。我看過有人分享針對美國特定地區、有線電視業者的 Comskip INI 檔,或許我會去找幾個來試試看。既然問題出在 Comskip,我會去那邊的論壇問問,看有沒有人能找出原因。

再次感謝你的幫忙,非常感激。如果找到解決方法,我會貼在這裡。