MCEBuddy 自訂剪輯與字幕

我正在尝试使用 MCEBuddy Custom Cuts,虽然看起来 EDL 正常工作并且文件按预期生成,但在保留字幕方面似乎存在问题。

查看日志文件,似乎探针能够从源文件中找到字幕,但它们并没有进入临时的 working0 工作文件夹中的 .ts 副本:

2019-09-25T12:02:50 MCEBuddy.AppWrapper.FFmpeg --> Launching process C:\Program Files\MCEBuddy2x\ffmpeg\ffmpeg.exe
2019-09-25T12:02:50 MCEBuddy.AppWrapper.FFmpeg --> Process arguments  -hide_banner -probesize 100M -analyzeduration 300M -y -i "E:\Inbound\NFL Football\NFL Football - S2019E2037 - Los Angeles Chargers at Detroit Lions.m4v"  -ss 0 -vcodec copy -acodec copy -map 0:a -map 0:0 -f mpegts "C:\Program Files\MCEBuddy2x\working0\NFL Football - S2019E2037 - Los Angeles Chargers at Detroit Lions.ts"
2019-09-25T12:02:50 MCEBuddy.AppWrapper.FFmpeg --> UI Session Admin Process : True
2019-09-25T12:02:50 MCEBuddy.AppWrapper.FFmpeg --> Starting process as a UISession process with Admin privileges. This requires atleast 1 user to be logged into the system (remote desktop or locally)
2019-09-25T12:02:50 MCEBuddy.AppWrapper.FFmpeg --> Setting process priority to Normal
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg --> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'E:\Inbound\NFL Football\NFL Football - S2019E2037 - Los Angeles Chargers at Detroit Lions.m4v':
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->   Metadata:
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     major_brand     : mp42
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     minor_version   : 512
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     compatible_brands: isomiso2mp41
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     creation_time   : 2019-09-15T21:33:58.000000Z
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     encoder         : MCEBuddy
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     date            : 1900-01-01T12:00:00Z
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     RecordingTimestamp: 1900-01-01T12:00:00
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     SeriesPremiere  : 1900-01-01T12:00:00
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     CopyProtected   : False
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     title           : Los Angeles Chargers at Detroit Lions
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     show            : NFL Football
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     season_number   : 227
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     episode_sort    : 245
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     media_type      : 10
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->   Duration: 02:52:45.53, start: 0.000000, bitrate: 12369 kb/s
--> Video duration=10365.53
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     Stream #0:0(und): Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 12199 kb/s, 29.67 fps, 29.97 tbr, 90k tbn, 29.97 tbc (default)
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     Metadata:
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->       creation_time   : 2019-09-15T21:33:58.000000Z
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->       handler_name    : VideoHandler
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     Metadata:
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->       creation_time   : 2019-09-15T21:33:58.000000Z
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->       handler_name    : SoundHandler
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     Stream #0:2(spa): Subtitle: mov_text (tx3g / 0x67337874), 1920x162, 0 kb/s (default)
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     Metadata:
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->       creation_time   : 2019-09-15T21:33:58.000000Z
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->       handler_name    : SubtitleHandler
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg --> Output #0, mpegts, to 'C:\Program Files\MCEBuddy2x\working0\NFL Football - S2019E2037 - Los Angeles Chargers at Detroit Lions.ts':
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->   Metadata:
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     major_brand     : mp42
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     minor_version   : 512
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     compatible_brands: isomiso2mp41
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     media_type      : 10
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     episode_sort    : 245
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     date            : 1900-01-01T12:00:00Z
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     RecordingTimestamp: 1900-01-01T12:00:00
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     SeriesPremiere  : 1900-01-01T12:00:00
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     CopyProtected   : False
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     title           : Los Angeles Chargers at Detroit Lions
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     show            : NFL Football
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     season_number   : 227
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     encoder         : Lavf58.24.100
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     Metadata:
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->       creation_time   : 2019-09-15T21:33:58.000000Z
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->       handler_name    : SoundHandler
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     Stream #0:1(und): Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 12199 kb/s, 29.67 fps, 29.97 tbr, 90k tbn, 90k tbc (default)
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->     Metadata:
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->       creation_time   : 2019-09-15T21:33:58.000000Z
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->       handler_name    : VideoHandler
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg --> Stream mapping:
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->   Stream #0:1 -> #0:0 (copy)
2019-09-25T12:02:51 MCEBuddy.AppWrapper.FFmpeg -->   Stream #0:0 -> #0:1 (copy)

