2013-07-30 31 views
6

Tôi đang phát triển một ứng dụng ghi âm và tôi muốn phát âm thanh khi quá trình ghi bắt đầu.AudioServicesPlaySystemSound trong khi AVCaptureSession đang hoạt động

Rất tiếc, có vẻ như iOS 5 không thể phát âm thanh hệ thống khi một thiết bị âm thanh hoạt động khi một thiết bị âm thanh đang hoạt động khi AVCaptureSession.

Dưới đây là phần có liên quan của mã Tôi đang sử dụng

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSURL * soundURL = [[NSBundle mainBundle] URLForResource:@"recording-starts" withExtension:@"aif"]; 
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, &_recStartSound); 

    //... 

    if ([self.captureManager setupSession]) { 
     // ... 

     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
      [self.captureManager.session startRunning]; 
     }); 

     // ...      
    } 
} 

Sau đó, tôi chỉ cần gọi AudioServicesPlaySystemSound(_recStartSound) và không có gì diễn ra. Tuy nhiên, nếu tôi thực hiện cùng một cuộc gọi trước khi thiết lập phiên, âm thanh phát như mong đợi.

Tôi tìm thấy điều này bug report, chính xác liên quan đến vấn đề của tôi, cũng như câu hỏi thisthis, nhưng tôi không thể tìm thấy bất kỳ giải pháp nào khác trong số đó.

Làm cách nào để phát âm thanh ngắn ngay trước khi bắt đầu ghi AV?

+0

Phát âm thanh, sau đó bắt đầu chụp? –

+0

Đây là câu hỏi rất giống với câu hỏi trước: http://stackoverflow.com/questions/16309802/play-system-sound-while-recording-video-audio –

+0

ai cũng có thể giúp tôi với câu hỏi này http:// stackoverflow.com/questions/21059607/how-to-use-vibration-while-recording-iphone5-ios –

Trả lời

0

Phát âm thanh bằng AVAudioPlayer.

+0

Tôi không hiểu tại sao điều này lại bị bỏ phiếu. Điều này thực sự làm việc và giải quyết những gì câu hỏi được hỏi về (chơi một âm thanh trong khi một AVCaptureSession đang hoạt động). – simonfi

0

Mở rộng câu trả lời sc0rp10n, những thay đổi mã trong câu hỏi sẽ chỉ đơn giản là:

Khởi tạo các cầu thủ âm thanh (_recStartSound là loại AVAudioPlayer *):

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSURL * soundURL = [[NSBundle mainBundle] URLForResource:@"recording-starts" withExtension:@"aif"]; 
    _recStartSound = [[AVAudioPlayer alloc] initWithContentsOfURL: soundURL error: NULL]; 

    ... 
} 

Khi bạn muốn chơi âm thanh:

[_recStartSound play]; 
0

Xem Are there any other iOS system sounds available other than 'tock'?

Sau một số thử nghiệm và lỗi với âm thanh hệ thống có sẵn, trên iOS 8.1.3/iPhone 6, tôi có thể phát hai loại này:

AudioServicesPlaySystemSound (1114);

AudioServicesPlaySystemSound (1113);

chỉ đòi hỏi một dòng mã để chơi âm thanh sau khi kết nối:

  • AudioToolbox/AudioToolbox.h

    (xem ở trên liên kết để biết thêm chi tiết)

Và đây là một phần của danh sách các âm thanh có sẵn (từ các ý kiến ​​ở trên) http://iphonedevwiki.net/index.php/AudioServices

Các vấn đề liên quan