8 votos

¿Existe una manera fácil en Mac de dividir un archivo de audio a intervalos definidos?

Tengo un archivo de audio (.m4a) de 45 minutos de duración.

Me gustaría dividir este archivo de audio en un archivo de audio separado cada 2 minutos.

Pues eso:

AudioFile1.m4a se crea a partir de [00:00] a [02:00] de originalAudioFile.m4a.

AudioFile2.m4a se crea a partir de [02:00] a [04:00] de originalAudioFile.m4a.

AudioFile3.m4a se crea a partir de [04:00] a [06:00] de originalAudioFile.m4a.

...

y se continúa hasta

AudioFile23.m4a se crea a partir de [44:00] a [45:00] de originalAudioFile.m4a.

Aquí hay detalles adicionales:

  • No me importa el nombre de los archivos resultantes.

  • No me importa el tipo de archivos resultantes (por ejemplo, si se convierten en archivos .mp3 o se quedan en archivos .m4a).

  • No se trata de una situación en la que los archivos de audio resultantes se mastericen en un CD o algo así. Sólo estoy buscando una manera rápida y práctica de dividir un archivo de audio basado en un intervalo específico. Una pequeña pérdida de calidad de audio no es un gran problema (pero obviamente no sería lo preferible).

  • No quiero que el originalAudioFile.m4a sea alterado en el proceso.

La condición más importante es que el método requiera un tiempo y un esfuerzo mínimos por parte del usuario.

Hay varios métodos para lograr lo que quiero en Microsoft Windows pero, ¿se puede hacer esto en un Mac?

3voto

Douglas Puntos 10417

Utilice ffmpeg . Está disponible a través de Homebrew y MacPorts, pero yo prefiero usar el binarios preconstruidos

Sólo con lo que se me ocurre, podrías hacer algo sencillo como:

$ ffmpeg -i source_audio_file.mp3 -ss 0 -t 120 segment_1.mp3
$ ffmpeg -i source_audio_file.mp3 -ss 120 -t 240 segment_2.mp3
$ ffmpeg -i source_audio_file.mp3 -ss 240 -t 360 segment_3.mp3
.
.
.

Poner esto en un script no sería muy difícil

3voto

rubik's sphere Puntos 31

He escrito un AppleScript que logrará exactamente lo que describí en mi post original. Hace uso de ffmpeg como se sugirió en una respuesta anterior del usuario Allan .


Nota: Si no tiene ffmpeg actualmente instalado en su ordenador, mi script no tiene ningún valor.

He instalado ffmpeg a través de Homebrew. Homebrew es muy fácil de instalar; las instrucciones se encuentran en la parte superior de esta página (el sitio web oficial de Homebrew).

Después de instalar Homebrew, ejecute estas líneas individualmente en el Terminal para instalar ffmpeg en su sistema:

brew install ffmpeg
brew link ffmpeg

Ahora, podrás hacer uso de mi script.


Notas sobre mi código:

  • Aunque esto no era totalmente necesario para mis propósitos, ffmpeg también proporciona al usuario un control total sobre los nombres de los archivos, los tipos de archivos, la tasa de bits, el directorio de salida, etc., lo cual es una maravilla.

  • Algunos aspectos de mi script están adaptados a mis preferencias personales (por ejemplo, incluir la fecha actual en el nombre del directorio de salida), así que, obviamente, modifica el código como creas conveniente.

  • He hecho todo lo posible por incluir algún tipo de gestión de errores para detectar ciertos errores potenciales, pero obviamente esto está lejos de ser exhaustivo.

  • No me imagino que tenga que hacer esta tarea de división de audio tan a menudo, así que un simple archivo .scpt creado en script Editor está bien para mí.

    • Si prefieres convertir este script en una aplicación independiente y lanzable, puedes hacerlo fácilmente en Automator (insertando un "Ejecutar AppleScript" en su flujo de trabajo y pegando el código completo).

      • En ese caso, es posible que desee ajustar la aplicación para que el usuario pueda simplemente arrastrar el archivo de audio de origen al icono de la aplicación para iniciarla (en lugar de tener que proporcionar la ruta de este archivo en un diálogo).
  • Es totalmente posible, aunque laborioso, programar una opción de codificación VBR (tasa de bits variable) para los archivos resultantes en el script. He decidido no hacerlo porque, para mis propósitos, esta capacidad no es particularmente necesaria. Sería algo complicado de escribir, ya que no todos los formatos de audio pueden ser codificados en VBR (sólo los archivos de audio Opus, Vorbis, MP3, WMA y AAC pueden).

  • Por último, estoy 100% seguro de que el código contiene al menos algunas deficiencias, puntos ciegos y/o errores, por lo que pido disculpas de antemano.


No soy capaz de pegar todo el script directamente en esta respuesta. La longitud del código excede el límite máximo de caracteres para las respuestas de Stack Exchange.

Puede ver y descargar el código completo en esta página de Pastebin .

Utilizando el script vinculado, el usuario puede dividir intuitivamente cualquier archivo de audio en numerosos archivos en función de un intervalo definido, al tiempo que requiere un tiempo y un esfuerzo mínimos por parte del usuario.

Tenga en cuenta que cuando el usuario no elige la tasa de bits de origen como la tasa de bits para los archivos resultantes, el scriptpuede tardar un poco. Esto se debe a que ffmpeg es lento en la recodificación. Pero, afortunadamente, el usuario puede simplemente fijarlo, y dirigir su atención a otra cosa mientras se completa.


Tenga en cuenta que el formato de dos líneas que Allan proporcionó en su respuesta es incorrecto.

Después de varias horas de solucionar mi archivo AppleScript, me di cuenta de que mi archivo AppleScript no era el problema.

-t refleja la duración del archivo de audio resultante, no la marca de tiempo final.

El código de ejemplo de Allan debería decir:

$ ffmpeg -i source_audio_file.mp3 -ss 0 -t 120 segment_1.mp3
$ ffmpeg -i source_audio_file.mp3 -ss 120 -t 120 segment_2.mp3
$ ffmpeg -i source_audio_file.mp3 -ss 240 -t 120 segment_3.mp3

Este es el pasaje correspondiente del ffmpeg documentación :

-t duración (entrada/salida)

Cuando se utiliza como opción de salida (antes de una url de salida), deja de escribir la salida cuando su duración alcanza duración .

-3voto

Testbench Puntos 1
find ./ -type f -exec ffmpeg -i {} -f segment -segment_time 300 -c copy {}%03d.mp3 \; -exec rm {} \;

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X