¿Hay una manera fácil en una Mac de dividir un archivo de audio en 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.

De modo que:

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

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

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

...

y esto se continúa hasta

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

Aquí hay detalles adicionales:

  • No soy particular acerca de los nombres de archivo de los archivos resultantes.

  • No soy exigente con los tipos de archivo de los archivos resultantes (p. ej., si se convierten en archivos .mp3 o permanecen como archivos .m4a).

  • Esta no es una situación en la que los archivos de audio resultantes se masterizarán en un CD o algo así. Solo estoy buscando una forma rápida y práctica de dividir un archivo de audio en función de un intervalo específico. Una pérdida menor en la calidad del audio no es gran cosa (pero esto obviamente no sería lo mejor).

  • No quiero que se altere el originalAudioFile.m4a en el proceso.

La condición más importante es que el método requiera un tiempo y 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 una Mac?

Respuestas (3)

Usa ffmpeg . Está disponible a través de Homebrew y MacPorts, pero prefiero usar los binarios prediseñados

Justo en la parte superior de mi cabeza, podrías hacer algo simple 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 guión no sería demasiado difícil.

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


Nota: Si no lo tiene ffmpegactualmente instalado en su computadora, mi script no vale nada.

Lo instalé ffmpega través de Homebrew. Homebrew es muy fácil de instalar; Las instrucciones se pueden encontrar 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 Terminal para instalar ffmpegen 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, ffmpegtambién brinda al usuario un control total sobre los nombres de archivo, los tipos de archivo, la tasa de bits, el directorio de salida, etc., lo cual es una salsa.

  • Ciertos aspectos de mi secuencia de comandos se adaptan a mis preferencias personales (p. ej., incluir la fecha actual en el nombre del directorio de salida), por lo que, obviamente, modifique el código como mejor le parezca.

  • Hice todo lo posible para incluir un manejo de errores para detectar ciertos errores potenciales, pero esto obviamente está lejos de ser todo incluido.

  • No me imagino necesitando hacer esta tarea de división de audio con tanta frecuencia, por lo que un archivo .scpt simple creado en Script Editor está bien para mí.

    • Si prefiere convertir este script en una aplicación independiente ejecutable, puede hacerlo fácilmente en Automator (insertando una acción "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 iniciar la aplicación (en lugar de tener que proporcionar la ruta del archivo de este archivo en un cuadro de diálogo).
  • Es completamente posible, aunque laborioso, programar una opción de codificación VBR (velocidad de bits variable) para los archivos resultantes en el script. Elegí no hacerlo porque, para mis propósitos, esta habilidad no es particularmente necesaria. Sería algo complicado de escribir, ya que no todos los formatos de audio se pueden codificar en VBR (solo se pueden codificar los archivos de audio Opus, Vorbis, MP3, WMA y AAC).

  • Finalmente, 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 puedo 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 .

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

Tenga en cuenta que cuando el usuario no elige la tasa de bits de origen como tasa de bits para los archivos resultantes, la secuencia de comandos puede tardar un poco. Esto se debe ffmpega que la recodificación es lenta. Pero, afortunadamente, el usuario puede simplemente configurarlo y dirigir su atención a otra cosa a medida que 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 problemas con mi archivo AppleScript, me di cuenta de que mi archivo AppleScript no era el problema.

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

El código de muestra de Allan debería leer:

$ 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

Aquí está el pasaje relevante de la ffmpegdocumentación :

-t duración (entrada/salida)

Cuando se usa como una opción de salida (antes de una URL de salida), deja de escribir la salida después de que su duración alcance la duración .

find ./ -type f -exec ffmpeg -i {} -f segment -segment_time 300 -c copy {}%03d.mp3 \; -exec rm {} \;
Están sucediendo muchas cosas diferentes aquí, incluida una dependencia de ffmpeg (algo que la mayoría de las personas aún no han instalado). ¿Podría explicar qué hace este comando y cómo?
Además, ¿cómo divide esto un archivo de audio en 23 partes? ¿Y por qué es findnecesario dividir este archivo?