Pregunta

Pregunta original

Quiero poder generar un archivo MP3 nuevo (totalmente válido) a partir de un archivo MP3 existente para usarlo como vista previa, estilo probar antes de comprar.El nuevo archivo sólo debe contener la primera norte segundos de la pista.

Ahora sé que podría simplemente "cortar la transmisión" en norte segundos (calculando a partir de 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

Ambos mp3split y ffmpeg Ambas son buenas soluciones.Elegí ffmpeg porque se instala comúnmente en servidores Linux y también es fácilmente disponible para windows.Aquí hay algunos parámetros de línea de comando más buenos para generar vistas previas con ffmpeg

  • -t <seconds> picar después del número especificado de segundos
  • -y forzar la sobrescritura de archivos
  • -ab <bitrate> establecer la tasa de bits, p. -ab 96k
  • -ar <rate Hz> establecer la frecuencia de muestreo, p. -ar 22050 para 22,05 kHz
  • -map_meta_data <outfile>:<infile> copiar metadatos de seguimiento desde el archivo interno al archivo externo

en lugar de configurar -ab y -ar, puedes copiar la configuración de la pista original, como sugiere Tim Farley, con:

  • -acodec copy
¿Fue útil?

Solución

También recomiendo ffmpeg, pero la línea de comando sugerida por John Boker tiene un efecto secundario no deseado:vuelve a codificar el archivo a la velocidad de bits predeterminada (que es al menos 64 kb/s en la versión que tengo aquí).Esto podría dar a sus clientes una impresión falsa de la calidad de sus archivos de sonido y, además, llevaría más tiempo.

Aquí hay una línea de comando que se reducirá a 30 segundos sin transcodificar:

ffmpeg -t 30 -i inputfile.mp3 -acodec copy outputfile.mp3

El modificador -acodec le dice a ffmpeg que use el códec especial "copiar" que no transcodifica.Es increíblemente rápido.

NOTA:el comando se actualizó según el comentario de Oben Sonne

Otros consejos

Si desea ELIMINAR los primeros 30 segundos (y conservar el resto), utilice esto:

ffmpeg -ss 30 -i inputfile.mp3 -acodec copy outputfile.mp3

intentar:

ffmpeg -t 30 -i inputfile.mp3 outputfile.mp3

puedes usar mp3cut:

cutmp3 -i foo.mp3 -O 30s.mp3 -a 0:00.0 -b 0:30.0

Está en el repositorio de Ubuntu, así que simplemente: sudo apt-get install cutmp3.

Este comando también funciona perfectamente.Recorté mis archivos de música de 20 a 40 segundos.

-y:forzar la sobrescritura del archivo de salida.

ffmpeg -i test.mp3 -ss 00:00:20 -to 00:00:40 -c copy -y temp.mp3

Quizás quieras intentarlo Mp3Splt.

Lo he usado antes en un servicio C# que simplemente envolvió el proceso win32 mp3splt.exe.Supongo que se podría hacer algo similar en su escenario Linux/PHP.

No lo he usado para este propósito específico, pero apuesto ffmpeg lo puede hacer.

me da error al hacer 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top