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

Objective-C

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

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

01.06.2015, 05:34. Просмотров 673. Ответов 2
Метки нет (Все метки)

Здравствуйте.

У нас есть 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     Воспроизвести звук
Посмотрите здесь:

Воспроизвести аудиопоток - Objective-C
Подскажите как воспроизвести аудио-поток, попытался использовать AVFoundation но при загрузке ничего не происходит... -...

Звук в Cocoa - Objective-C
Всем приветы. Задача такая: надо написать программу, которая будет генерить звук определённой частоты. В интернетах вычитал, что в...

Звук в прложении - Objective-C
Здаравствуйте!! Такая проблема: нужно чтобы звук всегда воспроизводился через одно устройство устнановленное в настройках не зависимо...

Звук в игрушке - Objective-C
Здравствуйте! Пишу классический арканойд. Встал вопрос о воспроизведении звуков. Есть код : NSURL * pathURL = ...

Воспроизвести звук - Pascal ABC
Как забацать звук?

Воспроизвести звук - Pascal ABC
Возможно добавить свой звук в паскаль,и если да то как?Заранее спасибо за ответ.

Воспроизвести звук - Программирование Android
Доброго времени суток. Как воспроизвести звук при нажатии на кнопку? playsound(sound.mp3); или что-то вроде? public void...

Воспроизвести звук - Pascal ABC
Нужна помощь в написании простейшего звука длиной секунд 10 в паскаль АВС. Звук может быть абсолютно любой, главное что бы просто был. Буду...

Как воспроизвести звук - Turbo Pascal
Возможно ли написать програму в которой будут использоватся какие-то записи при нажатии определённой кнопки? Если да - то наведитё хотя бі...

Не могу воспроизвести звук! - Java SE
Thread thread = new Thread(new Runnable() { public void run() { ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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     Воспроизвести звук
Ответ Создать тему
Опции темы

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