Форум программистов, компьютерный форум CyberForum.ru

Swift

Войти
Регистрация
Восстановить пароль
 
AntiMaster1
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 2
#1

Голосовой динамик - Swift

07.07.2016, 20:23. Просмотров 418. Ответов 0
Метки нет (Все метки)

День добрый! Пишу VOIP приложение и уже неделю пытаюсь побороть проблему: при активации записи вывод звука переключается с голосового динамика на колонки (т.е. основной динамик). При подключении наушников звук идет через них, а после их отключения - пропадает совсем. Как можно этого избежать?

Инициализация записи:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
       let session = AVCaptureSession()
////////////////////////////////////////
       let sessionQueue: dispatch_queue_t = dispatch_queue_create("AudioRecordQ",DISPATCH_QUEUE_SERIAL)
        
        session.sessionPreset = AVCaptureSessionPresetHigh
        
       
        dispatch_async(sessionQueue, {
            var mic:AVCaptureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeAudio)
            var mic_in:AVCaptureDeviceInput = AVCaptureDeviceInput.deviceInputWithDevice(mic, error:nil)! as! AVCaptureDeviceInput
            
            let audio_output = AVCaptureAudioDataOutput()
            
            
            audio_output.setSampleBufferDelegate(self, queue: sessionQueue)
            
            self.session.addInput(mic_in)
            self.session.addOutput(audio_output)
            self.session.startRunning()
        })
Инициализация вывода:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var session_play: AVAudioSession = AVAudioSession.sharedInstance()
var audioEngine: AVAudioEngine = AVAudioEngine()
var audioFilePlayer: AVAudioPlayerNode = AVAudioPlayerNode()
/////////////////////////////////
        var error: NSError?
        session_play.setCategory(AVAudioSessionCategoryPlayAndRecord , withOptions: AVAudioSessionCategoryOptions.AllowBluetooth, error: &error)
        session_play.overrideOutputAudioPort(AVAudioSessionPortOverride.None, error: nil);
        session_play.setActive(true, error: &error)
        
        println("Out \(session_play.currentRoute.outputs[0].portType)") // Пишет Receiver. Если вызвать после активации записи - Speaker
        
        var mainMixer = audioEngine.mainMixerNode
        audioEngine.attachNode(audioFilePlayer)
        audioEngine.connect(audioFilePlayer, to:mainMixer, format: audioFormat)
        audioEngine.startAndReturnError(nil)
        
        audioFilePlayer.play()
Вопроизведение через:
Objective-C
1
self.audioFilePlayer.scheduleBuffer(PCMBuffer, atTime: nil, options:nil , completionHandler: nil)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2016, 20:23     Голосовой динамик
Посмотрите здесь:

голосовой чат C++ Builder
голосовой чат C#
голосовой движок C++
Голосовой набор C++ Builder
Delphi Голосовой чат
C++ голосовой вызов
Софт Голосовой чат
Голосовой калькулятор
C++ Голосовой чат
Голосовой чат и DirectSound Delphi
Голосовой ввод C++ Builder FireMonkey

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 01:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru