Подтвердить что ты не робот

Поток аудио из iOS

Как мне начать потоковое аудио из устройства iOS на другое устройство, такое как Mac или другое устройство iOS? Я могу найти решения, такие как AirPlay в Google, и ничего о том, как это сделать в вашем собственном приложении. Я бы предположил, что вам придется пройти через какой-то сервер.

Чтобы быть ясным, я не хочу реплицировать AirPlay. Я хочу сделать очень простой VoIP.

4b9b3361

Ответ 1

EDIT - 12 августа 2011 г.

Я не понимал, что вы хотите перейти с устройства на устройство со звуком. Вы всегда можете использовать CFNetwork и просто сокет в устройстве. Трюк собирается его обнаружить. Посмотрите на бонусные услуги. Вам все равно придется использовать AudioToolbox для обработки звука в буферах и через bonjour или сокет.

Редактирование конца

@greg AVFoundation дает вам такие вещи, как AVAudioRecorder, но это не совсем позволяет вам передавать пакеты, как он хочет.

Я бы посмотрел на AudioToolbox. Если вы используете AudioQueue, вы можете указать формат для потоковой передачи. Затем добавьте обратный вызов очереди ввода, и вы получите доступ к сырым пакетам записанного звука.

Взгляните на iLBC для кодека. Он имеет достаточно небольшой размер, чтобы позволить вам делать все по 3g.

Здесь отличная ссылка на Apple по программированию AudioQueue: http://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQRecord/RecordingAudio.html

Удачи!

Ответ 2

необоснованный вариант использования VOIP:

Шаг 1. Запишите аудио с помощью AV Foundation с помощью компрессионного энкодера
Шаг 2. Поток пакетов на другое устройство (например, RTP)
Шаг 3. Декодирование и воспроизведение аудиопакетов на удаленном устройстве

Более сложный VOIP использует случай, включающий обнаружение пользователей, установление соединений.

Эти ссылки могут помочь вам начать работу

http://developer.apple.com/library/ios/#DOCUMENTATION/AudioVideo/Conceptual/MultimediaPG/UsingAudio/UsingAudio.html

http://en.wikipedia.org/wiki/Real-time_Transport_Protocol

Ответ 3

Вы говорите, что не хотите использовать AirPlay. Исходя из этого, вам нужно будет запустить собственный сервер на устройстве iOS. Это, безусловно, возможно, и есть приложения, которые запускают различные серверы для различных задач. Тем не менее, я не очень хорошо разбираюсь в этом вопросе, и кажется, что вы правы, что информации об этом в Интернете мало.

Тем не менее, я предлагаю взглянуть на Darwin Streaming Server. Кажется, что он немного старый, но он с открытым исходным кодом и может вам пригодиться.

Ответ 4

Я думаю, что хорошим началом было бы понять старый пример CoreAudio: SpeakHere (он записывает и воспроизводит звуки с использованием API уровня низкого уровня C. CoreAudio является одним из предшественников AVFoundation)

Как сказал @DexterW, вам понадобятся знания AudioQueue и т.д.

После этого вы можете начать думать о серверах/пакетах для потока:)

Надеюсь, что это поможет.