标签: extaudiofile

iOS中的ExtAudioFileRead下载错误代码-50

我使用ExtAudioFileRead函数将音频文件加载到内存.但我发现代码-50总是出错.这意味着我将错误的参数传递给函数.但我不知道哪一个是错误的参数.

音频文件的数据格式为alac,sampleRate 44100k,有2个通道.

我的代码如下所示:

ExtAudioFileRef recordFile;
OSStatus error = noErr;
error = ExtAudioFileOpenURL((CFURLRef)file, &recordFile);
checkError(error, "open file");

SInt64 frameCount;
UInt32 size = sizeof(frameCount);
error = ExtAudioFileGetProperty(recordFile, kExtAudioFileProperty_FileLengthFrames, &size, &frameCount);
checkError(error, "get frameTotlal");

soundStruct *sound = &_sound;
sound->frameCount = frameCount;
sound->isStereo = true;
sound->audioDataLeft = (SInt16 *)calloc(frameCount, sizeof(SInt16));
sound->audioDataRight = (SInt16 *)calloc(frameCount, sizeof(SInt16));

AudioStreamBasicDescription desc;
UInt32 descSize = sizeof(desc);
error = ExtAudioFileGetProperty(recordFile, kExtAudioFileProperty_FileDataFormat, &descSize, &desc);


[self printASBD:desc];

UInt32 channels = desc.mChannelsPerFrame;

error = ExtAudioFileSetProperty(recordFile, kExtAudioFileProperty_ClientDataFormat, sizeof(inFormat), &inFormat);

AudioBufferList *bufferList;
bufferList = …
Run Code Online (Sandbox Code Playgroud)

core-audio extaudiofile ios

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

ExtAudioFileWriteAsync的EXC_BAD_ACCESS

我正在使用音频单元录制我们的声音.在我的回调函数中,我在AudioBufferList中获取数据.我必须将此缓冲区存储在一个文件中.

问题是; 当我尝试将缓冲区存储在.caf文件中时,应用程序崩溃了.下面是代码.

AudioStreamBasicDescription audioFormat;
audioFormat.mSampleRate         = 44100.00;
audioFormat.mFormatID           = kAudioFormatLinearPCM;
audioFormat.mFormatFlags        = kAudioFormatFlagsCanonical;
audioFormat.mBytesPerPacket     = 2;
audioFormat.mFramesPerPacket    = 1;
audioFormat.mBytesPerFrame      = 2;
audioFormat.mChannelsPerFrame   = 1;
audioFormat.mBitsPerChannel     = 16;
audioFormat.mReserved           = 0;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
if(![[NSFileManager defaultManager] fileExistsAtPath:documentsDirectory])
    [[NSFileManager defaultManager] createDirectoryAtPath:documentsDirectory withIntermediateDirectories:YES attributes:nil error:nil];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"audio.caf"];
if(![[NSFileManager defaultManager] fileExistsAtPath:path])
    NSLog(@"file not exist.");
