- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 AudioToolBox 框架中的 ExtAudioFileCreateWithURL 和 ExtAudioFileWrite 将样本保存到文件中。但现在我需要将其保存到 NSFileWrapper,因为我现在使用 NSDocument:
- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError
有没有办法将 ExtAudioFileXXX 函数与 NSMutableData 对象一起使用,以便我可以使用 NSFileWrapper initRegularFileWithContents:(NSData*)contents
方法?
用于保存到文件的精简代码(有效):
AudioStreamBasicDescription file_desc;
FillOutASBDForLPCM(file_desc, _sample_rate, _channel_count, 32, 32, true, false);
OSStatus rv = ExtAudioFileCreateWithURL(url, kAudioFileWAVEType, &file_desc, NULL, kAudioFileFlags_EraseFile, &fout);
if (rv == noErr){
int buff_size = sizeof(AudioBufferList) + sizeof(AudioBuffer);
AudioBufferList* bufferList = (AudioBufferList*)malloc(buff_size);
bufferList->mNumberBuffers = 1;
bufferList->mBuffers[0].mData = _samples;
bufferList->mBuffers[0].mNumberChannels = _channel_count;
bufferList->mBuffers[0].mDataByteSize = _channel_count * _frame_count * sizeof(float);
ExtAudioFileWrite(fout, _frame_count, bufferList);
free(bufferList);
ExtAudioFileDispose(fout);
}
最佳答案
在大多数情况下,使用外部文件是最佳解决方案。请注意,NSData
具有用于未缓存和映射文件的初始值设定项。显然,在大多数情况下,您会希望最大限度地减少 I/O,同时不消耗大量内存(并且您必须密切关注缓存内存的增长)。更进一步,考虑如何以另一种方式表示这些重要 Assets (子 NSFileWrappers、链接)的文件包装器对象,因为文档的文件可能不是一个非常小的文件(例如单个循环)。
如果内存不是问题(例如,您只处理小样本和有限的文件和文档),那么您可以使用AudioFileInitializeWithCallbacks
,它与 Wave 一起使用(但不是所有格式)。这允许您处理内存中自己的缓冲区,以进行代表内存中整个文件的连续分配。然后创建 NSData 表示很容易 - 只需监视内存使用情况并确保独占读/写访问即可。请注意,NSData
不需要创建深拷贝,并将其纳入您的设计中。显然,在 OS X 上使用此选项会更加灵活。在这种情况下,请确保您知道实际编写了多少内容。很可能,一个好的基于磁盘的解决方案(上面)可以为您节省大量磁盘写入操作。
无论如何,这比大多数基于 NSFileWrapper 的实现需要更多的考虑,因为每个文档的音频文件资源可能很快就会超过 100 MB。
关于cocoa - 使用 AudioToolBox 将 Wav 文件保存到 FileWrapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13162451/
我有两个使用 audiotoolbox 框架来播放短 mp3 文件的应用程序。部署目标是:4.0基础SDK为:iOS 5.0 SDK 我有一台运行 iOS 5.0 的 iPhone 4 和一台运行 i
我最近一直在为 iOS 开发一个非常具体的项目,我的研究使我几乎完成了最终代码。我已经解决了到目前为止我发现的所有极端困难,但是在这个问题上我似乎没有任何线索(关于解决它的原因和可能性)。 我设置了我
我想实现一个音频管理器。但是我遇到了内存泄漏。我不知道为什么和会发生什么。有人可以帮助我吗? 我创建了一个按钮,按钮事件只运行带有音频路径的 playAudio。然后,我单击按钮,单击,单击,单击,.
我对 AUAudioFilePlayer 的以下属性感到困惑。 Apple 的文档充其量是令人困惑的: kAudioUnitProperty_ScheduleStartTimeStamp kAudio
当我使用 AudioToolBox 播放音乐时,内存泄漏严重。 AVAudioPlayer *newMusicPlayer = [[AVAudioPlayer alloc] initWithData:
我使用 OpenAL 在我的应用程序中播放声音。当我使用 Instruments 工具测试它时,它发现了泄漏: LeakedObject = GeneralBlock-512 大小 = 512 字节
我正在尝试在OS X上构建Ardour。我成功运行了./waf configure,但是尝试使用./waf进行编译会导致在尝试#include文件时找不到大量文件: ../libs/appleutil
我想用我的 iPhone 录制音频信号,然后我想逐一访问该信号的样本。我在网上找到了一些类似的例子,但我从未找到一个例子(在 Swift 中)来实际读取和操作所有原始样本。我怎样才能使用 Swift
我正在尝试使用 AudioToolbox API 使用 Swift 2.0 和 Xcode 7b6。 API 使用了大量的 C 语言结构,包括函数指针。这是我第一次使用像 withUnsafeMuta
我想在我的应用程序启动时播放音频,但首先,音频无法播放!不管我怎么编码。其次,如果可以的话,我很想循环播放它。 @implementation ViewController -(void)awakeF
我目前正在使用 OpenAL 播放游戏音乐。它工作正常,除了它不适用于原始 WAV 文件之外的任何东西。这意味着我最终得到了大约 9mb 的配乐。 我是 OpenAL 的新手,我直接使用来自 Appl
我有两种不同的按钮按下声音 Action 。当我按下一个按钮时,它应该播放一种声音,当我按下另一个按钮时,它应该停止第一种声音并播放另一种声音,我该怎么做? 谢谢, -(void) onButtonP
所以我尝试将 AudioToolbox 与 RubyMotion 一起使用, 1、添加 app.frameworks << 'AudioToolbox' 在 Rakefile 中, 2、在我的一个简单
AVAudioPlayer 对象是否存在内存引导问题?在模拟器中使用 AVAudioPlayer 时出现内存泄漏。我如何创建 AVAudioPlayer 并不重要。我使用了 initWithConte
我发现了一个使用工具箱播放声音的功能,创建它的人获得了荣誉: -(SystemSoundID) createSoundID: (NSString*)name { NSString *path
我正在尝试运行现有应用程序以查看它与最新 Xcode 测试版的配合情况,并尝试在现有项目中使用 SwiftUI。当我在模拟器上运行项目时,我得到以下运行时崩溃: dyld: Symbol not fo
我使用 AudioToolBox 框架中的 ExtAudioFileCreateWithURL 和 ExtAudioFileWrite 将样本保存到文件中。但现在我需要将其保存到 NSFileWrap
所以,我有以下类(class): 录音机(使用 AudioToolbox 和 CoreAudio )记录音频。 音频播放器(使用 AVFoundation ) 录音机捕获音频,将其发送到服务器,然后服
我正在尝试使用混音器和 io 单元创建音频图。 io 单元将从麦克风接收音频并将其发送到混音器,混音器会将其与外部声音混合,然后从扬声器播放。我已经创建了如下所示的音频图,并尝试尽可能地遵循指南。但是
Apple 的文档: AudioToolbox 框架引用 > 音频文件服务引用 > 读写音频文件 > AudioFileWriteBytes Declaration Swift func AudioF
我是一名优秀的程序员,十分优秀!