Tengo problemas para encontrar una aplicación cli que pueda tomar un archivo de video (avi, mkv y mp4 preferiblemente) y cortar clips muy cortos (2-6 segundos) con precisión de tiempo. Intenté ffmpeg , mencoder , avidemux y mp4box, pero todos cortaron en fotogramas clave que crean más de 6 segundos de clips. ¿Existe una herramienta que vuelva a codificar el archivo de entrada y reduzca el tiempo exacto o lo corte incorrectamente, vuelva a codificar y luego corte con precisión?
command-line
video
video-editing
mp4
curmil
fuente
fuente
-ss
parámetro después-i
), debería ser más preciso.Respuestas:
Cortar video con
ffmpeg
Usted puede cortar con precisión vídeos con FFmpeg. Desde la versión 2.5 es muy fácil. Esto, por ejemplo, reduciría 10 segundos, comenzando desde 0 minutos, 3 segundos y 123 milisegundos.
La posición y el tiempo pueden ser en segundos o en
hh:mm:ss[.xxx]
forma.Tenga en cuenta que en estos ejemplos, el video se volverá a codificar utilizando el codificador x264 ; el audio se copia
También puede usar en
-to
lugar de-t
especificar el punto final en lugar de la duración. En este caso, sin embargo,-to
es equivalente a-t
, ya que al poner-ss
delante-i
, ffmpeg primero buscará ese punto y luego comenzará a salir.Ver también la entrada Wiki de búsqueda .
Corte preciso para
ffmpeg
versiones anteriores.Si tiene una versión anterior de ffmpeg, entonces, para una búsqueda precisa, debe colocar el
-ss
after-i
, lo que hace que el proceso de codificación sea un poco más lento, porque todo el video debe decodificarse primero:Aquí,
-to
y-t
comportarse de manera diferente.-t 10
crearía un clip de diez segundos de duración, mientras-to 10
que crearía un clip de siete segundos de duración.fuente
-c:v libx264 -c:a libfaac
creo que podemos usar el-acodec copy -vcodec copy
que le dice a ffmpeg solo para detectar y usar los mismos códecs que el archivo original. ¿Alguien puede confirmar?-c:a aac -strict experimental
. Esa es la solución más simple.La única herramienta de línea de comandos de Linux que he encontrado hasta ahora, que puede cortar en el cuadro exacto (o, con precisión de cuadro), es
melt
(sudo apt-get install melt
).Digamos que tiene un
inputvid.mp4
- primero verifique su configuración de codificación con sayffmpeg
(aquí, solo digo que quiero codificarlo nuevamente-f mp4
, pero como el archivo/dev/null
se descarta la salida; redirijo stderr para que pueda pasar por él - nota en el medio , el comando solicita, y debe respondery
con ENTER, para que el proceso continúe y descargue la información útil; esto es con ffmpeg 3.3.3 en Ubuntu 14):Ok, entonces podemos ver
ffmpeg
opcioneslibx264
yaac
codificadores para este video; entonces podemos ingresar esto paramelt
:.... y
melt
se corte con la pieza entre los marcos 7235 y 7349 en un nuevo archivo,cut.mp4
. Luego, para verificar si loscut.mp4
bucles están correctamente, úselosmelt
nuevamente para reproducirlos dos veces, y reprodúzcalos en una ventana SDL:... y esto es lo que
ffmpeg
ve para este archivo:La configuración de codificación de video
cut.mp4
parece ser idéntica,inputvid.mp4
excepto que la tasa de bits de video cambió de 389 kb / sa 526 kb / s, y también la configuración de codificación de audio es casi la misma, excepto que la frecuencia de muestreo cambió de 44100 a 48000 Hz; aunque eso se puede regular con:... sin embargo, incluso con esto, la tasa de bits de video final para mí termina 337 kb / s. Aún así, los cortes en bucle están bien (y eso incluye audio) cuando se reproducen en bucle, por lo que supongo que esto es realmente preciso en el marco ...
fuente
melt
está volviendo a codificar el video y utiliza las bibliotecas FFmpeg debajo. Si permite volver a codificar, ffmpeg puede producir la misma salida.melt
usa bibliotecas FFmpeg), ¡es bueno saberlo!Como dijo Baodad en los comentarios (publico porque no es fácil de encontrar si lees rápidamente), el mejor enfoque es detectar los codificadores de audio / video automáticamente mediante ffmpeg, entonces:
fuente