Necesito recortar solo los primeros 1 o 2 segundos de una serie de grabaciones FLV de diferentes longitudes no especificadas. He encontrado muchos recursos para extraer una duración específica de un video (por ejemplo, clips de 30 segundos), pero ninguno para continuar hasta el final de un video.
Ambos intentos solo producen una versión copiada del video, sin el recorte deseado:
ffmpeg -ss 2 -vcodec copy -acodec copy -i input.flv output.flv
ffmpeg -ss 2 -t 120 -vcodec copy -acodec copy -i input.flv output.flv
La idea sobre el segundo era: tal vez si especificaba una longitud más allá de lo posible, simplemente iría al final. No dados.
Sé que no es un problema con los códecs o el uso de segundos en lugar de código de tiempo ya que lo siguiente funcionó de maravilla:
ffmpeg -ss 2 -t 5 -vcodec copy -acodec copy -i input.flv output.flv
¿Alguna otra idea? Estoy abierto a usar otras herramientas de línea de comandos (basadas en Windows), sin embargo, estoy firmemente a favor de ffmpeg ya que ya lo estoy usando para la creación de miniaturas y estoy familiarizado con él.
Si ayuda, mis videos durarán menos de 2 minutos.
ACTUALIZAR:
He cambiado a usar Mencoder ( http://www.mplayerhq.hu/ ) ya que parece que ffmpeg no logrará esto sin alguna piratería adicional.
La sintaxis de Mencoder para lograr lo que me propuse hacer es:
mencoder.exe -ss 2 -oac copy -ovc copy input.flv -o output.flv
mencoder
ejemplo de arriba; o elffmpeg
ejemplo a continuación?Respuestas:
Tratar:
Creo que se supone que el parámetro de entrada es el primero.
fuente
-i
) durante la copia, o incluso la transcodificación con una versión anterior de FFmpeg, emplea la búsqueda de fotogramas clave. Esto es mucho más rápido, pero sacrifica la precisión. Si lo usa como parámetro de salida, el proceso es potencialmente mucho más lento (la entrada se decodifica cuadro por cuadro, incluso para las partes descartadas), pero precisa. Aunque la pregunta es antigua, creo que esta debería ser la respuesta aceptada.Resulta que este comando se recortar el vídeo de 2 segundos activado, como se esperaba:
El problema fue con el intervalo de fotogramas clave en input.flv. Se configuró en 5 segundos, lo que produjo 3 segundos de cuadros negros al comienzo del video (5 - 2 = 3). Desde entonces he cambiado mi intervalo de fotogramas clave a 1 segundo, aunque 2 segundos probablemente también producirían los resultados deseados en mi caso.
ACTUALIZACIÓN: orden
-i
y-ss
parámetros actualizados según la respuesta de Dave, que acepté como crédito.fuente
-vcodec copy -acodec copy
para todos mis comandos de edición. Volver a codificar evitó que los cuadros negros desde el comienzo de mi video o no se cortaran en el lugar correcto (la diferencia de un segundo sin volver a codificar se tradujo en una diferencia de casi 5 segundos en el video). Entonces, terminé reemplazando-vcodec copy
con-vcodec libx264 -crf 0
.-vcodec copy
porque el segmento no se inicia en un fotograma clave. Obtuve una imagen fija o una imagen negra durante N segundos hasta el siguiente fotograma clave. Si realmente vuelvo a codificar, en lugar de copiar, funciona como se esperaba. Entonces, aunque mi entrada y salida son ambas H264, todavía necesitaba volver a codificar (usando en-vcodec libx264
lugar de-vcodec copy
).-i
debe venir antes del-ss
.Use -ss y -to antes de -i así:
fuente
Actualizando esta respuesta, a partir de 2019 el comando ahora es:
fuente