Para realizar tudo o que queremos fazer, teremos que fazer duas coisas em ordem.
1. sobrepõe timestamps precisos no vídeo
2. reduza o tempo do vídeo mantendo os timestamps originais
O ffmpeg pode fornecer uma sobreposição de tempo por meio do filtro de texto draw
Etapa 1
ffmpeg -i input.mp4 -s 1920x1080 -vf "drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:expansion=normal: text='frame %{n}\: pts=%{pts \: hms}': fontcolor=white:fontsize=48: x=7: y=7" -vcodec libx264 -vb 2000k -strict -2 -preset ultrafast -f mp4 output.mp4
Você pode ajustar a localização do timecode ajustando os parâmetros x=
e y=
após o parâmetro fontsize. O ffmpeg é um programa de processamento de vídeo tremendamente poderoso e não vou fingir que conheço todas as opções diferentes de cor, mas ainda tenho que descobrir muita coisa que precisava fazer com arquivos de mídia que não consegui realizar com ele e está incluído ffplay
media player diferente de talvez isso
Os binários pré-compilados do FFMpeg e a documentação podem ser encontrados aqui Eu usei o ffmpeg versão 2.8.10-0ubuntu0.16.04.1
Etapa 2
Diminuir o vídeo pode ser feito usando o filtro de vídeo do filtro setpts. Esse filtro funciona alterando o timestamp de apresentação de cada quadro, portanto, você desejará fazer esse segundo para reter os pts precisos da sobreposição de tempo discutida acima. Vamos começar copiando nosso arquivo de saída original para um novo arquivo de entrada com o comando cp output.mp4 i2.mp4
Precisamos usar um fator maior que 1 para desacelerar o vídeo. Observe que esse filtro não afetará o áudio, então adicionei o parâmetro -an para extraí-lo no seguinte comando:
ffmpeg -i i2.mp4 -an -vf "setpts=2.0*PTS" output.mp4
Isso resulta em um vídeo que é executado na velocidade média (leva o dobro do tempo para reproduzir) do original.
Se alguma coisa não estiver clara sobre essa resposta, por favor, deixe-me um comentário e eu farei o meu melhor para esclarecer.
Fontes
-
Fórum de suporte do FFmpeg: vídeo de saída de timestamp
-
testando