我还附上了完整的日志文件。请问是否有非常明显的地方被我忽略了?提前感谢您的帮助!
NFL Football - S2019E2037 - Los Angeles Chargers at Detroit Lions.m4v-Football-2019-09-25T12-02-07.0358516-04-00.log (3.3 MB)

進一步研究後,我剛好有一個腳本,是因為我最近遇到的另一個問題而用來提取 .srt 檔案的。使用這個腳本,我可以提取 .srt 檔案,這個檔案在加入佇列時會被 MCEBuddy 辨識。不幸的是,.srt 檔案似乎只會被複製,而不會被嵌入。

我接著必須將 .srt 上傳到 Plex,因為基於某些原因,它並不會自動被辨識與更新。

這實在不太理想,而且步驟繁瑣。我會很感謝任何進一步的想法或建議來改善這個流程。:+1:

您尚未在转换任务中启用“精确提取字幕和隐藏式字幕”选项,因此它不会提取字幕(因此即使您启用了嵌入字幕的选项,也不会嵌入它们)

隐藏式字幕 →

啊,不幸的是,这并没有解决问题。在转换任务中勾选“提取隐藏字幕和字幕”确实会提取出一个 .srt 文件,并将其与输出的 .mp4 文件放在同一文件夹下,当我输入 .ts 文件时。生成的 .mp4 文件也确实嵌入了字幕。

(我应该指出,即使没有勾选“提取隐藏字幕和字幕”,字幕也会被嵌入到 .mp4 中。)

到目前为止,一切顺利。

然而,当我进一步使用 Custom Cuts 创建额外的编辑并生成 .edl 文件,然后“用 MCEBuddy 处理”时,文件会被加入队列,并使用相同的转换任务进行处理,但提取出的 .srt 文件从未被嵌入。

也许我哪里做错了?

請提供日誌

Boh!抱歉。

以下是第一次(成功,運作正常)轉換的日誌,從 .ts.m4v

NFL Football - S2019E2037 - Los Angeles Chargers at Detroit Lions.ts-Football-2019-09-27T07-52-33.2881663-04-00.log (7.3 MB)

這會產生一個完全符合預期的 .m4v,其中包含內嵌字幕。因此,既然我已經在轉換任務中勾選了「Extract closed captions and subtitles」,輸出目錄現在也會有對應的 .srt 檔案。

接著我用 Custom Cuts 開啟這個新產生的 .m4v,設定剪輯點,然後儲存 .edl

所以現在輸出目錄裡有:

  • .m4v 檔案
  • .srt 檔案
  • .edl 檔案

請記住,.m4v 檔案如預期包含內嵌字幕。

然後我在 Custom Cuts 點擊「Process with MCEBuddy」,產生以下輸出:

NFL Football - S2019E2037 - Los Angeles Chargers at Detroit Lions.m4v-Football-2019-09-27T10-47-49.2347885-04-00.log (2.5 MB)

現在我有上述 3 個檔案,以及一個從上述處理產生、較新的 .srt 檔案,檔名主體後面多了一個 0NFL Football - S2019E2037 - Los Angeles Chargers at Detroit Lions0.srt)。

此外,.m4v 檔案不再像 .ts.m4v 轉換時那樣包含內嵌字幕。

如需進一步診斷此問題,請告知是否需要任何額外資訊。

您的 SRT 文件或视频文件有问题,MCEBuddy 无法添加它:

2019-09-27T11:18:58 MCEBuddy.AppWrapper.MP4Box → Launching process C:\Program Files\MCEBuddy2x\mp4Box\mp4box.exe
2019-09-27T11:18:58 MCEBuddy.AppWrapper.MP4Box → Process arguments -add “C:\Program Files\MCEBuddy2x\working0\NFL Football - S2019E2037 - Los Angeles Chargers at Detroit Lions.srt”:hdlr=sbtl:lang=eng “C:\Program Files\MCEBuddy2x\working0\NFL Football - S2019E2037 - Los Angeles Chargers at Detroit Lions.m4v”
2019-09-27T11:18:58 MCEBuddy.AppWrapper.MP4Box → UI Session Admin Process : False
2019-09-27T11:18:58 MCEBuddy.AppWrapper.MP4Box → Setting process priority to Normal
→ Process exited with code -1073741515

如果您能上传原始的 SRT、EDL 和 M4V 文件,我们可以进一步调查。

1 个赞

