Dividere un file audio in blocchi di una lunghezza specificata


16

Ho diversi file audio lunghi (80 minuti ciascuno; m4a) e li voglio divisi in pezzi di 5 o 10 minuti.

Vedo molte domande per dividere un file audio in pause, toni, ecc. Estesi, ma non riesco a trovarne uno relativo a questa semplice operazione. Qualcuno sa un modo semplice per farlo?

Certo, qualcosa di automatico e la riga di comando sono a posto, persino preferiti.

Grazie in anticipo!

Risposte:


20

Con ffmpeg recente (scarica una build statica da qui ):

ffmpeg -i in.m4a -f segment -segment_time 300 -c copy out%03d.m4a

Questo utilizza il segment muxer e copia i bitstream. Se il tuo file ha flussi audio e video, puoi disabilitare il flusso video con -vn.


Ecco un one-liner, devi solo installare Ruby e FFmpeg :

ruby -e '(0..4500).step(300) { |x| system "ffmpeg -ss #{x} -i in.m4a -c copy -t 300 out-#{x}.m4a"}'

Basta eseguirlo nella stessa cartella in cui si in.m4atrova. Copierà il bitstream audio, quindi l'esecuzione di questo probabilmente richiederà meno di qualche secondo.

Spiegare:

  • 4800 secondi è la lunghezza del file audio (80 minuti × 60 secondi), quindi la nostra ultima divisione è a 4500 (4800 - 300 secondi).
  • Passiamo da 0 a 4500 e ci dividiamo ogni 300 secondi (5min × 60s).
  • FFmpeg inizierà all'ora specificata da -ss
  • E copierà per il tempo specificato da -t
  • Scriverà diversi file di output chiamati out-<x>.mp4, dove <x>è l'ora di inizio in secondi.

Grazie! Il tuo comando è per UNIX o funziona anche su Windows? Ho un'installazione Cygwin, quindi non dovrebbe importare, ma solo chiedermi. Lo proverò quando torno a casa.
Andrew Cheong,

Funziona in modo nativo su Linux (e su Unix su cui è installato Ruby) e dovrebbe funzionare anche su Windows: hai semplicemente bisogno di Ruby e FFmpeg, ma non ti servirà Cygwin. Ci sono eseguibili Ruby Installer e FFmpeg anche per Windows. Ora, il comando FFmpeg potrebbe essere automatizzato senza Ruby, utilizzando file batch di Windows o PowerShell, ma non sono un utente Windows, quindi è per questo che ho preso Ruby (perché viene fornito con Linux e OS X). Forse qualcuno con esperienza batch di Windows può riscrivere il comando Ruby sopra?
slhck,

Ho Cygwin perché non riesco ad abituarmi alla riga di comando di Windows. Penso di avere già ruby ​​e ffmpeg installati lì, quindi dovrei essere in grado di usare il tuo comando. Sì, una versione di Windows potrebbe aiutare qualcun altro a visualizzare questa domanda. +1 per ora; accetterò quando lo proverò.
Andrew Cheong,

2
Se, come me, il tuo file m4a include un flusso video (nel mio caso, una singola immagine), devi aggiungere l' -vninterruttore per selezionare solo il flusso audio. Se si desidera mantenere il flusso video, è necessario eseguire l'output in un file con estensione .mp4.
Rob Church,

2

Stavo cercando una soluzione per questo me stesso. Il modo più semplice che ho trovato per farlo è tramite MP4Box :

mp4box -split 300 infile.m4a

Dove "300" è il tempo in secondi. MP4Box scriverà automaticamente i file di output numerati.

(Non è necessario installare l'intera grande applicazione GPAC. Questi sono i file che è possibile estrarre dall'archivio per farlo funzionare: js.dll; libeay32.dll; libgpac.dll; MP4Box.exe; ssleay32.dll)


2

È passato un po 'di tempo da quando questa domanda è stata posta, ma dopo aver scherzato con Ruby e ffmpeg ho deciso che ci sarebbe stato un modo più semplice per farlo in Windows, e ho scoperto che c'è.

Scarica e installa Audacity

Crea un file di testo da qualche parte in cui puoi trovarlo e incolla la seguente stringa: (intervalli di 300 secondi, cioè 5 minuti, 10 minuti sarebbero 600 intervalli, ecc ...)

0       300  
300     600  
600     900  
900     1200  
1200    1500  
1500    1800  
1800    2100  
2100    2400  
2400    2700  
2700    3000  
3000    3300  
3300    3600  
3600    3900  
3900    4200  
4200    4500  
4500    4800  
4800    5100  
5100    5400  
5400    5700  
5700    6000  
6000    6300  
6300    6600  
6600    6900  
6900    7200  
7200    7500  
7500    7800  
7800    8100  
8100    8400  
8400    8700  
8700    9000  
9000    9300  
9300    9600  
9600    9900  
9900    10200  
10200   10500  
10500   10800  
10800   11100  
11100   11400  
11400   11700  
11700   12000  
12000   12300  
12300   12600  
12600   12900  
12900   13200  
13200   13500  
13500   13800  
13800   14100  
14100   14400  
14400   14700  
14700   15000  

Assicurati solo che il numero di intervalli sia maggiore della lunghezza totale dei tuoi file audio, ho creato questo che funziona per oltre tre ore, abbastanza a lungo per le mie esigenze, aggiungendone altre per soddisfare le tue esigenze.

Importa il file audio in Audacity ed esegui qualsiasi bilanciamento e qualsiasi altra modifica tu voglia, quindi fai clic su file> etichette> importa etichette

Seleziona il tuo file di testo, quindi seleziona la traccia etichetta e la traccia audio contemporaneamente e fai clic sul file> Esporta più.

Modifica il tipo di file in cui desideri esportare e modifica le impostazioni, quindi seleziona la cartella di destinazione.

Cambio sempre il modello di numerazione in Numerazione dopo il prefisso del nome file e digito il nome file desiderato nella casella e il programma aggiungerà i numeri, premi Esporta e viola!


-1

Scarica Audacity: è uno strumento audio gratuito in grado di fare esattamente ciò di cui hai bisogno ed è totalmente gratuito e facile da usare. http://audacity.sourceforge.net/


2
C'è un modo per fare in modo che Audacity lo faccia automaticamente? Non vorrei tagliare manualmente più file in 16 pezzi ciascuno selezionando pezzi di 5 minuti con il mouse, tagliarli, andare al menu, salvare i file, eccetera.
slhck,

Ho già Audacity, quindi se c'è un modo automatico, per favore fatemi sapere!
Andrew Cheong,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.