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

Воспроизвести звук - Objective-C

Восстановить пароль Регистрация
 
caus148
0 / 0 / 0
Регистрация: 29.05.2015
Сообщений: 5
01.06.2015, 05:34     Воспроизвести звук #1
Здравствуйте.

У нас есть void массив mdata на 2048 байт (надеюсь знакомая ситуация), и вот этот массив нужно воспроизвести.

Пробуем AVAudioPlayer, документация пытается убедить нас, что инициализировать этот объект можно с помощью NSData, но всегда выходит nill.

Вот пример, когда мы имеем массив для воспроизведения

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
AudioBufferList audioBufferList;
        NSMutableData *data = [[NSMutableData alloc] init];
        CMBlockBufferRef blockBuffer;
        CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer, NULL, &audioBufferList, sizeof(audioBufferList), NULL, NULL, kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment, &blockBuffer);
        
        for( int y=0; y< audioBufferList.mNumberBuffers; y++ ){
            
            AudioBuffer audioBuffer = audioBufferList.mBuffers[y];
            //Byte *frame = (Byte*)audioBuffer.mData;
            
            [data appendBytes:audioBuffer.mData length:audioBuffer.mDataByteSize];
            
        }
        
        CFRelease(blockBuffer);
        
        NSError *err;
        AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:data error:&err];
        NSLog(@"%@", err);
        [player play];
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2015, 05:34     Воспроизвести звук
Посмотрите здесь:

C++ Builder Как воспроизвести звук ?
Pascal ABC Воспроизвести звук
Звук в Cocoa Objective-C
Воспроизвести звук Pascal ABC
Воспроизвести звук Pascal ABC
Воспроизвести аудиопоток Objective-C
Objective-C Звук в прложении
Воспроизвести звук Android
Воспроизвести звук сирены Turbo Pascal
Звук в игрушке Objective-C
Как воспроизвести звук C++/CLI WinForms
Java SE Не могу воспроизвести звук!

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
01.06.2015, 06:41     Воспроизвести звук #2
Вы зачем темы плодите? Я же написал уже, что AVAudioPlayer просто буфер PCM проиграть не сможет. От того, что вы зададите вопрос по-новому суть не поменяется.
Можно извратиться и добавить к данным header, чтобы он распознался плеером как WAV. Но у вас же мать его real-time audio, а вы при каждом чтении хотите создавать новый плеер . Не заработает это нормально. Не ленитесь и разбирайтесь с AudioUnit.
caus148
0 / 0 / 0
Регистрация: 29.05.2015
Сообщений: 5
01.06.2015, 07:14  [ТС]     Воспроизвести звук #3
glvrzzz, Все дело в том, что теперь задача состоит в передачи аудио и проигрывании его на другом устройстве. С AudioUnit более или менее разобрался, у меня все заработало. Как я понял, самым главным объектом является массив, который и следует передавать. Но как его проиграть? Запускать AudioUnit на другом устройстве и подменять массив?
Надеюсь, что есть более красивый способ..
Yandex
Объявления
01.06.2015, 07:14     Воспроизвести звук
Ответ Создать тему
Опции темы

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