- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用ExtAudioFileRead将WAV文件作为float *缓冲区读入内存。但是,我不确定结果-当我打印出来时,得到的值是-1到+ 1(理论上应该是正确的),但是如何确定它们是正确的呢?
- (float *) readTestFileAndSize: (int *) size
{
CFStringRef str = CFStringCreateWithCString(
NULL,
[[[NSBundle mainBundle] pathForResource: @"25" ofType:@"wav"] UTF8String],
kCFStringEncodingMacRoman
);
CFURLRef inputFileURL = CFURLCreateWithFileSystemPath(
kCFAllocatorDefault,
str,
kCFURLPOSIXPathStyle,
false
);
ExtAudioFileRef fileRef;
ExtAudioFileOpenURL(inputFileURL, &fileRef);
SInt64 theFileLengthInFrames = 0;
// Get the total frame count
UInt32 thePropertySize = sizeof(theFileLengthInFrames);
ExtAudioFileGetProperty(fileRef, kExtAudioFileProperty_FileLengthFrames, &thePropertySize, &theFileLengthInFrames);
AudioStreamBasicDescription audioFormat;
audioFormat.mSampleRate = 44100;
audioFormat.mFormatID = kAudioFormatLinearPCM;
audioFormat.mFormatFlags = kLinearPCMFormatFlagIsFloat;
audioFormat.mBitsPerChannel = sizeof(Float32) * 8;
audioFormat.mChannelsPerFrame = 1; // Mono
audioFormat.mBytesPerFrame = audioFormat.mChannelsPerFrame * sizeof(Float32); // == sizeof(Float32)
audioFormat.mFramesPerPacket = 1;
audioFormat.mBytesPerPacket = audioFormat.mFramesPerPacket * audioFormat.mBytesPerFrame; // = sizeof(Float32)
// 3) Apply audio format to the Extended Audio File
ExtAudioFileSetProperty(
fileRef,
kExtAudioFileProperty_ClientDataFormat,
sizeof (AudioStreamBasicDescription), //= audioFormat
&audioFormat);
int numSamples = 1024; //How many samples to read in at a time
UInt32 sizePerPacket = audioFormat.mBytesPerPacket; // = sizeof(Float32) = 32bytes
UInt32 packetsPerBuffer = numSamples;
UInt32 outputBufferSize = packetsPerBuffer * sizePerPacket;
// So the lvalue of outputBuffer is the memory location where we have reserved space
UInt8 *outputBuffer = (UInt8 *)malloc(sizeof(UInt8 *) * outputBufferSize);
NSLog(@"outputBufferSize - %llu", theFileLengthInFrames);
float* total = malloc(theFileLengthInFrames * sizeof(float));
*size = theFileLengthInFrames;
AudioBufferList convertedData;
convertedData.mNumberBuffers = 1; // Set this to 1 for mono
convertedData.mBuffers[0].mNumberChannels = audioFormat.mChannelsPerFrame; //also = 1
convertedData.mBuffers[0].mDataByteSize = outputBufferSize;
convertedData.mBuffers[0].mData = outputBuffer; //
int totalBytes = 0;
UInt32 frameCount = numSamples;
while (frameCount > 0) {
ExtAudioFileRead(fileRef, &frameCount, &convertedData);
if (frameCount > 0) {
AudioBuffer audioBuffer = convertedData.mBuffers[0];
float *samplesAsCArray = (float *)audioBuffer.mData;
memcpy(total + totalBytes, samplesAsCArray, frameCount * sizeof(float));
totalBytes += frameCount;
}
}
return total;
}
最佳答案
我能想到的只有几种测试方法:
AudioQueue
)播放音频数据关于iphone - 如何查看ExtAudioFileRead的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15599873/
你好,我真的很难处理我目前正在使用的应用程序的一些“随机”崩溃。 我使用 ExtAudioFileRead 将数据从 CFURLRef(m4a 格式的音频文件)读取到 PCM 缓冲区以进行解释。但是,
我有一个目前看来无法解决的 EXC_BAD_ACCESS 问题。我试过启用 NSZombie,这似乎是许多帖子中的建议,但我处理的是 c 指针而不是 obj c 对象,所以我没有获得任何有用的调试信息
我正在努力理解 Core Audio,或者更确切地说:Extended Audio File Services 在这里,我想使用 ExtAudioFileRead() 从文件中读取一些音频数据。 只要
这是我想做的: 从麦克风获取音频 将其编码为 AAC、G.711 或 G.726 将编码帧写入套接字。 这就是我试图到达那里的方式: 我正在使用 TheAmazingAudioEngine 从麦克风获
我使用 ExtAudioFileRead 函数将音频文件加载到内存中。但是我发现代码-50总是有错误。这意味着我向函数传递了错误的参数。但是我不知道哪个是错误的参数。 音频文件的数据格式为alac,采
我正在尝试编写一个程序来记录音频文件中样本的浮点值。我的步骤如下: 打开扩展音频文件 设置音频格式(AudioStreamBasicDescription) 将音频格式应用于我的扩展音频文件 设置一个
在 iOS 上使用 ExtAudioFileRead 读取音频文件,似乎到达 eof 完全卡住了阅读器......示例,假设分配并正确配置了 _abl AudioBufferList 和 _eaf E
我正在尝试从 MP3 文件中提取线性 PCM 数据。在 iOS 5 之前,我可以使用 AudioToolbox 框架成功完成此操作,特别是 ExtAudioFileRead 函数。但是,在 iOS 5
我正在尝试为 iPhone 编写一个波形可视化工具,但我遇到了一个关于 ExtAudioFileRead 的有趣问题。 我正在读取 VBR MP3 文件。我的客户端格式是 44.1kHz LPCM,单
我正在开发一个使用扩展音频文件服务的 iPhone 应用程序。我尝试使用ExtAudioFileRead读取音频文件,并将数据存储在AudioBufferList结构中。 AudioBufferLis
我是一名优秀的程序员,十分优秀!