问题标签 [extaudiofile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - AVAudioFormat initStandardFormatWithSampleRate 是否返回不正确的流描述?
尝试使用 ExtAudioFileCreateWithURL 编写 PCM 音频文件时,我得到一个“fmt?” 使用 2 声道音频格式时出错(Mac OS X,SDK 10.10)
我创建音频格式
并在我的应用程序中将其用作 AUGraph 的音频格式。
AUGraph 适用于 1ch 和 2ch 格式,但是当尝试使用 ExtAudioFileCreateWithURL 编写音频文件时,它只适用于 1ch,2ch 结果为“fmt?” 错误。
运行以下测试时...
...这是控制台中的输出:
mBytesPerFrame 和 mBytesPerPacket 字段不应该有区别吗?还是我在这里错过了什么?
ios - 比较应该是相同的 AAC 音频文件 - 时间戳?
我在 iPhone (iOS) 和模拟器中以某种方式编码 AAC/M4A 音频文件时遇到问题
- 单声道/立体声和
- 曲目时长
被 VLC 等外部播放器正确识别。
为了解决各种设备上的问题,我编写了为各种编码配置生成测试文件的代码。编码后的声音是始终相同的生成正弦波。这很好用。在下一步中,我会对在不同设备和模拟器中生成的这些测试文件进行二进制比较。令我惊讶的是,这些.m4a
文件从来都不是相同的(aac 文件一直都是相同的)。我使用ExtAudioFile...()
写入文件的方法并使用文件类型标识符kAudioFileM4AType
。
我怀疑这些文件中包含一个时间戳,这混淆了我的二进制比较。
任何人都可以确认或反驳 M4A 文件中的时间戳,这总是会混淆二进制比较吗?
ios - ExtAudioFile - 如何设置元数据
我正在使用ExtAudioFileWriteAsync将音频内容写入m4a文件,它运行良好。但是,我还想将元数据添加到导出的文件中。
这是可能吗?如果是这样,怎么做?
任何帮助将非常感激。
ios - Core Audio - 将数据写入音频文件的开头或中间(结尾以外的地方)
所以,我有一个正在开发的录音 iOS 应用程序。在我的应用程序中,我需要在用户选择的文件(在文档目录中)的任何位置写入音频,这将覆盖那里的任何音频。
示例:我录制了 3 分钟的音频,滚动到第二分钟,再次开始录制 10 秒。现在,2:00 - 2:10 包含新音频,而旧音频已消失(在此示例中音频文件不会变长)。
我正在使用 EZAudio,我可以录制和暂停任意多次,并且它会一直附加到末尾。我本来打算ExtAudioFileSeek
在文件中向后搜索并从那里记录,但你只能在文件以只读方式打开时使用它。
我不想要的:我不想记录到不同的文件,并使用此方法将两个文件附加在一起:https ://stackoverflow.com/a/10562809/1391672 与此相关的加载时间很长. iOS 应用程序 Voice Memos 会立即将文件附加在一起。
可以ExtAudioFileWriteAsync
用来在开头附加音频吗?还是在指定的样品位置?我应该看看另一种方法吗?
ios - 使用扩展音频文件写入和读取音频文件
我在使用设备录制时使用 ExtAudioFileWriteAsync 写入音频文件,但是一旦我完成录制,我尝试使用 ExtAudioFileRead 函数读取它,我得到的样本与我正在编写的样本不同......有人知道为什么会发生这种情况吗?
对于写作:
阅读:
顺便说一句,我正在使用Novocaine项目来获取设备音频。我可以使用 Novocaine 代码或任何其他播放器重现保存的音频。
编写 ExtAudioFileRef 输出时:
outputFileDesc 在哪里
AudioStreamBasicDescription outputFileDesc = {44100.0, kAudioFormatMPEG4AAC, 0, 0, 1024, 0, thisNumChannels, 0, 0}; outputFileDesc.mFormatFlags = kAudioFormatFlagIsBigEndian | kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
读取 ExtAudioFileRef 输入文件时:
在这两种情况下(写作和阅读),它都采用相同的格式:
顺便说一句,即使读取样本不等于写入样本,两个信号的平均值也非常相似。但我不完全明白为什么不完全相等!
知道我做错了什么吗?
core-audio - Core Audio 中的 EXC_BAS_ACCESS - 使用扩展音频文件服务将麦克风数据写入文件
我正在尝试将传入的麦克风音频写入文件。因为音频样本在时间紧迫的回调中一次传送 4096 帧(我的项目的设置帧速率),所以我不能简单地将字节写入使用 AudioFileWriteBytes 的文件。我也不希望通过设置自己的环形缓冲区来存储样本以在其他地方写入的努力和复杂性。因此,我将扩展音频文件 API 用于其 ExtAudioFileWriteAsync 函数。
根据文档的指示,我使用 CFURL 创建了 ExtAudioFileRef,然后使用空缓冲区和 main 中的 0 帧运行它一次。然后我启动我的 AUHAL 单元并开始调用输入回调。
ExtAudioFileWriteAsync(player.recordFile, 0, NULL);
我有我的代码可以异步写入这个文件。我将调用嵌套在调度队列中,以便它在回调函数退出范围后运行(不确定是否有必要,但在没有封闭调度块的情况下出现此错误)。这是现在的回调。
它在第一次回调调用时立即退出错误访问异常。为清楚起见,这些是我开始创建文件时的设置。
ios - 使用 aubio 读取文件时,在 Swift 的 ExtAudioFileOpenURL 中获取错误代码('wht?')
我正在使用aubio来分析音频文件,但是当我尝试像这样使用函数 new_aubio_source 时:
我总是收到这些错误。
我 100% 确定路径是正确的,但我就是不知道为什么会出现这些错误。我认为问题出在第一条错误消息(source_apple_audio)中。
source_apple_audio 在这里定义:
它使用了这个函数:ExtAudioFileOpenURL,并得到了错误代码('wht?')
非常感谢您的帮助!
ios - ExtAudioFileRead 太慢。如何让它更快?
我已经编写了自己的音频库。(傻,我知道,但我喜欢它。)现在,我用它来播放 iOS 上 iPod 库中的立体声文件。它运行良好,只是有时调用 ExtAudioFileRead() 需要超过 23 毫秒。由于我的 AudioUnits 输出设置以 44.1KHz 播放音频,并且每次回调要求 1024 帧。我的代码 + ExtAudioFileRead() 响应时间不得超过 23 毫秒。
我很惊讶 ExtAudioFileRead() 这么慢。我正在做的事情似乎很正常。我在想一定有一些我没有做的未记录的配置魔法。这是我的相关配置代码:
我没有设置 _extAudioFileRef 的任何其他属性。
我已经追查到这件事了。我已经在对 ExtAudioFileRead() 的调用中进行了时间测量,所以我知道不是我的代码减慢了这个过程。应该是配置问题吧?
非常感谢您的帮助甚至猜测!
干杯,克里斯托弗
python - 使用 CoreAudio 获取正确的 FileLengthFrames
我正在努力将我的 Python 代码转换为 Objective C 以在 ios 设备上运行。关于读取音频文件的代码。在 Python 中,我使用 AudioSegment 读取文件,结果是数组中有 2 个单独的通道。
例如:
所以python的总长度是20
这是我在目标 c 中获得音频输出的方法
输出是:
因此,目标 c 的输出是左右声道混合的。所以我必须通过代码将它们分开:
现在我有 2 个与目标 c 分离的通道:
所以我从目标 c 得到的总长度是 10,而在 python 中是 20。我的其余数据在哪里?我错过了一些步骤吗?还是配置错误?感谢帮助。