9 votes

Existe-t-il un moyen simple, sur Mac, de diviser un fichier audio à intervalles définis ?

J'ai un fichier audio (.m4a) de 45 minutes.

Je voudrais diviser ce fichier audio en un fichier audio séparé toutes les 2 minutes.

C'est donc cela :

AudioFile1.m4a est créé de [00:00] à [02:00] de originalAudioFile.m4a.

AudioFile2.m4a est créé à partir de [02:00] à [04:00] du fichier originalAudioFile.m4a.

AudioFile3.m4a est créé à partir de [04:00] à [06:00] de originalAudioFile.m4a.

...

et ce jusqu'à ce que

AudioFile23.m4a est créé de [44:00] à [45:00] de l'original. originalAudioFile.m4a.

Voici quelques détails supplémentaires :

  • Je ne suis pas très regardant sur les noms des fichiers qui en résultent.

  • Je ne m'intéresse pas aux types de fichiers résultants (par exemple, s'ils deviennent des fichiers .mp3 ou s'ils restent des fichiers .m4a).

  • Il ne s'agit pas d'une situation où les fichiers audio résultants seront masterisés pour un CD ou autre. Je cherche simplement un moyen rapide et pratique de diviser un fichier audio sur la base d'un intervalle spécifique. Une perte mineure de qualité audio n'est pas grave (mais ce n'est évidemment pas ce que je préfère).

  • Je ne veux pas que le fichier originalAudioFile.m4a soit modifié au cours du processus.

La condition la plus importante est que la méthode nécessite un minimum de temps et d'efforts de la part de l'utilisateur.

Il y a différentes méthodes pour réaliser ce que je veux dans Microsoft Windows Mais est-ce possible sur un Mac ?

4voto

Douglas Points 10417

Utilisation ffmpeg . Il est disponible via Homebrew et MacPorts, mais je préfère utiliser l'application binaires préconstruits

De mémoire, vous pourriez faire quelque chose de simple comme.. :

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

Mettre cela dans un script ne serait pas trop difficile

3voto

rubik's sphere Points 4760

J'ai écrit un AppleScript qui accomplira exactement ce que j'ai décrit dans mon premier message. Il utilise ffmpeg , comme suggéré dans une réponse précédente par l'utilisateur Allan .


Note : Si vous n'avez pas ffmpeg actuellement installé sur votre ordinateur, mon script n'a aucune valeur.

J'ai installé ffmpeg via Homebrew. Homebrew est très facile à installer ; les instructions se trouvent en haut de la page d'accueil de cette page (le site officiel de Homebrew).

Après avoir installé Homebrew, lancez ces lignes individuellement dans Terminal pour installer ffmpeg sur votre système :

brew install ffmpeg
brew link ffmpeg

Maintenant, vous pourrez utiliser mon script.


Notes sur mon code :

  • Même si cela n'était pas totalement nécessaire pour mes besoins, ffmpeg offre également à l'utilisateur un contrôle total sur les noms de fichiers, les types de fichiers, le débit binaire, le répertoire de sortie, etc.

  • Certains aspects de mon script sont adaptés à mes préférences personnelles (par exemple, l'inclusion de la date du jour dans le nom du répertoire de sortie), alors bien sûr, modifiez le code comme bon vous semble.

  • J'ai fait de mon mieux pour inclure une gestion des erreurs afin de détecter certaines erreurs potentielles, mais c'est évidemment loin d'être exhaustif.

  • Je n'envisage pas d'avoir à effectuer cette tâche de découpage audio très souvent, donc un simple fichier .scpt créé dans script Editor me convient parfaitement.

    • Si vous préférez convertir ce script en une application autonome lançable, vous pouvez facilement le faire dans Automator (en insérant un fichier "Exécuter AppleScript" dans votre flux de travail et en collant le code complet).

      • Dans ce cas, vous pouvez adapter l'application pour que l'utilisateur puisse simplement faire glisser le fichier audio source sur l'icône de l'application pour lancer l'application (au lieu d'avoir à fournir le chemin d'accès à ce fichier dans une boîte de dialogue).
  • Il est tout à fait possible, bien que laborieux, de programmer une option de codage VBR (débit binaire variable) pour les fichiers résultants dans le script. J'ai choisi de ne pas le faire car, pour mes besoins, cette capacité n'est pas particulièrement nécessaire. Elle serait quelque peu compliquée à écrire, car tous les formats audio ne peuvent pas être encodés en VBR (seuls les fichiers audio Opus, Vorbis, MP3, WMA et AAC le peuvent).

  • Enfin, je suis certain à 100 % que le code contient au moins quelques lacunes, angles morts et/ou bogues, et je m'en excuse donc à l'avance.


Je ne suis pas en mesure de coller l'intégralité du script directement dans cette réponse. La longueur du code dépasse la limite maximale de caractères pour les réponses de Stack Exchange.

Vous pouvez consulter et télécharger le code complet sur cette page Pastebin .

En utilisant le script script lié, l'utilisateur peut intuitivement diviser n'importe quel fichier audio en plusieurs fichiers sur la base d'un intervalle défini, tout en exigeant un minimum de temps et d'effort de la part de l'utilisateur.

Notez que lorsque l'utilisateur ne choisit pas le débit binaire de la source comme débit binaire des fichiers résultants, le script peut prendre un certain temps. Cela s'explique par le fait que ffmpeg est lent à réencoder. Mais, heureusement, l'utilisateur peut simplement le régler et consacrer son attention à autre chose pendant qu'il se termine.


Notez que le format de deux lignes fourni par Allan dans sa réponse est incorrect.

Après plusieurs heures de dépannage de mon fichier AppleScript, je me suis rendu compte que mon fichier AppleScript n'était pas en cause.

-t reflète la durée du fichier audio résultant, et non l'horodatage de fin.

L'exemple de code d'Allan devrait être le suivant :

$ 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

Voici le passage en question de la ffmpeg la documentation :

-t durée (entrée/sortie)

Lorsqu'il est utilisé comme option de sortie (avant une url de sortie), il arrête l'écriture de la sortie après que sa durée a atteint durée .

-3voto

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X