iOS8 AVAudioEngine 如何通过多点连接发送麦克风数据?

2023-11-29

我想通过多点连接 (iOS 8) 发送麦克风音频数据,并通过接收方的扬声器播放它。我还设置了 AVAudioEngine,并且可以从(上方)扬声器输出听到麦克风数据,但我不知道如何通过网络发送 AVAudioPCMBuffer。这是我的代码片段:

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

[mainMixer installTapOnBus:0 bufferSize:4096 format:[mainMixer outputFormatForBus:0] 
    block:^(AVAudioPCMBuffer *buffer, AVAudioTime *when) {

    //==== How to send the PCMBuffer ?? ======//
}];

NSError *error = nil;
[self.engine startAndReturnError:&error];

if(error)
{
    NSLog(@"error: %@", [error localizedDescription]);
}

我是否将其作为 NSData 或 NSStream 发送?

感谢您的帮助。谢谢。


我没有尝试过这个解决方案:

- (NSOutputStream *)startStreamWithName:(NSString *)streamName
                                 toPeer:(MCPeerID *)peerID
                                  error:(NSError **)error

您可以使用以下命令接收浮点数组财产buffer.floatChannelData。现在您可以将此浮点数组打包到NSOutputStream并发送它。

在客户端,您可以尝试接收流:

- (void)session:(MCSession *)session
didReceiveStream:(NSInputStream *)stream
       withName:(NSString *)streamName
       fromPeer:(MCPeerID *)peerID
{
    stream.delegate = self;
    [stream scheduleInRunLoop:[NSRunLoop mainRunLoop] 
                      forMode:NSDefaultRunLoopMode];
    [stream open];
}

但在尝试此操作之前,您可以尝试发送随机值(因此白噪声)而不是浮点数组,因此您可以确保发送这些缓冲区(我们正在谈论实时)的时隙足够宽。

