2011-01-07 11 views
5

(Cel C) Wystarczy użyć prostego AudioServicesPlaySystemSoundID i jego odpowiedników, ale nie mogę znaleźć w dokumentacji, jeśli istnieje już sposób na znalezienie długości pliku audio .Jak znaleźć długość pliku audio (w sekundach)

Wiem, że istnieje AudioServicesGetPropertyInfo, ale wydaje się, że zwraca on bufor bajtowy - czy pliki audio osadzają w sobie ich długość i czy mogę je po prostu wyodrębnić?

A może istnieje formuła oparta na przepływności * fileSize do konwersji na długi czas?

mIL3S

www.milkdrinkingcow.com

Odpowiedz

14

Według szybkiego wyszukiwania Google, istnieje formuła:

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

Czy jest jakiś szczególny powód, dla którego używasz Sound System Usług odtwarzać dźwięk?

Jeśli używasz AVAudioPlayer obsłużyć swoich dźwięków można zrobić coś takiego:

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

Ya, przypuszczam, należy po prostu użyć AVAudioPlayer. Domyślam się, że właśnie odtwarzałem kilka drobnych dźwięków, że AudioServices było w porządku; teraz, gdy potrzebuję więcej informacji, powinienem się przełączyć. Dzięki za formułę! Chociaż może być coś takiego. mIL3S –

11

przykładowy kod z nswer How to get the duration of an audio file in iOS?. To jest najlepsza odpowiedź.

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

+0

To najlepszy ogólny sposób na osiągnięcie tego IMO. – theLastNightTrain