Utilizo esto para cortar una parte de un archivo MP4:
ffmpeg -i input.mp4 -vcodec copy -acodec copy -ss 00:36:18 -to 00:39:50 output.mp4
Funciona bien pero la imagen del vídeo siempre se congela al principio durante 1 segundo.
No importa de qué archivo de vídeo intente cortar una parte, el vídeo tarda como 1 segundo en comenzar.
Aquí hay un ejemplode lo que estoy viendo.
Respuesta1
El problema podría ser que el vídeo intenta cortarse basándose únicamente en fotogramas clave y no entre fotogramas y su tiempo inicial 00:36:18
es unos segundos antes de un fotograma clave. La solución debería ser utilizar la -copyinkf
opción.que se describe en el manual como:
Al copiar la secuencia, copie también los fotogramas no clave que se encuentran al principio.
Entonces tu comando que se ve así:
ffmpeg -i input.mp4 -vcodec copy -acodec copy -ss 00:36:18 -to 00:39:50 output.mp4
Luego sería necesario ajustarlo para que se vea así y -copyinkf
mezclarlo:
ffmpeg -i input.mp4 -vcodec copy -acodec copy -copyinkf -ss 00:36:18 -to 00:39:50 output.mp4
Respuesta2
La marca de tiempo desde la que está copiando se encuentra entre fotogramas clave; el uso de -vcodec copy siempre dará como resultado este comportamiento si copia un códec entre fotogramas y su entrada no comienza en un fotograma clave.
Sus opciones son realizar una codificación completa (es decir, sin copia -vcodec) o elegir una marca de tiempo diferente para buscar. Puede encontrar la ubicación de todos los fotogramas clave usando ffprobe, por ejemplo.
ffprobe -select_streams v -show_frames -print_format csv -show_entries frame=key_frame,pkt_dts_time input.mp4 | grep "frame,1"
la tercera columna contiene las marcas de tiempo (en segundos) de todos los fotogramas clave; desea el más cercano a su marca de tiempo objetivo, pero no después.
Respuesta3
Yo también tuve este problema, no tengo ningún conocimiento de por qué sucedió esto y cómo lo solucioné. Solo sé que este código me lo solucionó:
ffmpeg -ss 00:00:00 -to 00:00:10 -i input.mp4 -c:v copy -c:a copy output.mp4