标签: audioqueue

如何从一台iOS设备到另一台iOS设备无线传输AVAsset音频?

我正在做类似的事情,如从iPod库中流式传输音频,通过网络或蓝牙发送数据,以及使用音频队列播放.

感谢您提出这个问题和代码.帮助我很多.

我有两个问题.

  1. 我应该从一台设备发送到另一台设备?CMSampleBufferRef?AudioBuffer?MDATA?AudioQueueBuffer?包?我不知道.

  2. 当应用程序完成播放时,它崩溃了,我收到错误(-12733).我只是想知道如何处理错误而不是让它崩溃.(检查OSState?发生错误时,停止吗?)

    错误:无法读取样本数据(-12733)

core-audio audio-streaming audioqueue ios avassetreader

2
推荐指数
1
解决办法
2844
查看次数

AudioQueueEnqueueBuffer 失败

我对 AudioQueueEnqueueBuffer 的调用失败,OSStatus -66686。我以前从未见过此错误代码,并且在任何地方都找不到有关它的信息。将其转换为 NSError 并打印其描述会得到以下控制台输出:

\n\n

错误:错误域=NSOSStatusErrorDomain代码=-66686“操作无法完成\xe2\x80\x99。(OSStatus错误-66686。)”

\n\n

这是我所有相关的 AudioQueue 初始化代码:

\n\n
AudioQueueRef       audioQueue;\nAudioQueueBufferRef aq_buffer[3];\nAudioStreamBasicDescription streamFormat;\nstreamFormat.mSampleRate = 44100;\nstreamFormat.mFormatID = kAudioFormatLinearPCM;\nstreamFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;\nstreamFormat.mBitsPerChannel = 16;\nstreamFormat.mChannelsPerFrame = 1;\nstreamFormat.mBytesPerPacket = 2 * streamFormat.mChannelsPerFrame;\nstreamFormat.mBytesPerFrame = 2 * streamFormat.mChannelsPerFrame;\nstreamFormat.mFramesPerPacket = 1;\nstreamFormat.mReserved = 0;\n\nOSStatus err;\nerr = AudioQueueNewOutput(&streamFormat, AudioPlayCallback, self, \n                          CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, &audioQueue);\n\n// Start playback\nerr = AudioQueueStart(audioQueue, NULL);\n\n// Enqueue buffers\nfor (int i = 0; i < 3; i++) {\n    err = AudioQueueAllocateBuffer (audioQueue, 1024, &aq_buffer[i]); \n    err = AudioQueueEnqueueBuffer (audioQueue, aq_buffer[i], 0, …
Run Code Online (Sandbox Code Playgroud)

iphone audio objective-c audioqueue ios

1
推荐指数
1
解决办法
3593
查看次数

AudioQueue回调仅在iOS 7上获取空缓冲区

我有一个奇怪的问题.我的代码在iOS 5和6上运行良好,但在iOS 7上运行时,我在AudioQueue回调上获得了空缓冲区.

可能的相关代码:

- (void)setUpAudioFormat
{
audioFormat.mFormatID         = kAudioFormatLinearPCM;
audioFormat.mSampleRate       = SAMPLE_RATE;//16000.0;
audioFormat.mChannelsPerFrame = CHANNELS;//1;
audioFormat.mBitsPerChannel   = 16;
audioFormat.mFramesPerPacket  = 1;
audioFormat.mBytesPerFrame    = audioFormat.mChannelsPerFrame * sizeof(SInt16);
audioFormat.mBytesPerPacket   = audioFormat.mBytesPerFrame * audioFormat.mFramesPerPacket;
audioFormat.mFormatFlags      = kLinearPCMFormatFlagIsSignedInteger
| kLinearPCMFormatFlagIsPacked;

bufferNumPackets = 2048;  // must be power of 2 for FFT!
bufferByteSize = [self byteSizeForNumPackets:bufferNumPackets];

}

- (UInt32)numPacketsForTime:(Float64)seconds
{
return (UInt32) (seconds * audioFormat.mSampleRate / audioFormat.mFramesPerPacket);
}

- (UInt32)byteSizeForNumPackets:(UInt32)numPackets
{
return numPackets * audioFormat.mBytesPerPacket;
}

- (void)setUpRecordQueue
{
NSLog(@"\n+++ setUpRecordQueue");
OSStatus errorStatus = …
Run Code Online (Sandbox Code Playgroud)

audioformat audioqueue ios ios7

1
推荐指数
2
解决办法
2510
查看次数

iOS - 在 C++ 中获取可写路径

我正在用本机 C++ 编写 iOS 录音机,但无法使用 Foundation API。

我需要这样的东西:

recordFilePath = 
(CFStringRef)[NSTemporaryDirectory() stringByAppendingPathComponent: @"recordedFile.caf"];
Run Code Online (Sandbox Code Playgroud)

获取iPhone上的可写路径。

太感谢了。

c++ native audioqueue ios

1
推荐指数
1
解决办法
1305
查看次数

如何停止AudioQueue?

我正在使用文本到语音,启动音频工作正常,但我不能阻止它.这是我如何开始音频:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) {
        [[self view] setNeedsDisplay];
        [self synthesizeInBackground];
        [queue waitUntilAllOperationsAreFinished];
        [self setIsSpeaking: false];
        [[self view] setNeedsDisplay];

    }); 
Run Code Online (Sandbox Code Playgroud)

synthesizeInBackground

 - (void) synthesizeInBackground {
XLog(@"-----------------------------------entered");


queue = [[NSOperationQueue alloc] init];
XLog(@"queue: %@", queue);

operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(synthesize) object:nil];
XLog(@"operation: %@", operation);

[queue addOperation: operation];

}  
Run Code Online (Sandbox Code Playgroud)

合成

- (void)synthesize {
XLog(@"-----------------------------------entered");



NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

callback_userdata userdata;

NSError *error = nil;

self.paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
self.documentsDirectory = [self.paths objectAtIndex:0];
self.path = [self.documentsDirectory stringByAppendingPathComponent:@"readSearchresults.txt"];
IvonaStreamer *streamer …
Run Code Online (Sandbox Code Playgroud)

core-audio audiotoolbox audioqueue ios

0
推荐指数
1
解决办法
2025
查看次数