¿Cómo obtener un trozo de audio o video?

Opción -t y -ss de ffmpeg
Opción -t y -ss de ffmpeg
Existen dos opciones que nos permitirán obtener un trozo de audio o video, es decir conseguir solo la parte que nos interesa de un archivo de video o de un archivo de audio.

¿Cuales son las opciones que usaremos?

Las opciones que usaremos son dos: -t, -ss

Opción -t duration

La opción -t duration puede usarse como opción de entrada y como opción de salida. Como opción de entrada marca un límite que indica cuanto tiempo se leeran los datos de entrada. Como opción de salida marca también un límite pero en este caso indica la duración de escritura del archivo de salida. El tiempo de lectura o de escritura se indica con un número que representa la cantidad de segundos a leer o escribir o empleando el formato hh:mm:ss que indica el tiempo en horas, minutos y segundos.

Como nota adicional indicaré que hay una opción similar llamada -to position. Si éstas dos opciones se encuentran en una misma linea entonces la opción -t será la que se ejecutará ya que tienen prioridad sobre la opción -to position.



Opción -ss position

Esta opción se usa tanto en archivos de entrada como de salida. Como opción en archivos de entrada sirve para indicar en qué momento comenzará a leerse el archivo; es decir, indica un desplazamiento desde el punto inicial hasta el punto que le señalemos. La duración se marca en segundos o en un formato del tipo hh:mm:ss.

Muchas veces no es posible colocarse en el punto que deseemos por lo que ffmpeg se posicionará en el punto más cercano al punto preestablecido y la porción restante se desechará.

Esta porción no se perderá si hacemos una copia exacta empleando la opción copy o si habilitamos la opción -noaccurate_seek

Si esta opción la empleamos con archivos de salida entonces se escribirá el archivo de salida sin contar el tiempo señalado por la opción -ss; es decir, si esperamos obtener un archivo de salida de 300 segundos pero señalamos un tiempo de 60 segundos con la opción -ss, entonces solo se obtendrán los últimos 240 segundos de los esperados.


Ejemplos


Vamos a combinar estas opciones con un archivo de música y empleando la biblioteca ffplay para reproducirlo.

Si escribimos ffplay -i  -ss 30 -t 100 salida.mp3

Con la línea anterior estamos diciéndole al reproductor de ffmpeg que comience la reproducción en el segundo 30 y continúe con ella durante 100 segundos.

Si escribimos ffmpeg -i entrada.mp3 -ss 100 -t 5 salida.mp3

estamos diciendo que deseamos tomar el archivo entrada.mp3, comenzar el proceso en el segundo 100 y grabar 5 segundos a partir del segundo 100.

Si escribimos ffmpeg -i entrada.mp4 -ss 100 -t 5 -c copy salida.mp4

estamos diciendo que tomaremos 5 segundos a partir del segundo 100 y qué copiaremos los codecs. Con esto último conseguimos dos cosas muy interesantes. 1) No merma la calidad del video ya que estamos copiando los mismos codecs y no estamos haciendo ninguna recodificación. 2) El tiempo que dura todo el proceso disminuye drásticamente en comparación con un proceso en donde si tengamos que hacer una recodificación.

Pues bien, con este último ejemplo estamos contestando la pregunta con el que titulamos esta participación. Podrán notar que no es complicado una vez que entendemos el porqué de cada elemento en la linea de comandos.

Fuente: www.ffmpeg.org/




Comentarios

Entradas populares