2012-12-14 14 views
6

मैं AVAudioRecorder का उपयोग कर ऑडियो रिकॉर्ड कर रहा हूं, और अब मैं अपने रिकॉर्ड किए गए ऑडियो की सटीक समय अवधि प्राप्त करना चाहता हूं, मैं इसे कैसे प्राप्त कर सकता हूं।मैं आईफोन में अपने रिकॉर्ड किए गए ऑडियो का समय कैसे प्राप्त कर सकता हूं?

AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:avAudioRecorder.url options:nil]; 
CMTime time = asset.duration; 
double durationInSeconds = CMTimeGetSeconds(time); 

लेकिन मेरे time चर वापसी शून्य और durationInSeconds वापसी 'नेन', क्या करता है कि नेन द्वारा मतलब है:

मैं इस कोशिश की है।

अद्यतन

user1903074 जवाब मेरी समस्या हल है, लेकिन सिर्फ जिज्ञासा के लिए, AVAudioplayer बिना यह करने के लिए किसी भी तरह से thair है।

+1

नैन का मतलब कोई संख्या नहीं है। संपत्ति भी न्यूल है? – geraldWilliam

+0

मैं उस thanx नहीं जानता। –

उत्तर

13

यदि आप AVAudioPlayerAVAudioRecorder के साथ audioPlayer.duration प्राप्त कर सकते हैं और समय प्राप्त कर सकते हैं।

इस तरह।

NSError *playerError; 

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:yoururl error:&playerError]; 

NSlog(@"%@",audioPlayer.duration); 

लेकिन केवल तभी जब आप AVAudioRecorder साथ AVAudioPlayer उपयोग कर रहे हैं।

अद्यतन

या आप इस तरह कर सकते हैं। क्योंकि उनके कुछ माइक्रोसेकंड मूल्य है

//put this where you start recording 
    myTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES]; 

// a method for update 
- (void)updateTime { 
    if([recorder isRecording]) 
    { 

     float minutes = floor(recorder.currentTime/60); 
     float seconds = recorder.currentTime - (minutes * 60); 

     NSString *time = [[NSString alloc] 
            initWithFormat:@"%0.0f.%0.0f", 
            minutes, seconds]; 
    } 
} 

स्टील आप कुछ विलंब हो सकता है, और मुझे नहीं है कि यह कैसे क्लिप को .लेकिन सभी thats पता है।

+0

हां, मैं AVAudioRlayorder के साथ AVAudioPlayer का उपयोग कर रहा हूं। –

+0

यह काम महान –

+2

@ लिपिड: लेकिन मुझे लगता है कि रिकॉर्ड की गई ध्वनि की अवधि हमेशा AVAudioPlayer का उपयोग करके खेली गई ध्वनि के समान नहीं होगी। (अगर मैं गलत हूं तो मुझे सही करें!) – iShwar

1

मेरा समाधान बस प्रारंभ तिथि का ट्रैक रखने के लिए है, और अंत में, पारित समय की गणना करें। यह मेरे लिए काम करता है क्योंकि उपयोगकर्ता रिकॉर्डर शुरू कर रहा है और रोक रहा है।

रिकॉर्डर वर्ग

NSDate* startTime; 
NSTimeInterval duration; 

-(void) startRecording 
{ 
    //start the recorder 
    ... 
    duration = 0; 
    startTime = [NSDate date]; 

} 

-(void) stopRecording 
{ 
    //stop the recorder 
    ... 
    duration = [[NSDate date] timeIntervalSinceDate:startRecording]; 
} 
0

मैं जानता हूँ कि मूल प्रश्न ऑब्जेक्टिव-सी में एक जवाब की तलाश में गया था, लेकिन स्विफ्ट में ऐसा करने के लिए देख उन लोगों के लिए, इस स्विफ्ट 4.0 के साथ काम करता है:

let recorder = // Your instance of an AVAudioRecorder 
let player = try? AVAudioPlayer(contentsOf: recorder.url) 
let duration = player?.duration ?? 0.0 

मान लें कि आपके पास वैध रिकॉर्डर है, तो आपको एक अवधि मान मिलेगा, जिसे TimeInterval के रूप में दिया जाता है।

संबंधित मुद्दे

 संबंधित मुद्दे