我想每秒调用 20 次 installTapOnBus:bufferSize:format:block:

2023-11-25

我想实时显示麦克风输入的波形。 我已经使用installTapOnBus:bufferSize:format:block:实现了,这个函数一秒钟调用3次。 我想设置这个函数每秒被调用20次。 我可以在哪里设置?

AVAudioSession *audioSession = [AVAudioSession sharedInstance];

NSError* error = nil;
if (audioSession.isInputAvailable) [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
if(error){
    return;
}

[audioSession setActive:YES error:&error];
if(error){
    retur;
}

self.engine = [[[AVAudioEngine alloc] init] autorelease];

AVAudioMixerNode* mixer = [self.engine mainMixerNode];
AVAudioInputNode* input = [self.engine inputNode];
[self.engine connect:input to:mixer format:[input inputFormatForBus:0]];

// tap ... 1 call in 16537Frames
// It does not change even if you change the bufferSize
[input installTapOnBus:0 bufferSize:4096 format:[input inputFormatForBus:0] block:^(AVAudioPCMBuffer* buffer, AVAudioTime* when) {

    for (UInt32 i = 0; i < buffer.audioBufferList->mNumberBuffers; i++) {
        Float32 *data = buffer.audioBufferList->mBuffers[i].mData;
        UInt32 frames = buffer.audioBufferList->mBuffers[i].mDataByteSize / sizeof(Float32);

        // create waveform
        ...
    }
}];

[self.engine startAndReturnError:&error];
if (error) {
    return;
}

他们说,苹果支持回复no:(2014 年 9 月)

是的,目前我们内部有一个固定的 Tap 缓冲区大小(0.375s), 并且客户端为 Tap 指定的缓冲区大小未生效。

但有人调整缓冲区大小并得到 40mshttps://devforums.apple.com/thread/249510?tstart=0

无法检查它,neen in ObjC :(

UPD有用!只需单行:

    [input installTapOnBus:0 bufferSize:1024 format:[mixer outputFormatForBus:0] block:^(AVAudioPCMBuffer *buffer, AVAudioTime *when) {
    buffer.frameLength = 1024; //here
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我想每秒调用 20 次 installTapOnBus:bufferSize:format:block: 的相关文章

随机推荐

  • JavaScript 标签的 src 属性是否会在所有浏览器中遵循 HTTP 重定向

    假设一个 javascript 标签的 src 属性指向一个重定向 where http foo com foo js是 301 重定向到https foo com foo js 所有浏览器都能成功加载JS文件吗 我注意到它似乎可以在 Ch
  • Spring JDBC BeanPropertyRowMapper yes no ('Y','N') 到布尔 bean 属性

    我有一个带有一些字符串 整数和布尔字段的类 我为他们声明了 getter 和 setter public class SomeClass private int id private String description private b
  • 由于 ,无法将 .Union 与 Linq 一起使用

    我有点被这个问题困扰了 希望我能得到一些帮助 这就是重点 我必须用该 SQL 请求填充我的 DataGridView SELECT LOT NumLot EtatLot NomEmploye FROM LOT JOIN AFFECTATIO
  • 如何优雅地关闭因关闭执行该应用程序的命令行而终止​​的 Java 应用程序?

    有一个已回答的问题优雅地关闭 Java 命令行程序的最佳方法 当程序被 Ctrl C 终止时 关闭挂钩会执行此任务 我的问题是如果在Java程序执行过程中命令行本身关闭了如何优雅退出 我用关闭挂钩进行了测试 但在这种情况下它不起作用 我无法
  • 用 jQuery 制作一个逃跑按钮

    我想创建一个带有简单按钮的页面 当用户尝试单击它时 该按钮会远离用户 我们可以称之为 逃跑 按钮吗 有没有一个简单的 jQuery 片段可以让我做同样的事情 问候 卡兰 米斯拉 button hover function this css
  • ios mapkit 通过点击地图关闭注释标注

    我有一个地图套件应用程序 可以在地图上放置注释 当您按下它们时 它会显示带有标题属性的标注 这工作正常 但用户无法关闭它们 它们保持打开状态 直到点击另一个注释 我不能让用户可以点击地图上的其他位置 或再次点击注释 来关闭它吗 我有一种感觉
  • Windows Powershell 中的 Unix tail 等效命令

    我必须查看大文件的最后几行 典型大小为 500MB 2GB 我正在寻找相当于 Unix 命令的命令tail对于 Windows Powershell 一些可用的替代方案是 http tailforwin32 sourceforge net
  • VB.NET 窗口屏幕截图 (ALT+PRINTSCREEN)

    我在某处找到了该代码 我发现它非常有用 但我想找到一种方法使其工作 以便它仅捕获给定的窗口目标 可能带有进程 ID 或窗口名称 即使该窗口未处于活动状态 我不想使该窗口处于活动状态 但想要获得屏幕截图 就像我在其上执行 Alt PrintS
  • TypeScript:根据字符串文字属性一般推断联合类型成员

    TypeScript v3 2 2 允许我定义接口的联合 每个接口都有一个唯一的字符串文字属性 可以用作类型保护 例如 type Device Laptop Desktop Phone interface Laptop type Lapto
  • 如果给定表达式*不*格式良好,“anti-SFINAE”将启用重载

    如果特定表达式的格式不正确 则可以轻松使用 SFINAE 隐藏特定函数重载 但我想做相反的事情 隐藏重载当且仅当给定表达式is格式良好 并且以非常通用的方式这样做 我有一个适用于 clang 3 5 0 和 gcc 5 2 0 的解决方案
  • 在 C++ 程序中以编程方式检测字节顺序

    是否有一种编程方法来检测您是否处于大端或小端架构上 我需要能够编写在 Intel 或PPC系统并使用完全相同的代码 即没有条件编译 我不喜欢基于类型双关的方法 它经常会被编译器警告 这正是工会的目的 bool is big endian v
  • 如何映射联合数组类型?

    我有以下结构 interface Test1 number number interface Test2 extends Test1 text string let test Test1 Test2 test map obj gt does
  • JavaScript 中的空白字符串是真还是假?

    这个表情 true回报false 意思是 是虚假的 然而if console log true else console log false 得到结果为真 现在我很困惑 空白字符串是真还是假 字符串 是一个 真实 值 以下是 假 值的列表
  • before_filter :require_owner

    我有许多资源 行程 时间表等 其操作应仅限于资源所有者 如何使用 ApplicationController 中定义的 require owner 方法来实现代码来实现此目的 理想情况下 代码将查找所有者的继承链 以便 before fil
  • 显示通知 DIV 时如何“调暗”网页的其余部分?

    在我的网络应用程序中 我显示了一个 通知 DIV 我想 调暗 页面的其余部分 以便通知 DIV 在显示时更加突出 有没有一种相当简单的方法可以做到这一点 这个问题只涉及视觉效果 而不涉及页面其余部分的功能 下面是我在网络其他地方找到的功能示
  • 更新 select2 数据而不重建控件

    我正在转换一个
  • 在 Python 中编写固定宽度、空格分隔的 CSV 输出

    我想使用 Python 的 csv writer 编写一个固定宽度 空格分隔和最少引用的 CSV 文件 输出示例 item1 item2 next item1 next item2 anotheritem1 anotheritem2 If
  • 查找字符串中所有重复的子字符串以及它们出现的频率

    Problem 我需要满足以下条件的所有字符序列 字符序列必须出现多次 LE 1 因此无效 字符序列必须长于 1 个字符 因此 M 2 无效 字符序列不得是出现相同次数的较长现有序列的一部分 因此 如果 LIO 2 存在 则 LI 2 无效
  • 我对 getline+strings 不明白什么?

    这是我第一次使用 stackoverflow 我一直无法找到有关 getline 的所需信息 我正在参加一个简单的工程转移编程课程 因此我们编写的代码非常简单 我在这里想做的就是将用户定义数量的问题和答案放入两个不同的数组中 我的 whil
  • 我想每秒调用 20 次 installTapOnBus:bufferSize:format:block:

    我想实时显示麦克风输入的波形 我已经使用installTapOnBus bufferSize format block 实现了 这个函数一秒钟调用3次 我想设置这个函数每秒被调用20次 我可以在哪里设置 AVAudioSession aud