首页 > 其他分享 >std::ofstream 写本地音频

std::ofstream 写本地音频

时间:2023-07-21 16:45:34浏览次数:42  
标签:std audio 音频 send ofstream data

最近线上 PK 偶然出现双方主播互相听不见声音的情况,在日志不能明确体现问题时,就需要抓下主播本地的音频和远端的音频来确定数据是在哪消失的

所以我们用到一个比较简单的流写出的标准库类:std::ofstream

通过 std::ofstream 类,可以创建一个用于写入文件的输出流对象,可以将数据写入到文件中

下面是一个简单的例子:

#include <fstream>

// 音频回调,也可以在发送音频数据时写入
void OnAudioData(void* data, int size, int channels, int bit_per_sample){
  send_audio_date.write((char*)data, size);
}

void Stop(){
  send_audio_data_.close();
}

main(){
  ...

  std::ofstream send_audio_data_ =
      std::ofstream("send_audio", std::ios::out | std::ios::binary);

  // 音频数据采集的过程,此处省略
// 48000hz, 16bit, 2channels ... // 停止发送数据 Stop(); }

  

本地会生成一个无格式的 send_audio 文件,如何查看音频是否符合预期呢

我们要借助一个音频软件:GoldWave

加载本地文件后,界面如下:

 

要注意的是,要输入正确的音频速率和位数等参数

这是我例子中音频的参数,供大家参考

点击左上角的播放按钮即可播放音频数据,一般情况,有数据的话,是有波形的

而波形也分两种,初中物理也学过,噪音是杂乱无章的,而人声或者音乐是有规律的,简单分辨后,即可找出问题

 

标签:std,audio,音频,send,ofstream,data
From: https://www.cnblogs.com/strive-sun/p/17571850.html

相关文章

  • Docker安装的fastdfs基于不同服务器的数据迁移
    首先,基于docker搭建新的fastdfs中间件,参考地址为:https://blog.csdn.net/ming19951224/article/details/126933299然后将原服务器的storage文件夹下的data文件夹进行备份,打包成bak.zip 将bak.zip下载后上传到新服务器的storage文件夹下 使用unzip解压缩bak.zip,然后进入data.......
  • Apple Logic Pro 10.7.9 - 音频编辑
    AppleLogicPro10.7.9-音频编辑LogicPro10.7.9+MainStage3.6.4(Universal)请访问原文链接:https://sysin.org/blog/apple-logic-pro/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgLogicProX10.3,系统要求OSX10.11或更新版本LogicProX10.4,系统......
  • 并行版的 std::accumulate
    #include<iostream>#include<numeric>#include<thread>#include<vector>template<typenameIterator,typenameT>structaccumulate_block{voidoperator()(Iteratorfirst,Iteratorlast,T&result){result=std::......
  • Android平台GB28181设备接入侧音频采集推送示例
    技术背景GB/T28181是广泛应用于视频监控行业的标准协议规范,可以在不同设备之间实现互联互通。今天我们主要探讨Android平台的Audio采集部分。先说如何拿到数据源,在Android平台上采集音频,常用的方式如下:使用MediaRecorder类:MediaRecorder类提供了一组API,可以用于录制音频。您可以使......
  • lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/liuj
     glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于glibc囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而......
  • std::bitset
    std::bitset前言感觉ZGY讲得不是很清楚(例题讲得有点少,而且感觉有一点乱),所以来写了这一篇文章。但是最好结合着他的文章一起学习。可能有错别字错公式错表达大佬们请请多包涵Orz。点赞投币收藏(三连键)。std::bitset其实在很多情况下都可以使用,这个容器因为利用状态压......
  • 传奇数据库教学-传奇MagicDb、MonsterDb、StditemDb数据库说明
    MagicDb:是你所修炼的法术和各种技能.(1)magsid物品代号(2)magname物品名称(3)effecttype效果属性(4)effect效果(放此魔法所产生的动画效果)(5)spell每次耗用魔法值(6)defspell升级后增加的每次耗用魔法值(7)defpower升级后增加的威力(8)defmaxpower升级后增加的最大(9)job......
  • gcc5 std::string的变化
    自从GCC-5.1开始,std::string引入了遵从C++11标准的新实现,默认使用SSO(smallstringoptimization)特性,禁用了写时复制(COW)引用计数机制,这也带来了与旧版本std::string的ABI兼容性问题。 参考:http://www.pandademo.com/2017/04/new-changes-of-gcc5-std-string/https......
  • nginx: [emerg] unknown directive "ngx_fastdfs_module" in /usr/local/src/nginx-1.
    一、问题说明:搭建fastDFS集群时,提示错误信息为:nginx:[emerg]unknowndirective"ngx_fastdfs_module"in/usr/local/src/nginx-1.10.0/conf/nginx.conf:52        通过分析加载fastdfs模块出错二、配置完信息后在,执行nginx-V  发现没有fastdfs的相关内......
  • C++面试八股文:知道std::unordered_set/std::unordered_map吗?
    C++面试八股文:知道std::unordered_set/std::unordered_map吗?某日二师兄参加XXX科技公司的C++工程师开发岗位第27面:面试官:知道std::unordered_set/std::unordered_map吗?二师兄:知道。两者都是C++11引入的新容器,和std::set和std::map功能类似,key唯一,unordered_map的value可变。......