Итак, моя проблема определенно вызвана "отсутствующими ключевыми кадрами".
Итак, чтобы исправить это, я сейчас делаю это в два этапа:
(Обратите внимание, что исходная временная метка, из которой я хочу вырезать, составляет 35:58.907
):
# Move forward the cutting timestamp by N seconds. Here, N=6.00
ffmpeg -ss 35:52.907 -i Source.mkv \
-copyts -to 36:43.857 -map 0:0 -map 0:2 \
-c:v libx264 -preset slow -tune film -crf 18 -vf "ass=Source.ass" \
-c:a copy Intermediate.mkv
Этот шаг производит несколько секунд черных кадров в начале, но у него есть раздел , я хочу вырезать из правильно. Затем я проверяю:
# Re-cut the video starting N seconds forward. Here, N=6.00
ffmpeg -i Intermediate.mkv -ss 00:06.000 \
-c:v libx264 -preset slow -tune film -crf 18 \
-c:a copy Destination.mkv
Да, я должен дважды закодировать видео, так что будет некоторое ухудшение, но визуально я не вижу ухудшения, поэтому я думаю, что эта двухэтапная обработка приемлема для моих нужд.
(И если начинают появляться визуальные артефакты, я могу использовать намного меньшую -crf
для первого шага, скажем, 15
или 12
, или - не дай Бог - даже 0
если это необходимо.)