2011-01-07 20 views
5

(Objective C) Mit einfachen AudioServicesPlaySystemSoundID und seine Gegenstücke, aber ich kann nicht in der Dokumentation finden, wenn es bereits eine Möglichkeit gibt, die Länge einer Audiodatei zu finden .So finden Sie die Länge einer Audiodatei (in Sekunden)

Ich weiß, es gibt AudioServicesGetPropertyInfo, aber das scheint einen Byte-Puffer zurückzugeben - Audio-Dateien ihre Länge in sich einbetten und ich kann es nur damit extrahieren?

Oder gibt es vielleicht eine Formel basierend auf Bitrate * fileSize, um in die Länge der Zeit zu konvertieren?

mIL3S

www.milkdrinkingcow.com

Antwort

14

Nach einer schnellen Google-Suche gibt es eine Formel:

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

Gibt es einen besonderen Grund, warum Sie System-Sound Services verwenden zu Ton abspielen?

Wenn Sie AVAudioPlayer verwenden, um Ihre Sounds zu behandeln Sie so etwas wie tun könnte:

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

Ya, ich nehme an, ich sollte nur AVAudioPlayer verwenden. Ich denke, da ich nur ein paar kleine Sounds gespielt habe, waren die AudioServices in Ordnung; Jetzt, da ich mehr Informationen davon brauche, sollte ich wahrscheinlich umschalten. Danke für die Formel! Ich denke, da könnte so etwas sein. mIL3S –

11

Beispielcode von a nswer How to get the duration of an audio file in iOS?. Dies ist die beste Antwort.

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

+0

Dies ist der beste Weg, um diese IMO zu erreichen. – theLastNightTrain

Verwandte Themen