Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
caus148
0 / 0 / 0
Регистрация: 29.05.2015
Сообщений: 5
#1

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

01.06.2015, 05:34. Просмотров 845. Ответов 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];
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2015, 05:34
Ответы с готовыми решениями:

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

Звук в Cocoa
Всем приветы. Задача такая: надо написать программу, которая будет генерить...

Звук в игрушке
Здравствуйте! Пишу классический арканойд. Встал вопрос о воспроизведении...

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

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

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

Воспроизвести звук
Доброго времени суток. Как воспроизвести звук при нажатии на кнопку?...

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

Воспроизвести звук
Нужна помощь в написании простейшего звука длиной секунд 10 в паскаль АВС. Звук...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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