C'è un modo semplice su un Mac per dividere un file audio a intervalli definiti?

6

Ho un file audio di 45 minuti (.m4a).

Vorrei dividere questo file audio in un file audio separato ogni 2 minuti.

Quindi, questo:

AudioFile1.m4a is created from [00:00] to [02:00] of originalAudioFile.m4a.

AudioFile2.m4a is created from [02:00] to [04:00] of originalAudioFile.m4a.

AudioFile3.m4a is created from [04:00] to [06:00] of originalAudioFile.m4a.

...

e continua fino a

AudioFile23.m4a is created from [44:00] to [45:00] of originalAudioFile.m4a.

Ecco ulteriori dettagli:

  • Non sono particolarmente interessato ai nomi dei file risultanti.

  • Non sono particolare riguardo ai tipi di file dei file risultanti (ad esempio, se diventano file .mp3 o rimangono .m4a file).

  • Questa non è una situazione in cui i file audio risultanti saranno masterizzati su un CD o qualcosa del genere. Sto solo cercando un modo rapido e pratico per dividere un file audio in base a un intervallo specifico. Una piccola perdita di qualità audio non è un grosso problema (ma ovviamente non sarebbe da preferire).

  • Non voglio che l'originale AudioFile.m4a venga modificato nel processo.

La condizione più importante è che il metodo richieda tempo e sforzi minimi da parte dell'utente.

Ci sono vari metodi per realizzare ciò che voglio in Microsoft Windows , ma può essere fatto su un Mac?

    
posta rubik's sphere 10.03.2017 - 22:35
fonte

3 risposte

3

Utilizza ffmpeg . È disponibile tramite Homebrew e MacPorts, ma preferisco semplicemente utilizzare i binari precompilati

Appena fuori dalla mia testa, potresti fare qualcosa di semplice come:

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

Mettere questo in uno script non sarebbe troppo difficile

    
risposta data 10.03.2017 - 22:40
fonte
0

Ho scritto un AppleScript che realizzerà esattamente ciò che ho descritto nel mio post originale. Fa uso di ffmpeg , come suggerito in una risposta precedente dall'utente Allan .

Nota. Se sul tuo computer non è installato ffmpeg , il mio script non ha alcun valore.

Ho installato ffmpeg tramite Homebrew. Homebrew è molto facile da installare; le indicazioni possono essere trovate nella parte superiore di questa pagina (il sito ufficiale di Homebrew).

Dopo aver installato Homebrew, esegui queste linee singolarmente in Terminal per installa ffmpeg sul tuo sistema:

brew install ffmpeg
brew link ffmpeg

Ora potrai utilizzare il mio script.

Note sul mio codice:

  • Anche se questo non era assolutamente necessario per i miei scopi, ffmpeg fornisce anche all'utente il controllo totale su nomi di file, tipi di file, bit rate, la directory di output, ecc., che è una salsa.

  • Alcuni aspetti del mio script sono adattati alle mie preferenze personali (ad esempio, inclusa la data corrente nel nome della directory di output), quindi ovviamente modifica il codice come ritieni opportuno.

  • Ho fatto del mio meglio per includere un po 'di gestione degli errori per rilevare alcuni potenziali errori, ma ovviamente è lontano dall'all-inclusive.

  • Non immagino di dover svolgere questa attività di suddivisione audio spesso, quindi un semplice file .scpt creato in Script Editor va bene per me.

    • Se si preferisce convertire questo script in un'applicazione stand-alone e riscrivibile, è possibile farlo facilmente in Automator (inserendo un'azione "Esegui AppleScript" nel flusso di lavoro e incollando il codice completo).

      • In tal caso, potresti voler regolare l'app in modo che l'utente possa semplicemente trascinare il file audio di origine sull'icona dell'app per avviare l'app (invece di dover fornire il percorso del file di questo file in una finestra di dialogo).
  • È del tutto possibile, se laborioso, programmare un'opzione di codifica VBR (bit rate variabile) per i file risultanti nello script. Ho scelto di non farlo perché, per i miei scopi, questa capacità non è particolarmente necessaria. Sarebbe un po 'complicato scrivere, poiché non tutti i formati audio possono essere codificati in VBR (solo i file audio Opus, Vorbis, MP3, WMA e AAC possono).

  • Infine, sono sicuro al 100% che il codice contenga almeno alcune carenze, punti ciechi e / o bug, quindi mi scuso in anticipo.

Non riesco a incollare l'intero script direttamente in questa risposta. La lunghezza del codice supera il limite massimo di caratteri per le risposte Stack Exchange.

Puoi visualizzare e scaricare il codice completo su questa pagina di Pastebin .

Utilizzando lo script collegato, l'utente può dividere in modo intuitivo qualsiasi file audio in numerosi file in base a un intervallo definito, richiedendo al contempo tempo e sforzi minimi da parte dell'utente.

Si noti che quando l'utente non sceglie il bit rate sorgente come velocità in bit per i file risultanti, lo script può richiedere del tempo. Questo perché ffmpeg è lento alla ricodifica. Ma, per fortuna, l'utente può semplicemente impostarlo e indirizzare la sua attenzione su qualcos'altro che completa.

Si noti che il formato di due righe fornite da Allan nella risposta non è corretto.

Dopo diverse ore di risoluzione dei problemi del mio file AppleScript, mi sono reso conto che il mio file AppleScript non era il problema.

-t riflette la durata del file audio risultante, non il timbro orario finale.

Il codice di esempio di Allan dovrebbe essere:

$ 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

Questo è il passaggio pertinente dalla documentazione di ffmpeg :

-t duration (input/output)

When used as an output option (before an output url), stop writing the output after its duration reaches duration.

    
risposta data 12.03.2017 - 12:05
fonte
-2
find ./ -type f -exec ffmpeg -i {} -f segment -segment_time 300 -c copy {}%03d.mp3 \; -exec rm {} \;
    
risposta data 14.01.2018 - 02:57
fonte

Leggi altre domande sui tag