mp3 - portable - programa para recortar musica
Recortar MP3 a los primeros 30 segundos (11)
Pregunta original
Quiero poder generar un nuevo archivo MP3 (totalmente válido) a partir de un archivo MP3 existente para usarlo como una vista previa: probar antes de comprar. El nuevo archivo solo debe contener los primeros n segundos de la pista.
Ahora, sé que podría simplemente "cortar la secuencia" en n segundos (calculando desde la tasa de bits y el tamaño del encabezado) al entregar el archivo, pero esto es un poco sucio y un PITA real en una pista VBR. Me gustaría poder generar un archivo MP3 adecuado.
Alguien tiene alguna idea?
Respuestas
Tanto mp3split
como ffmpeg
son buenas soluciones. Elegí ffmpeg ya que comúnmente se instala en servidores Linux y también está disponible para Windows . Aquí hay algunos más buenos parámetros de línea de comando para generar vistas previas con ffmpeg
-
-t <seconds>
cortar después del número especificado de segundos -
-y
fuerza sobreescribir archivo -
-ab <bitrate>
establecer la velocidad de bits por ejemplo -ab 96k -
-ar <rate Hz>
establecer frecuencia de muestreo, por ejemplo, -ar 22050 para 22.05kHz -
-map_meta_data <outfile>:<infile>
copiar metadatos de seguimiento de archivo a archivo externo
en lugar de establecer -ab y -ar, puede copiar la configuración original de la pista, como sugiere Tim Farley, con:
-
-acodec copy
Es posible que desee probar Mp3Splt .
Lo he usado antes en un servicio de C # que simplemente envolvió el proceso de win32 de mp3splt.exe. Supongo que se podría hacer algo similar en su escenario de Linux / PHP.
Este comando también funciona perfecto. Recorté mi música de 20 segundos a 40 segundos.
-y: forzar archivo de salida para sobrescribir.
ffmpeg -i test.mp3 -ss 00:00:20 -to 00:00:40 -c copy -y temp.mp3
He usado esto: Mp3Splt antes con buenos resultados
No lo he usado para este propósito específico, pero apuesto a que ffmpeg puede hacerlo.
Si desea QUITAR los primeros 30 segundos (y conservar el resto), utilice esto:
ffmpeg -ss 30 -i inputfile.mp3 -acodec copy outputfile.mp3
Solo como nota, pasé un mal momento con ffmpeg, mptsplit y mp3cutter en CentOS, todos ellos informaron "Header Missing". Por lo tanto, tenía que ir con MP3 Class y algunas matemáticas para cortar por tamaño de archivo.
Solo un pensamiento: es posible que desee omitir el comienzo de la canción original. Diga, puede usar una pieza de 30 segundos comenzando en el tercio de la canción.
En algunas canciones, los primeros 30 segundos no le dicen mucho, ya que es solo una parte de "configuración de la escena", por ejemplo, Pink Floyd ''s Shine On You Crazy Diamond .
También recomiendo ffmpeg, pero la línea de comandos sugerida por John Boker tiene un efecto secundario involuntario: vuelve a codificar el archivo a la tasa de bits predeterminada (que es de 64 kb / s en la versión que tengo aquí al menos). Esto podría dar a sus clientes una falsa impresión de la calidad de sus archivos de sonido, y también lleva más tiempo hacerlo.
Aquí hay una línea de comando que cortará a 30 segundos sin transcodificación:
ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3
El modificador -acodec le dice a ffmpeg que use el códec especial de "copia" que no transcodifica. Es rapidísimo.
NOTA: el comando se actualizó en base al comentario de Oben Sonne
Tengo un error mientras hago lo mismo
Invalid audio stream. Exactly one MP3 audio stream is required.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argumentStream mapping:
La solución para mí fue: ffmpeg -ss 00: 02: 43.00 -t 00:00:10 -i input.mp3 -codec: a libmp3lame out.mp3
puedes usar mp3cut:
cutmp3 -i foo.mp3 -O 30s.mp3 -a 0:00.0 -b 0:30.0
Está en ubuntu repo, así que solo: sudo apt-get install cutmp3
.
tratar:
ffmpeg -t 30 -i inputfile.mp3 outputfile.mp3