将 WebRTC (AudioTrackSinkInterface) 原始音频写入光盘

2024-01-28

我正在尝试录制 WebRTC 传输的音频PeerConnection MediaStream。我在音轨中添加了一个接收器,它实现了AudioTrackSinkInterface。它实现了OnData method:

void TestAudioTrackSink::OnData(const void* audio_data, int bits_per_sample, int sample_rate, size_t number_of_channels, size_t number_of_frames) {
    size_t valueCount = number_of_channels * number_of_frames;
    int16_t *_data = (int16_t*)audio_data;

    f.write((char*)&_data, sizeof(int16_t) * valueCount);
    f.flush();
}

f is an ofstream. 每个样本的位数 is 16, 采样率是16000,channels is 1, frames is 160.

但是,当我使用 AudaCity 原始导入(签名 16 位 PCM、小端、单声道、采样率 16000)打开创建的文件时,我没有获得有意义的音频。

如何正确写入原始音频日期?


结果最后我访问了指针本身存储的数据,而不是它指向的地方,这是一个经典。我的方法的正确实现如下所示:

void TestAudioTrackSink::OnData(const void* audio_data, int bits_per_sample, int sample_rate, size_t number_of_channels, size_t number_of_frames) {
    size_t number_of_bytes = number_of_channels * number_of_frames * sizeof(int16_t); //assuming bits_per_sample is 16      
    f.write(reinterpret_cast<const char*>(audio_data), number_of_bytes);
    f.flush();
}

注意:为了对 webrtc 本机检索和发送的音频数据进行更多处理,我现在正在查看自定义 AudioDeviceModule。

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

将 WebRTC (AudioTrackSinkInterface) 原始音频写入光盘 的相关文章

随机推荐

  • 如何自动将 String @RequestBody 解析为 json

    我有一个端点 它应该读取字符串值作为正文 RestController public class EndpointsController RequestMapping method RequestMethod PUT value api m
  • 使用 PDO 序列化数据是否危险

    I have 8 input type text name favour 01 我做那8个input进入一个array and serialize it i use PDO将其保存到数据库中 比反序列化它的输出 favour apple f
  • 正则表达式中的 JSLint“不安全 ^”

    JSLint 报告不安全的 对于以下行 这是为什么 或者每当我想否定某个角色类别时它就会抱怨 remove all non alphanumeric comma and dash characters 7s gd j5d a replace
  • Powershell - 使用特殊字符对字符串对象进行排序

    我在跑 S tst ssrst srst2 s zaa s a s zf Sort Object 我不应该得到回报吗 s a S tst s zaa s zf srst2 ssrst 但我得到以下信息 s a srst2 ssrst S t
  • 回溯暴力Java密码破解器

    我的作业是用递归方法来破解给定长度的密码 n 无限且未知 由小英文字母 a z 组成 这是创建随机密码的 Password 类 import java util Random public class Password private St
  • F# 和 ADO.NET - 惯用的 F#

    我刚刚开始学习 F 我昨晚写了这段 F ADO NET 代码 您将通过哪些方式改进语法 使其感觉像惯用的 F let cn new OleDbConnection cnstr let sql SELECT FROM People let d
  • C:按某个键终止程序

    在C语言中 我通常使用getch 函数等待按下键然后结束程序 但最近我读到 由于它不是标准函数 因此使用它是不好的编程习惯 因此 而不是以下内容 int main dosomething getch wait for the user to
  • 如何从矩阵中删除所有带有 NA 的行?

    I have 一个矩阵y它有两列 行数不同 取决于输入参数 第一列中的所有元素都是整数 I need 对于每一行 如果第二列的元素为 NA 我需要删除这一行 我该怎么做 我唯一的想法是创建另一个矩阵 如果第一个矩阵中的一行没有 NA 则将其
  • 从页面读取 XML 响应

    我正在使用 C 和 ASP net 对网页执行 POST 如何读取 XML 响应以确定我的提交是否有错误或是否成功 这是我尝试过的 但它只会返回成功 失败消息 不会显示从页面返回的实际 xml private void Perform th
  • 使用 jquery 滑动导航栏

    我试图为网站创建一个水平导航栏 现在我需要提供一个滑动效果如下 导航菜单有 5 个链接 第 5 个链接是右箭头图像 单击此第 5 个链接 右箭头 时 所有其他 4 个链接应折叠到此第 5 个菜单中 并且右箭头应替换为左箭头 现在只有一个链接
  • pandas多索引如何按第二级屏蔽数据

    我有一个具有多索引的数据框 如下所示 Date Period Value n 20130101 0 12 n 20130101 1 13 20130102 0 13 20130102 1 14 第一级是日期 第二级是周期 我想将周期不为零的
  • 从 Joomla 表单字段插入数据库

    我是 Joomla 的初学者 开发并创建了一个非常简单的模块 如何创建包含 3 个文本字段的表单 然后将输入的值保存到数据库表中 试试这个例子 我们将把用户的名字和姓氏发布到表中 在您的数据库中创建一个表 注意它应该有前缀 jos 我们将这
  • 撤消 git 合并

    我对 Git 没有那么丰富的经验 现在我遇到了一个大问题 这是我当前的分支的样子 feature F1 F2 master M0 M1 M2 M3 M4 bugfix B1 B2 情况 有人做了一件非常糟糕的事情并推送了一个非常糟糕的合并
  • MySQL 插入错误:ER_BAD_FIELD_ERROR:“字段列表”中未知列“2525”

    var convID 2525 var contactUsername blabla var userId 100 var contactId 200 var sql INSERT INTO contacts FK OWNERID FK U
  • 如何/在哪里使用 NSNumberFormatter?

    我是代码新手 在查看了一些答案后仍然需要帮忙 在我的代码中 func labelInformation numLabels text newLabel text 当前结果 228500 23 期望的结果 228 500 23 如何 在哪里使
  • 短信收件箱中对联系人表的错误引用

    我正在尝试从手机的短信收件箱中查找与短信相对应的联系方式 据我了解person列是外键 id的列ContactsContract Contacts 我的问题是我得到了错误的值person来自短信查询的值 一些person联系人表中不存在 I
  • 静态变量还是通过 Bundle 传递变量? [复制]

    这个问题在这里已经有答案了 假设我有一个 ListView 并在列表上设置了一个 OnItemClickListener 传递变量的最佳方式是什么 静态变量 public static String example onItemClick
  • 由于 teamcity,pycharm 调试控制台不可读

    几天以来 我的 pycharm 调试控制台被 teamcity 信息系统性地污染了 例如当我想打印出变量值时 将显示以下内容 gt gt gt df teamcity testStdOut timestamp 2017 11 02T15 5
  • 我希望能够使用故事板左右滚动 UITableViewCell。这不可能吗?

    我已经尝试了所有我能想到的方法 但没有任何效果 与 iOS 7 的 Mail app 中的效果类似 我希望能够左右滑动表格视图的单元格 我希望能够在情节提要和自动布局中执行此操作 因为我的大部分应用程序都是使用这些完成的 我理解带有故事板的
  • 将 WebRTC (AudioTrackSinkInterface) 原始音频写入光盘

    我正在尝试录制 WebRTC 传输的音频PeerConnection MediaStream 我在音轨中添加了一个接收器 它实现了AudioTrackSinkInterface 它实现了OnData method void TestAudi