2011-01-07 4 views
5

(Objective C) Utilizzando semplicemente AudioServicesPlaySystemSoundID e le sue controparti, ma non riesco a trovare nella documentazione se esiste già un modo per trovare la lunghezza di un file audio .Come trovare la lunghezza di un file audio (in secondi)

So che c'è AudioServicesGetPropertyInfo, ma che sembra restituire un buffer di byte: i file audio si incorporano da soli e posso solo estrarlo con questo?

Oppure c'è forse una formula basata su bit-rate * fileSize da convertire in lunghezza di tempo?

mIL3S

www.milkdrinkingcow.com

risposta

14

Secondo una rapida ricerca su Google, v'è una formula:

length-of-time (duration in seconds) = fileSize (in bytes)/bit-rate (bits/secs)*8 

C'è un motivo particolare che si sta utilizzando System Services Sound da suonare un suono?

Se si utilizza AVAudioPlayer per gestire i suoni si potrebbe fare qualcosa di simile:

AVAudioPlayer * sound = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; 
sound.delegate = self; 
sound.volume = 1; 
NSLog([NSString stringWithFormat:@"%f", sound.duration]); 
+0

Ya, suppongo che dovrei semplicemente utilizzare AVAudioPlayer. Credo che da quando suonavo solo pochi suoni, AudioServices andava bene; ora che ho bisogno di maggiori informazioni dovrei probabilmente passare. Grazie per la formula però! Anche se potrebbe esserci qualcosa di simile. mIL3S –

11

codice di esempio da un nswer How to get the duration of an audio file in iOS?. Questa è la migliore risposta.

AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:audioFileURL options:nil]; CMTime audioDuration = audioAsset.duration; float audioDurationSeconds = CMTimeGetSeconds(audioDuration);

+0

Questo è il miglior modo generale per ottenere questo IMO. – theLastNightTrain