Pregunta

Tengo un sitio que permite a las personas cargar archivos de video grandes en varios formatos (avi, mp4, mkv y flv). Necesito generar una muestra de 1 minuto del archivo más grande que se ha cargado, y la muestra debe estar en el mismo formato, tener las mismas dimensiones de cuadro y velocidad de bits que el archivo original. ¿Hay alguna manera de simplemente cortar una sección del archivo en un nuevo archivo? Preferiblemente en ffmpeg (o cualquier otra herramienta si ffmpeg es imposible).

¿Fue útil?

Solución

Primero querrás entender cómo funcionan realmente los archivos de video. Aquí hay un conjunto de tutoriales que explican que: Overly Guía simplista de video en Internet .

Luego, puede probar una variedad de herramientas que pueden ayudar a cortar una muestra. Uno es flvtool (si su entrada es FLV) o FFmpeg . Con FFmpeg puede especificar una hora de inicio y una hora de finalización, e intentará cortar justo lo que solicita (pero tendrá que encontrar el fotograma clave más cercano para comenzar a cortar).

Aquí está el comando FFmpeg para leer un archivo llamado input.flv, comenzar 15 segundos en el video, y luego cortar los siguientes 60 segundos, pero de lo contrario mantener los mismos parámetros para el código de audio y el códec de video, y escribirlo en un archivo de salida:

ffmpeg -i input.flv -ss 15 -t 60 -acodec copy -vcodec copy output.flv

Finalmente, si lo desea, puede escribir código de computadora en C o C ++ (usando las bibliotecas libav de FFmpeg) o Java (usando Xuggler ) para hacer esto programáticamente, pero eso es bastante avanzado para su caso de uso.

Otros consejos

Si tiene problemas para mantener la sincronización automática y de video como yo, lo siguiente puede ayudar (se encuentra en otro sitio web):

ffmpeg -sameq -i file.flv -ss 00:01:00 -t 00:00:30 -ac 2 -r 25 -copyts output.flv

Como señala Evan, el enfoque en la respuesta aceptada puede resultar en la pérdida de sincronización de A / V. Sin embargo, su solución no es correcta porque se eliminó -sameq .

Como se indica en https://trac.ffmpeg.org/wiki/Seeking el < La opción code> -ss debe aparecer antes que -i y no después. Esto solucionó el problema para mí.

La siguiente opción es usar el modificador -fs . Ejemplo:

ff -i ip.mkv -fs 500M -c copy ~/Movies/reservoir/carbohydrates.mkv

Extraiga 500 megabytes (500 × 1000 × 1000 bytes + "gastos generales de muxing") de la fuente seleccionada. –Basado en el tamaño del archivo, como puedes ver

Un amor. Y respeto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top