Quero que meu site permita que os usuários criem com precisão seus próprios clipes a partir de um vídeo de origem que forneço.
Eu tenho um arquivo de vídeo de origem que primeiro desejo converter para algo adequado para um site:
Input #0, matroska,webm, from 'source.mkv':
Duration: 00:28:18.57, start: 0.000000, bitrate: 10183 kb/s
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 48 tbc (default)
Stream #0:1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s (default)
Eu uso o ffmpeg para convertê-lo assim:
ffmpeg -i source.mkv -c:v libx264 -c:a aac -strict experimental -vf scale="960:-1" source.mp4
Assistir a este vídeo de volta é de boa qualidade e tamanho de arquivo pequeno o suficiente para minhas necessidades, e carrega / reproduz no meu site.
Eu tenho uma página da web que permite que os usuários selecionem um ponto de partida e um ponto final neste vídeo - e criem um clipe. Aqui está um exemplo do comando ffmpeg que eu uso para isso:
-ss 577.920 -i source.mp4 -t 011.980 -codec:v copy -codec:a copy -vf scale="960:-1" clip1.mp4
O problema é que o clipe nem sempre é preciso com tempo suficiente. Normalmente, o áudio é preciso o suficiente, mas o vídeo para meio segundo mais cedo ou algo assim.
Existe alguma maneira de tornar isso preciso e em sincronia, digamos, 0,2 segundos?
Edição: Adicionar -force_key_frames 00:00:00.2
não ajudou.
Edição: Eu mudei o recorte para usar em -c:v libx264 -c:a aac -strict experimental
vez de -codec:v copy -codec:a copy
com bons (ish) resultados.
O arquivo pode ser reproduzido externamente sem problemas - mas quando eu o carrego no meu elemento de vídeo html5 e o reproduzo - a última parte do vídeo (o áudio é bom) congela. A última parte que congela é menor que um segundo.
Devo tentar com outro codificador de vídeo? Qual é a melhor alternativa para libx264? Tendo em mente, provavelmente vou querer que isso seja publicado em um site público.
Mas espere, o fato de ele ser reproduzido com precisão sem problemas com um player como MPC ou Windows Media Player sugere que é um problema com o Google Chrome ou o elemento de vídeo HTML? Ou estou usando uma codificação não suportada ou algo assim?