開始修剪而非關鍵影格,導致輸出時出現「無影片」

H.264 來源影片,建立了一個轉換工作,嘗試從影片開頭修剪掉 X 秒。

2022-01-04T15:39:01 MCEBuddy.Engine.ConversionJob → 正在修剪錄影
2022-01-04T15:39:01 MCEBuddy.Transcode.TrimVideo → 開始修剪 : 5
2022-01-04T15:39:01 MCEBuddy.Transcode.TrimVideo → 結束修剪 : 5

→ 檢查輸出檔案大小 [KB] → 1,177,094.00
→ FFMpeg 輸出檔案大小 [KB] → 1,177,094.00
2022-01-04T15:39:09 MCEBuddy.Transcode.TrimVideo → TrimVideo 嘗試取代檔案 來源 : C:\Program Files\MCEBuddy2x\working0\The A-Team - s01e02 - Mexican Slayride_ Part 2.ts 暫存 : C:\Program Files\MCEBuddy2x\working0\The A-Team - s01e02 - Mexican Slayride_ Part 2-temp.ts
2022-01-04T15:39:09 MCEBuddy.Engine.ConversionJob → 修剪成功,將修剪參數設為 0 以避免重複修剪

該輸出檔案無法被處理,因此輸出檔案沒有影片。

2022-01-04T15:39:37 MCEBuddy.Transcode.ConvertWithFfmpeg → 命令列參數 → -threads 0 -y -i “C:\Program Files\MCEBuddy2x\working0\The A-Team - s01e02 - Mexican Slayride_ Part 2.ts” -ss 0 -vcodec copy -sn -acodec copy “C:\Program Files\MCEBuddy2x\working0\The A-Team - s01e02 - Mexican Slayride_ Part 2-converted.mp4”
警告> 2022-01-04T15:39:37 MCEBuddy.Transcode.ConvertWithFfmpeg → 未偵測到影片串流,移除對影片串流的支援

不改變任何其他參數,僅移除開始修剪,工作就能成功完成。

似乎我們需要一個選項來在最近的關鍵影格上進行剪輯?

錯誤?

研究似乎表明,我们应该找到距离时长最近的关键帧,然后切到该位置。

2022-01-04T20:58:45 MCEBuddy.AppWrapper.FFmpeg --> Process arguments  -hide_banner -probesize 100M -analyzeduration 300M -y -i "C:\Program Files\MCEBuddy2x\working0\The Expanse - s05e01 - Exodus.ts" -ss 5 -t 3103 -map 0:a -acodec copy -map 0:1 -vcodec copy "C:\Program Files\MCEBuddy2x\working0\The Expanse - s05e01 - Exodus-temp.ts"

该帖子里有不少建议:https://stackoverflow.com/questions/14005110/how-to-split-a-video-using-ffmpeg-so-that-each-chunk-starts-with-a-key-frame

不过,也许有更简单的办法:

文档指出,如果 -ss 放在 -i 之前,它就会起到 seek 的作用……

我找不到办法把顺序反过来——估计得打个补丁才能解决。

我開始在命令列上試玩 CLI 指令與 FFMPEG,結果能重現這個錯誤。遺憾的是,把「-ss」移到輸入檔前面並沒有解決問題。

