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

6

Tengo un archivo de audio de 45 minutos (.m4a).

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

Entonces, eso:

  

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 me refiero a los nombres de archivo de los archivos resultantes.

  • No me refiero a los tipos de archivos de los archivos resultantes (por ejemplo, si se convierten en archivos .mp3 o en 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 busco una forma rápida y práctica de dividir un archivo de audio en función de un intervalo específico. Una pequeña pérdida en la calidad de audio no es un gran problema (pero obviamente esto no sería lo preferido).

  • No quiero que se modifique el archivo de audio original en el proceso.

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

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

    
pregunta rubik's sphere 10.03.2017 - 22:35

3 respuestas

3

Utilice ffmpeg . Está disponible a través de Homebrew y MacPorts, pero prefiero usar los binarios creados previamente

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 script no sería demasiado difícil

    
respondido por el Allan 10.03.2017 - 22:40
0

He escrito un AppleScript que logrará exactamente lo que describí en mi publicación original. Hace uso de ffmpeg , como sugiere el usuario Allan .

Nota: si no tienes ffmpeg actualmente instalado en tu computadora, mi script no vale nada.

Instalé ffmpeg a 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 a instala ffmpeg en tu 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 le brinda al usuario un control total sobre los nombres de archivo, los tipos de archivos, la tasa de bits, el directorio de salida, etc., que es gravy.

  • Ciertos aspectos de mi script se adaptan a mis preferencias personales (por ejemplo, incluyendo la fecha actual en el nombre del directorio de salida), así que obviamente modifique el código como mejor le parezca.

  • He hecho todo lo posible para incluir algún manejo de errores para detectar ciertos errores potenciales, pero obviamente esto está lejos de incluir todo.

  • No me imagino que deba realizar esta tarea de división de audio tan a menudo, por lo que un simple archivo .scpt creado en el Editor de secuencias de comandos está bien para mí.

    • Si prefiere convertir este script en una aplicación autónoma y 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, si es 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 escribir, ya que no todos los formatos de audio pueden codificarse en VBR (solo los archivos de audio Opus, Vorbis, MP3, WMA y AAC).

  • Finalmente, estoy 100% seguro de que el código contiene al menos algunos defectos, puntos ciegos y / o errores, por lo que me disculpo por adelantado.

No puedo pegar el script completo 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 .

Al usar 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 mínimo esfuerzo y tiempo por parte del usuario.

Tenga en cuenta que cuando el usuario no elige la velocidad de bits de origen como la velocidad de bits para los archivos resultantes, el script puede tardar un tiempo. Esto se debe a que ffmpeg es lento en la recodificación. Pero, afortunadamente, el usuario simplemente puede 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 problema no era mi archivo AppleScript.

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

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

$ 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 ffmpeg documentation :

  

-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 duration .

    
respondido por el rubik's sphere 12.03.2017 - 12:05
-2
find ./ -type f -exec ffmpeg -i {} -f segment -segment_time 300 -c copy {}%03d.mp3 \; -exec rm {} \;
    
respondido por el ewitherspoon 14.01.2018 - 02:57

Lea otras preguntas en las etiquetas