¿Cómo puedes recortar archivos mp3 usando `ffmpeg`?

10

Aquí hay un rompecabezas de audio MP3 de Linux que me ha estado molestando por un tiempo:

¿Cómo recortar los primeros segundos de un archivo de audio MP3? (No puedo ffmpeg -sstrabajar con el formato 00:01 o 1,000)

Hasta ahora, para hacer lo que quiero, recurro a hacerlo de una manera GUI que quizás sea más lenta para un solo archivo, y definitivamente más lenta para un lote de archivos.

Mark Hudson
fuente
1
Una actualización. Más tarde, me topé con el hecho de que ffmpeg es muy exigente con el formato de tiempo --ss, y pude recortar más fácilmente los primeros 9 segundos, por ejemplo, especificando -ss 00:00:09 (tenga en cuenta que necesita todo 3 números en formato hh: mm: ss) La versión que estaba usando puede ser antigua ... FFmpeg versión SVN-r18709, Copyright (c) 2000-2009 Fabrice Bellard, et al.
Mark Hudson

Respuestas:

5

Para editar mp3 en Linux, recomendaría Sox . Tiene un trimefecto fácil de usar que hará lo que le pidas (vea los man soxdatos - busque (presione /) para "recorte de inicio"). Ejemplo:

sox input.mp3 output.mp3 trim 1 5

No lo mencionó, pero si su objetivo es simplemente eliminar el silencio al comienzo de los archivos, encontrará el silenceefecto mucho más útil ( man soxbusque "períodos anteriores")

rozcietrzewiacz
fuente
Gracias, genial: funcionó. Terminé usando la trimsimplicidad. La única decepción fue sox FAIL formats: can't open output file 'blah.mp3': SoX was compiled without MP3 encoding support... así que, vuelva a ingresar ffmpeg: /
Mark Hudson
Eso parece inusual. En mi computadora, funciona sin problemas con los mp3. Es una cuestión de configuración en tiempo de construcción. ¿Cómo lo instalaste?
rozcietrzewiacz
@rozcietrzewiacz, si instala sox desde un repositorio de distribución, probablemente obtendrá sox sin soporte para MP3 (debido a problemas de licencia). Por ejemplo, en Fedora 17:no handler for file extension mp3
maxschlepzig
4

Puede intentar usar mp3splt , que puede dividir archivos MP3 y Ogg y tiene la ventaja de que no codifica de nuevo el archivo, evitando así la pérdida de calidad.


fuente
1
Me gusta; Gracias. Es simple y, sin embargo, tiene muchas opciones ... Por ejemplo: aquí está el comando que acabo de usar, que agrega los tiempos divididos al nombre del archivo: mp3splt "$file" 4.12 27.55.7... Permite un formato de nombre de salida personalizado y múltiples puntos divididos.
Peter.O
1

Asegúrese de que sus especificaciones de tiempo comiencen con horas.

Para citar la página de manual de ffmpeg :

la posición puede ser en segundos o en forma "hh: mm: ss [.xxx]"

Eso significa que cuando elige la segunda sintaxis, solo la .xxxparte es opcional. De lo contrario, ffmpeg podría analizarlo incorrectamente como segundos.

Lo mismo vale para la duración:

la duración puede ser un número en segundos o en "hh: mm: ss [.xxx]"

Otro escollo es el orden de los argumentos de ffmpeg (por ejemplo, las opciones -ss/ -tpara un archivo de entrada tienen que venir antes que la -iopción).

Ejemplo

$ wget http://traffic.libsyn.com/twiv/TWiV179.mp3
$ ffmpeg -ss 1:05:59.3 -t 00:02:03.9 -i TWiV179.mp3 -acodec copy \
     what_is_a_hmm_twiv179.mp3

Con la especificación -ss 1:05:59.3 -t 2:03.9obtendría un resultado diferente (es decir, una pieza de 2 segundos de longitud).

(Probado en Fedora 17 con ffmpeg versión 0.10.7.)

maxschlepzig
fuente