有趣的是,只要輸出檔不是 TS 格式就能成功。(靈感來自:https://stackoverflow.com/questions/57045900/how-to-find-a-safe-point-for-ss-using-ffmpeg-to-avoid-breaking-a-v-sync)

所以這行會失敗:

ffmpeg -y -ss 5 -i "The Expanse - s05e01 - Exodus.ts" -map 0:a -acodec copy -map 0:1 -vcodec copy "The Expanse - s05e01 - Exodus-temp.ts"

但這行可以:

ffmpeg -y -ss 5 -i "The Expanse - s05e01 - Exodus.ts" -acodec copy -map 0:1 -vcodec copy "The Expanse - s05e01 - Exodus-temp.mp4"

或這行:

ffmpeg -y -ss 5 -i "The Expanse - s05e01 - Exodus.ts" -acodec copy -map 0:1 -vcodec copy "The Expanse - s05e01 - Exodus-temp.mkv"

更新:「跳過重新封裝檔案」可以繞過這個問題,因此確認原因出在 FFMPEG/TS 容器。(除了速度會慢非常多)或許可以新增一個核取方塊,在重新封裝時改用 MP4 或 MKV 而非 TS?

不過這又引發了另一個問題。剪輯片段的開頭似乎會導致字幕消失。:worried:

WARNING> 2022-01-05T07:59:40 MCEBuddy.Engine.ConversionJob --> SKIPPING REMUXING, this may lead to conversion failure since all underlying apps may not support all file formats.
WTV commercial detection is only supported by donator version of Comskip (http://www.kaashoek.com/comskip/).
WARNING> --> CCExtractor failed or no result. Disabling sentence capitalization and retrying
WARNING> --> CCExtractor failed to extract closed captions
WARNING> 2022-01-05T08:00:08 MCEBuddy.Transcode.CCandSubtitles --> No valid SRT file found, retrying with forced DVB detection
WARNING> --> CCExtractor failed or no result. Disabling sentence capitalization and retrying
WARNING> --> CCExtractor failed to extract closed captions
WARNING> 2022-01-05T08:00:18 MCEBuddy.Transcode.CCandSubtitles --> No valid SRT file found
WARNING> 2022-01-05T08:00:18 MCEBuddy.Engine.ConversionJob --> Extracting closed captions failed from original file, trying to extract closed captions from the remuxed file
WARNING> --> CCExtractor failed or no result. Disabling sentence capitalization and retrying
WARNING> --> CCExtractor failed to extract closed captions
WARNING> 2022-01-05T08:00:27 MCEBuddy.Transcode.CCandSubtitles --> No valid SRT file found, retrying with forced DVB detection
WARNING> --> CCExtractor failed or no result. Disabling sentence capitalization and retrying
WARNING> --> CCExtractor failed to extract closed captions
WARNING> 2022-01-05T08:00:37 MCEBuddy.Transcode.CCandSubtitles --> No valid SRT file found
WARNING> 2022-01-05T08:00:37 MCEBuddy.Engine.ConversionJob --> No SRT file found after extraction

需要將原始影片和轉換記錄複製到我們的伺服器,以便我們分析發生了什麼事並進行重現。

也請嘗試將您的 ffmpeg 更新到最新版本,看看是否有幫助。

很高兴@Goose——请私信我上传文件和日志的具体位置,我会立即把它们交给你。

已更新ffmpeg——似乎没起作用。

上傳說明請參考:Welcome to MCEBuddy - README BEFORE POSTING

:man_facepalming:

我会完成的。:slight_smile:

已按要求上传 - 感谢抽空

刚加入,就是为了补充一下。很高兴找到这个帖子,我也遇到同样的问题。对我来说,它与 PlayonCloud 的录制有关。我觉得是他们那边有变动,因为我可以把大约一个月前在 Playon 上录的内容用 MCEBuddy 处理,完全没问题。“跳过重新封装文件”对我无效,会导致音频延迟。不过,只要把片头剪切去掉,就能正常处理,只是会保留 Playon 的片头。

FWIW,如果我改用 MP4 或 MKV,可以手动在 FFMPEG 里直接裁剪,

ffmpeg -ss $TRIM_DURATION -noaccurate_seek -i "$INPUT_FILENAME" -avoid_negative_ts make_zero -map 0 -c copy "$OUTPUT_FILENAME"

+1 赞同 @toadman 的说法。我也能在 PlayOn 录制中通过添加“开始剪切”和“结束剪切”复现此问题;在相同节目的直播电视录制(WMC / .wtv)中无法复现。

此问题出现在两台不同的机器上,一台是旧硬件,另一台是新硬件。无论是转换为 HEVC、MP4 还是不转换,都会失败。几周前两台机器都运行正常,除了上述操作外没有其他改动。

如需上传日志文件或录制内容,请告诉我。

@dlasher 如果這不是你遇到的問題,請告訴我,我不想用另一個問題來干擾你的討論串。

完全相同的问题,视频来自 PlayOn,感谢检查 @schnood

我想我应该再举一个例子。我已经把日志文件上传到了mcebuddy服务器上,如果这有帮助的话。与其他几个案例类似,当处理一个带有“Cut Start”的Playon Cloud录制文件时,处理后没有视频显示。第二次运行时不进行剪切,它就能正常处理并播放。出于好奇,我重新运行了一个桌面版(v4.5)的Playon文件,设置了4秒的Cut Start,结果播放正常。

上传的日志文件参考(也压缩在这里):
Log files.zip(695.1 KB)

日志 #1:来自一个Playon Cloud录制文件,设置了6秒的Cut Start。处理完成后,没有视频显示。

日志 #2:来自同一个源文件,但没有进行剪切。处理后可以正常播放。

日志 #3:来自Playon桌面版(几个月前,使用v4.5)。我设置了4秒的Cut Start,处理后可以正常播放。

@Goose,有什么额外的信息会有帮助吗?这是否被记录为“正式”问题?

我也遇到同樣的問題。

以下是關於此問題的更多資訊與暫時解決方法。

我有一部使用 Playon 錄製的電視節目。

我將 .mp4 檔案透過轉檔工具再轉成 .mp4(目的是補齊原始檔案中 MCEBuddy 無法處理的缺失段落)。

接著我用 MCEBuddy 剪掉開頭與結尾各 5 秒。

這部分運作正常。

然後我用 MCEBuddy 的 Comskip 功能移除所有廣告。

這部分也運作正常。

看來 Playon 已經變更,不再寫入 MCEBuddy 預期的所有段落。

在官方修復前,我會持續採用上述流程。

希望對其他人也有幫助。

感謝您提供的日誌與範例檔案。看起來最新版 PlayOn 產生的 MP4 檔案並未符合規格,含有錯誤,導致 ffmpeg 在嘗試將其從 MP4 重新封裝(remux)為 TS 以便處理檔案時,以及在嘗試修剪開頭時出現問題。在這個過程中,它遺失了關於視訊串流的一些關鍵中繼資料,因此無法播放。

短期解決方案是在「轉換工作 → 專家設定」頁面中啟用「跳過重新封裝檔案」選項,避免 MCEBuddy 將 MP4 重新封裝為 TS,而是直接處理 MP4 檔案——這應該可以避免此問題。

長期解決方案則是向 PlayOn 回報此問題,讓他們進行修正,因為 @scott_mb 已測試過,在 PlayOn 4.5 版中運作正常。

这个群里有人要去联系Playon吗?

我聯絡了 Playon 支援。由於原始影片可以正常播放,他們並不認為這是他們那邊的錯誤。