NSLog(@"Path : %@", path);
THIS->url = [NSURL fileURLWithPath:[path retain]];
err = ExtAudioFileCreateWithURL((CFURLRef)THIS->url, kAudioFileCAFType, …
Run Code Online (Sandbox Code Playgroud)

iphone exc-bad-access extaudiofile ios

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

在iOS中将ExtAudioFileRef类型转换为AudioFileID类型

我一直在使用ExtAudioFile服务,我想使用需要AudioFileID参数的AudioFile服务.此参数对应于ExtAudioFile Services中使用的ExtAudioFileRef.如何从ExtAudioFileRef类型转换为AudioFileID类型?

audio types extaudiofile ios

5
推荐指数
2
解决办法
1179
查看次数

使用ExtAudioFileWrite for iOS将音频样本缓冲区写入aac文件

更新:我已经想出来并发布我的解决方案作为我自己的问题的答案(下面)

我正在尝试使用AAC格式的ExtAudioFileWrite将一个简单的音频样本缓冲区写入文件.

我已经使用下面的代码实现了这一点,将单声道缓冲区写入.wav文件 - 但是,我无法为立体声或AAC文件执行此操作,这是我想要做的.

这是我到目前为止所拥有的......

CFStringRef fPath;
fPath = CFStringCreateWithCString(kCFAllocatorDefault,
                                  "/path/to/my/audiofile/audiofile.wav",
                                  kCFStringEncodingMacRoman);


OSStatus err;

int mChannels = 1;
UInt32 totalFramesInFile = 100000;

Float32 *outputBuffer = (Float32 *)malloc(sizeof(Float32) * (totalFramesInFile*mChannels)); 


////////////// Set up Audio Buffer List ////////////

AudioBufferList outputData; 
outputData.mNumberBuffers = 1;
outputData.mBuffers[0].mNumberChannels = mChannels; 
outputData.mBuffers[0].mDataByteSize = 4 * totalFramesInFile * mChannels;
outputData.mBuffers[0].mData = outputBuffer;

Float32 audioFile[totalFramesInFile*mChannels];


for (int i = 0;i < totalFramesInFile*mChannels;i++)
{
    audioFile[i] = ((Float32)(rand() % 100))/100.0;
    audioFile[i] = audioFile[i]*0.2;
}

outputData.mBuffers[0].mData = &audioFile;


CFURLRef fileURL = …
Run Code Online (Sandbox Code Playgroud)

c++ iphone objective-c extaudiofile ios

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

使用aubio读取文件时在Swift中的ExtAudioFileOpenURL中获取错误代码('wht?')

我正在使用aubio来分析音频文件,但是当我尝试像这样使用 new_aubio_source 函数时:

let source = new_aubio_source(StringToUnsafeMutablePointerChar_t(url.absoluteString), 0, 512)
Run Code Online (Sandbox Code Playgroud)

我总是收到这些错误。

AUBIO ERROR: source_apple_audio: Failed opening file:///var/mobile/Containers/Data/Application/C11B42E5-02B5-4373-8302-0728B2CB2296/Documents/music.m4a, error in ExtAudioFileOpenURL ('wht?')
AUBIO ERROR: source_wavread: Failed opening file:///var/mobile/Containers/Data/Application/C11B42E5-02B5-4373-8302-0728B2CB2296/Documents/music.m4a (System error: No such file or directory)
AUBIO ERROR: source: failed creating aubio source with file:///var/mobile/Containers/Data/Application/C11B42E5-02B5-4373-8302-0728B2CB2296/Documents/music.m4a at samplerate 0 with hop_size 512
Run Code Online (Sandbox Code Playgroud)

我 100% 确定路径是正确的,但我无法找出这些错误发生的原因。我认为问题出在第一条错误消息(source_apple_audio)中。

source_apple_audio 在这里定义:

source_apple_audio

其中使用了这个函数:ExtAudioFileOpenURL,并得到了错误代码('wht?')

非常感谢您的帮助!

extaudiofile ios aubio swift

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

ExtAudioFileRead太慢了.如何让它更快?

我写了自己的音频库.(傻,我知道,但我喜欢它.)现在,我正在用它来播放iOS上iPod库的立体声文件.它运行良好,但有时调用ExtAudioFileRead()的时间超过23毫秒.由于我的AudioUnits输出设置正在以44.1KHz播放音频,并且它要求每回调1024帧.我的代码+ ExtAudioFileRead()的响应时间不得超过23毫秒.

我很惊讶ExtAudioFileRead()太慢了.我正在做的事似乎很正常.我在想,必须有一些我没有做过的无证配置魔法.这是我的相关配置代码:

ExtAudioFileRef _extAudioFileRef;
OSStatus        result;

result = ::ExtAudioFileOpenURL((__bridge CFURLRef)_url, &_extAudioFileRef);

AudioStreamBasicDescription     format;

format.mBitsPerChannel = 8 * sizeof(float);
format.mBytesPerFrame = sizeof(float);
format.mBytesPerPacket = sizeof(float);
format.mChannelsPerFrame = channelCount;
format.mFormatFlags = kAudioFormatFlagIsFloat|kAudioFormatFlagIsNonInterleaved;
format.mFormatID = kAudioFormatLinearPCM;
format.mFramesPerPacket = 1;
format.mSampleRate = framesPerSecond;
result = ::ExtAudioFileSetProperty(_extAudioFileRef,
                                    kExtAudioFileProperty_ClientDataFormat,
                                    sizeof(format),
                                    &format);
Run Code Online (Sandbox Code Playgroud)

我没有设置_extAudioFileRef的任何其他属性.

我已经跟踪了这个问题.我只是调用ExtAudioFileRead()来调整时间,所以我知道这不是我的代码减慢了这个过程.它必须是配置问题,对吧?

非常感谢任何帮助甚至猜测!

干杯,克里斯托弗

core-audio extaudiofile audiounit ios extaudiofileread

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