更新 15.10.2014我找到了你所需要的:http://robots.thoughtbot.com/streaming-audio-to-multiple-listeners-via-ios-multipeer-connectivity

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS8 AVAudioEngine 如何通过多点连接发送麦克风数据? 的相关文章

  • 如何注册音量变化通知?

    当 OS X 音量发生变化时 我需要通知我的应用程序 这适用于桌面应用程序 不适用于 iOS 我如何注册此通知 这可能有点棘手 因为某些音频设备支持主通道 但大多数不支持 因此音量将是每个通道的属性 根据您需要执行的操作 您可以仅观察一个通
  • 在 Swift 中以编程方式创建 UITableViewController

    正如标题所示 我试图以编程方式设置 UITableViewController 经过几个小时的尝试 我希望有人可以帮助我 是的 我已经查看了有关此事的其他帖子 import UIKit class MainViewController UI
  • 当我在设备中运行应用程序时,dyld`gdb_image_notifier 异常

    当尝试在设备上加载我的应用程序时 有时我会遇到以下情况 例外 dyld gdb image notifier 0x2beca0cc bx lr 但停止并再次运行后一切正常 任何人都可以告诉我为什么会发生这种情况 基本上 调试器中似乎有一个断
  • iOS 8:UINavigationController 隐藏后退按钮

    在 iOS 8 XCode 6 0 1 iPhone 6 中运行应用程序后 后退按钮不会隐藏 My code void removeCategoriesButton if UI USER INTERFACE IDIOM UIUserInte
  • 将 H.264 I 帧放入 AVSampleBufferDisplayLayer 但不显示视频图像

    在详细回顾了 WWDC2014 Session513 后 我尝试在 IOS8 0 上编写我的应用程序来解码和显示一个实时 H 264 流 首先 我成功构建了H264参数集 当我得到一个带有 4 位起始代码的帧时 就像 0x00 0x00 0
  • 核心音频指导/入门

    我一直在阅读 ios 4 的核心音频 目的是构建一个小测试应用程序 目前我对所有 api 的研究感到非常困惑 理想情况下 我想知道如何从两个 mp3 中提取多个样本到数组中 然后在回调循环中 我想将这些样本混合在一起并将它们发送到扬声器 苹
  • iOS 8 中的自定义键盘可以添加新字符吗?

    在 iOS 8 中 Apple 为开发人员提供了创建自定义键盘的能力 在里面文档 https developer apple com library prerelease ios documentation General Conceptu
  • 在 WKWebView 中加载本地文件在设备中不起作用

    我无法在 wkwebview 中加载本地 epub 文件 从文档目录 它可以在模拟器中运行 但不能在设备中运行 我了解到这是 iOS 8 的一个错误here http www openradar me 18039024 iOS 8 已经解决
  • 如何在 AVCaptureDevice 上准确设置快速快门速度(曝光时间)?

    我正在开发适用于 IOS 13 的相机应用程序 为此 我将 AVCaptureSession 与 AVCaptureVideoPreviewLayer 结合使用 到目前为止一切正常 现在我想让用户从给定的典型快门速度值数组 以 1 3 曝光
  • 在 iOS 8 中呈现相机权限对话框

    当我的应用程序在 iOS 8 上第一次尝试访问摄像头时 会向用户显示一个摄像头权限对话框 很像 iOS 7 中用于访问麦克风的麦克风对话框 在 iOS 7 中 可以预先调用麦克风权限对话框并查看是否授予了权限 请参阅这个问题 https s
  • 来自 Popover 的 UIActionSheet 和 iOS8 GM

    有人在尝试从弹出窗口显示 UIActionSheet 时收到此消息吗 您的应用程序呈现了 UIAlertController 样式的 UIAlertControllerStyleActionSheet 具有此样式的 UIAlertContr
  • 在 iOS8 中使用 UISearchBar 启用取消按钮

    有什么方法可以启用 UISearchBar 的 取消 按钮吗 现在 每当我致电辞职第一响应者时 取消按钮都会被禁用 仅当我再次点击搜索栏时 取消才会启用 有没有办法停止禁用取消按钮 这是适用于 iOS 8 和 Swift 的可行解决方案 f
  • AVFoundation 在后台/锁屏上播放音频 Swift

    我正在尝试找到一种使用 AVFoundation 在用户处于锁定屏幕上或在使用我的应用程序期间锁定应用程序时播放音频的方法 class ViewController UIViewController AVAudioPlayerDelegat
  • 如何正确定向从 AVCaptureVideoDataOutputSampleBufferDelegate 生成的图像

    我在用着AVCaptureVideoDataOutputSampleBufferDelegate我收到一个CMSampleBufferRef我将其转换为UIImage 但生成的图像方向不正确 Get a CMSampleBuffer s C
  • 如何在 SwiftUI 中管理 AVPlayer 状态

    我有 SwiftUI 中的 URL 列表 当我点击某个项目时 我会呈现一个全屏视频播放器 我有一个 EnvironmentObject它处理一些查看器选项 例如 是否显示时间码 我还有一个显示和隐藏时间码的切换开关 我只在本例中包含了该切换
  • 故事板中的 Xcode 6 UIVisualEffectView

    我正在 Xcode 6 中的对象库中查找 UIVisualEffectView 以在 Storyboard 中添加模糊效果 我知道如何以编程方式执行此操作 但我找不到在故事板中执行此操作的方法 这在当前的测试版中是否不可用 或者有没有一种不
  • 如何在 iOS8 上以编程方式创建一个没有 Storyboard 的 Today 小部件?

    我尝试删除故事板文件和相关的Info plist进入但这次扩展停止工作 它甚至不能从 XCode 启动 The operation couldn t be completed LaunchServicesError error 0 在常规应
  • 如何将任意颜色的色度键滤镜应用到实时摄像头源ios?

    基本上我想将色度键滤镜应用到 ios 实时摄像头源 但我希望用户选择将被另一种颜色替换的颜色 我找到了一些使用绿屏的示例 但我不知道如何动态替换颜色而不仅仅是绿色 知道如何以最佳性能实现这一目标吗 您之前曾询问过我的情况GPUImage h
  • 我可以对图像进行动画处理吗 iOS8 LaunchScreen.xib

    问题 有没有方法可以为针对 iOS 8 1 部署的 Xcode 6 项目的 LaunchScreen xib 文件中的任何内容设置动画 Context 我正在寻找制作简单的动画来传达活动或在用户等待时分散他们的注意力 例子 加载栏 活动指示
  • 在 iOS 上使用 HEVC 编码器输出视频尺寸巨大

    我有一个项目 目前使用 H 264 编码器在 iOS 上录制视频 我想尝试在 iOS 11 中使用新的 HEVC 编码器来减小文件大小 但发现使用 HEVC 编码器会导致文件大小急剧膨胀 GitHub 上的一个项目显示了该问题 它使用 H

随机推荐

  • 如何使用 appCompat 22.1 及更高版本中的新 AlertDialog 并设置其样式

    我正在尝试从默认的 android 迁移AlertDialog到 appCompat 22 1 中包含的新版本 到目前为止我明白你只需要导入android support v7 app AlertDialog包以便使用它 但我该如何设计它呢
  • Npm 安装不起作用

    我已经在ubuntu上安装了nodejs node v v0 10 25 npm v gives 1 3 10 当我跑步时 sudo npm install g or sudo npm install 它给了我以下错误 第1523章 152
  • 从 C 中的命令行捕获可变长度字符串

    我到处寻找问题的答案 但尚未找到问题的可靠答案 我目前正在用 C 语言编写一个程序 专门针对 UNIX 命令行 我使用 Linux 作为我的开发环境 但我希望这个程序尽可能可移植 现在 我有一个提示用户输入的基本 shell 然后 用户将输
  • 如何放松对已知变体的嵌套匹配的非详尽模式检查?

    我如何说服 Rust 编译器内部match这里的表达很好 因为外部match已经限制了可能的类型 enum Op LoadX LoadY Add fn test o Op match o Op LoadX Op LoadY gt do so
  • javascript onkeydown - event.which 只给出大写字符的问题

    我编写了一段 JavaScript 代码来在文本区域内按下按键 我已使用 onkeydown 事件来捕获按下的键 并在触发事件时调用函数 在函数中 我使用 event which 来按下按键 但这并没有给出正确的按键按下 对于按下的任何字符
  • 日期格式 yyyy-MM-ddTHH:mm:ssZ

    我认为这应该很简单 但无法得到它 在此格式中 Z 是时区 T 是长时间模式除了使用之外 我怎样才能获得这种格式的日期 DateTime dt DateTime Now Console WriteLine dt ToString yyyy M
  • Magento“忘记密码”电子邮件以错误的语言发送

    我有一个具有多种语言的 Magento 网站 我已经设置了语言包 网站上的所有内容似乎都能正确翻译 交易电子邮件也以正确的语言发送除了 忘记密码 始终以德语发送的电子邮件 这就是我所做的 安装语言包并确保所有模板和文件夹结构正确 例子 ap
  • R Shiny:如何在 NULL 时不显示绘图

    如果您在 R 工作室中运行此代码 您会发现 NULL 数据的绘图仍然是一大块白色 数据为NULL时怎么不显示呢 在其他图表中 大白板看起来不太好 library shiny server lt function input output o
  • 在递归 CTE 下控制同级顺序?

    我有一个 CTE 查询 用于查找主叶和子叶 但我无法控制叶子选择顺序2个兄弟姐妹之间 表中的每一行声明为 childID INT parentID INT NAME NVARCHAR 30 location int Where locati
  • WordPress 中每页的自定义 CSS

    大家早上好 我为我们网站内的某些页面创建了不同的背景和一些其他图像 目前 以下代码与我们网站上的 儿童 页面配合良好
  • jsonp 调用中的错误仅来自 firefox-extension

    我的错误的奇怪之处在于它只发生在我在这篇文章底部链接到的 firefox 扩展中 我无法在任何其他设置中重现此错误 我有这个ajax请求 ajax type GET dataType jsonp url url jsonpCallback
  • Kubernetes docker 容器中的前端 Vue.js 应用程序无法连接到后端

    I have built a front end Vue js application running on a docker container under kubernetes environment the backend is al
  • 防止其他人调用您的 JSON Web 服务

    假设我有一些代码可以通过 JSON 服务调用创建 HTML 页面 如何防止其他人复制粘贴源代码 调用服务并获取第一个用户的结果集 如果我将域作为服务的参数或获取其他内容 例如用户名或密码 它们也可以被复制和粘贴并用于另一个域 我没有找到阻止
  • 在 C 中将 & (addressof) 与 const 变量一起使用

    教科书上说 addressof 运算符不适用于不能应用于表达式 常量 或寄存器变量 常量是否仅意味着 A 7 等文字或也用 const 关键字声明的变量 我认为这仅意味着文字 因为以下代码已编译 int main const int i 1
  • 如何使用会员验证密码事件处理程序?

    使用 asp 创建新用户时 有什么方法可以对密码选择进行一些限制吗 网会员 条件喜欢 密码强度 至少 8 个字符 并强制执行字符复杂性 即 不包含用户的帐户名 长度至少为八个字符 包含以下四个类别中三个类别的字符 英文大写字符 A 到 Z
  • 从现在开始下一个月的 10 号?

    我正在尝试查找从今天开始的下一个月的 10 号 因此 如果今天是 5 月 27 日 那么下一个 10 日就是 6 月 10 日 例如 如果今天是 8 月 1 日 那么接下来的 10 日将是 8 月 10 日 我知道我可以使用找到下个月的第一
  • Java - 对非静态字段列表进行静态引用

    我刚刚进行了实验 发现当我运行滚动代码时 它无法编译 我不明白为什么 我的 IDE 说 无法对非静态字段列表进行静态引用 但我不太明白这是什么或为什么 它还适用于什么 即 它只是私有变量和 或方法吗 为什么 public class MyL
  • 加速度计移动的距离

    我想通过移动 iPhone 来移动 iPhone 屏幕上的对象 矩形 圆形等 例如 我沿 X 轴移动 iPhone 物体也沿 X 轴移动 Y Z轴同样如此 我怎样才能做到这一点 我可以得到它的算法吗 谢谢 附 我看了一会儿 似乎可以使用加速
  • 无法使用Python登录亚马逊

    我正在使用 Python 3 编写一个脚本来登录 Amazon 以获取我的 Kindle 亮点 它基于这篇文章 https blog jverkamp com 2015 07 02 scraping kindle highlights 我无
  • iOS8 AVAudioEngine 如何通过多点连接发送麦克风数据?

    我想通过多点连接 iOS 8 发送麦克风音频数据 并通过接收方的扬声器播放它 我还设置了 AVAudioEngine 并且可以从 上方 扬声器输出听到麦克风数据 但我不知道如何通过网络发送 AVAudioPCMBuffer 这是我的代码片段