2011-01-07 5 views
5

(目的C) 単純なAudioServicesPlaySystemSoundIDとそれに対応するものを使用していますが、すでにオーディオファイルの長さを見つける方法がある。オーディオファイルの長さを求める方法(秒単位)

私はAudioServicesGetPropertyInfoがあることを知っていますが、それはバイトバッファを返すようです - オーディオファイルは自分の長さを埋め込みますか?

ビットレート* fileSizeに基づく式が長さに変換されるのでしょうか?

mIL3S

www.milkdrinkingcow.com

答えて

14

迅速なGoogle検索によれば、式がある:

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

あなたがするために、システムサウンドサービスを使用している特定の理由があります音を出す? AVPlayerを使用せずに http://developer.apple.com/library/mac/#samplecode/PlayFile/Introduction/Intro.html

Float64 fileDuration = PrepareFileAU (fileAU, fileFormat, audioFile); 

がでADCサンプルを参照してくださいでください

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

私はただAVAudioPlayerを使うべきだと思います。私はAudioServicesが大丈夫だったという少々の音を出していたので推測します。今私はそれから私はおそらく切り替える必要がありますより多くの情報が必要です。しかし、式をありがとう!私はそれのようなものがあるかもしれませんが。 mIL3S –

0

:あなたのサウンドを処理するためにAVAudioPlayerを使用している場合

次のような何かを行うことができます。 ..

+0

これはMac OS Xのみではありませんか?質問はiPhoneでタグ付けされています。 – newenglander

11

サンプルコードnswer How to get the duration of an audio file in iOS?。これは最高の答えです。

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

+0

これは、このIMOを達成する最も一般的な方法です。 – theLastNightTrain

関連する問題