太好了!感謝您的協助。我已將檔案提供給您審閱,連結如下:

如果需要任何其他資訊或文章來進一步排解/偵錯此問題,請告訴我。

我有点困惑。根据你上面附带的日志文件,它显示了一个TS文件被转换为M4V,并且正如我从日志中指出的那样,最终的M4V文件中没有嵌入字幕轨道。

然而,你上传的M4V文件却嵌入了字幕轨道,而且我可以播放它。那么,你上传的是什么文件?

對於這裡的延遲,@RBoy,深感抱歉。我前陣子出城,昨天才回來,今天早上已經為你上傳了更多資訊。

再次重申,在我們討論的情境中,總共會進行兩次轉檔:

1.(標記為 First.ts.m4v。當 Plex 進行後製處理,或直接把 .ts 檔案加入 MCEBuddy 佇列時,MCEBuddy 就會執行這次轉檔。每次進行這個轉檔時,結果都完全符合預期:檔案會被轉換,字幕也會內嵌到最終的 .m4v 檔案裡。請注意,這個過程並不需要勾選 Extract closed captions and subtitles 就能正常運作。順帶一提,當我說「內嵌」字幕時,是指它們確實存在於 .m4v 檔案中;如果我將這個 .m4v 複製到全新的資料夾,並透過 Handbrake 進行檢查,也能看到這些字幕:

2.(標記為 Second.m4v.m4v。這次轉檔會把第一次轉檔的輸出(已內嵌字幕)作為輸入,先用 Custom Cuts 建立 .edl 檔,再透過 Process with MCEBuddy 將其送入 MCEBuddy 佇列。雖然第一次的輸出確實帶有內嵌字幕,但無論是否勾選 Extract closed captions and subtitles,這些字幕都不會出現在第二次轉檔的輸出中。

如前所述,我又從頭建立了一個全新的範例,並已上傳至上方共享資料夾(先前的範例也已封存)。現在該共享資料夾中應該共有三個資料夾:

  1. .Archive 裡是之前的檔案,僅供歷史參考,可忽略。
  2. First 包含輸入(.ts)、輸出(.m4v)以及上述 First 轉檔的 .log 檔。也就是 .ts.m4v 的成功轉檔,會產生內嵌字幕。此轉檔的輸出會被複製到新資料夾,作為下一個(Second)轉檔任務的輸入。
  3. Second 包含上述 Second 轉檔的輸出,即 .m4v.m4v 的轉檔及其 .log 檔,由 Custom Cuts 產生。此資料夾中的 .m4v 檔案即為字幕無法內嵌的問題檔案。

總結來說,你應該會發現 First\NFL Football - S2019E2069 - Kansas City Chiefs at Detroit Lions.m4v 帶有內嵌字幕,而 Second\NFL Football - S2019E2069 - Kansas City Chiefs at Detroit Lions.m4v 則沒有。

如需更多資訊,請隨時告知,我會盡力協助。

我想跟进一下这个问题。如果我还能提供任何有助于诊断和/或解决它的信息,请告诉我。了解我已提供的信息是否有用,以及您是否已利用这些数据在本地复现了该问题,也将非常有价值。谢谢!

我從日誌中看到,它無法將字幕加入您的檔案:

→ 程序以代碼 -1073741515 結束

當我在這裡使用您的設定和原始 M4V 檔案嘗試重現時,一切正常:

2019-10-16T13:53:27 MCEBuddy.AppWrapper.MP4Box → ISO 檔案寫入: |====================| (100/100)
2019-10-16T13:56:29 MCEBuddy.AppWrapper.MP4Box →
→ 程序以代碼 0 結束
2019-10-16T13:56:38 MCEBuddy.Engine.ConversionJob → 完成為檔案加入字幕與章節,檔案大小 [KB] 10,283,663.00

您的設定似乎有某些問題導致 MP4Box 無法加入字幕。我看到您有足夠空間,所以我不確定原因。我只能建議您嘗試更換暫存資料夾的硬碟,或使用不同的電腦。

好的,感谢你的帮助和回复,@RBoy……我还在努力搞懂这里的各种设置,请多包涵。在第一个转换任务里,我同样看到 MP4Box 报了这个错误码,但它却成功把字幕嵌进去了。

我一直以为 Handbrake 也能用来嵌入字幕,所以还不能百分百确定是 MP4Box 的问题(至少目前还没完全弄明白)。这里面的环节确实有点多。:sweat_smile:

Handbrake 用來燒錄字幕(而非嵌入)。

MP4Box 是最後一步,用來嵌入字幕;日誌顯示完成後檔案裡沒有字幕,問題就出在這裡。我不確定原因,就像我說的,你的檔案與設定檔在我這裡運作正常。你可以換顆硬碟或換台電腦試試看。

我又看了一下你的日誌,在第一個案例中,字幕是以隱藏字幕(closed captions)形式內嵌在 TS 串流裡。你當時使用的是自訂設定檔,指示 HandBrake 使用這些內建的隱藏字幕並保留它們,因此才能正常運作:

2019-09-27T08:19:21 MCEBuddy.AppWrapper.Handbrake → + subtitle tracks:
2019-09-27T08:19:21 MCEBuddy.AppWrapper.Handbrake → + 1, español, Closed Caption [CC608]

你可以嘗試在專家設定中啟用「跳過重新封裝(Skip remuxing)」選項,讓 HandBrake 直接處理原始 M4V 檔案,而非第二個案例中被重新封裝的 TS 檔案;這樣它或許就能偵測到內建字幕並加以利用。

啊,那我确认一下,你是说日志显示字幕没有被嵌入,但实际上最终文件里确实嵌入了字幕吗?我可以用 Handbrake 或 VLC 打开 First\\NFL Football - S2019E2069 - Kansas City Chiefs at Detroit Lions.m4v,确实能看到第一次转换任务后字幕被嵌入了。同样,这个任务的日志文件里也出现了你之前提到的与 Second 相同的错误代码。

遗憾的是,我手边没有其他机器/环境可以立即测试,只能看看能否在当前配置下搞定。

在第一次轉換中,你的原始檔案是含有隱藏式字幕的 TS 檔。MCEBuddy 會將這些字幕提取成 SRT 檔,但由於 MP4Box 失敗,導致無法將其封裝回去。

不過你使用了自訂設定檔,而該設定檔指示 HandBrake 在轉檔時尋找隱藏式字幕;HandBrake 會在 TS 串流中找到這些已混流的隱藏式字幕,並自動將其轉成內嵌的 SRT 檔。

第二次轉換時,你從一個已內嵌 SRT 的 M4V 檔開始,MCEBuddy 會先提取 SRT,並將 M4V 重新封裝成 TS 格式以便處理(此時已不含任何字幕或隱藏式字幕),因此當 HandBrake 處理時偵測不到任何字幕,最終 MCEBuddy 嘗試把字幕放回容器時就會在你這邊失敗。

你有三種選擇:

  1. 換一台 MP4Box 不會出錯的電腦(我這邊 Windows 10 64 位元運作正常)。
  2. 為第二次轉換任務啟用 Skip remuxing 選項(這樣 MCEBuddy 就不會把 M4V 重新封裝成 TS,HandBrake 拿到原始 M4V 時或許就能偵測並保留內嵌的 SRT)。
  3. 修改第二次轉換的設定檔,讓 HandBrake 使用 MCEBuddy 提取出的 SRT 檔(與重新封裝後的 TS 檔一起放在暫存資料夾),並將其內嵌到轉換後的 M4V。請在設定檔的 handbrake-video 行加入 --srt-file <source_without_ext>.srt。詳情請參考插入特殊命令,了解 <source_without_ext> 的運作方式。
1 个赞

好的!现在我明白了,@RBoy。感谢你抽出时间并有耐心向我解释。我相信我已经掌握了足够的信息,可以继续下一步了。我会先尝试看看能否让 --srt-file 命令生效;如果不行,再研究一下机器抛出 MP4Box 错误的原因。

再次感谢你以及那里的所有人,感谢你们在这个产品上所做的出色工作——更重要的是——感谢你们对它的支持!:+1:

1 个赞

不客氣,花點時間幫我們宣傳一下

1 个赞

在尝试过程中发生了一件有趣的事。:sweat_smile: 我在回顾这个帖子时,似乎漏掉了你之前的帖子,以及随后的建议。

我确实试着新建了一个转换任务,并设置了SkipRemux=True。当我用第一个任务生成的.m4v文件运行时,字幕确实被正确导出了,好耶!然而,它似乎并没有尊重由Custom Cuts创建的.edl文件,唉。

所以,我想看看这里有没有什么显而易见的地方需要考虑。我喜欢这种方法的一点是,我可以关闭“提取隐藏字幕和字幕”选项,这样每次转换后就不会多出一个额外的文件。