Ok, então meu problema é definitivamente causado por "falta de quadros-chave".
Então, para consertar isso, agora faço isso em dois estágios:
(Observe que o carimbo de data / hora da fonte original do qual eu quero recortar é 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
Esta etapa produz vários segundos de quadros pretos no começo, mas faz ter a seção que eu quero cortar corretamente. Então eu sigo com:
# 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
Sim, tenho que codificar o vídeo duas vezes, para que haja alguma degradação, mas visualmente não vejo nenhuma degradação, por isso acho que esse processamento em duas etapas é aceitável para as minhas necessidades.
(e se os artefatos visuais começarem a aparecer, posso usar um -crf
muito menor para a primeira etapa, digamos 15
ou 12
, ou - Deus me livre - até 0
se necessário. )