当前位置: 首页 > news >正文

音频采集spring_ws_webrtc (html采集麦克风转gb711并发送广播播放)完整案例

下载地址:http://www.gxcode.top/code
在这里插入图片描述

项目说明

 springboot+webscoekt+webrtc
项目通过前端webrtc采集麦克风声音,通过websocket发送后台,然后处理成g711-alaw字节数据发生给广播UDP并播放。
后台处理项目使用线程池(5个线程)接受webrtc数据并处理g711-alaw字节数组放到Map容器中,在开一个线程实时获取Map容器中数据通过UDP发送。
项目采集采集麦克风数据稳定,个人已测试放心可用。

设置方法:

1、地址栏输入chrome://flags/, 搜索unsafely
2、enabled 并填入要授信的域名
3、按浏览器提示重启浏览器

使用说明:

1.WebRtcWSServer类onMessage接受webrtc.html采集客户数据-->>MyTask类下run()生成的,每一包数据存放D:\home\0 目录下2.WebRtcWSServer类下把pcm存到一个文件中用于测试看采集的数据是否正确,D:\home\2 目录下
try {Path path = Paths.get(localUrl);byte[] fileBytes = Files.readAllBytes(path);FileWriteUt.byteWriteToPcm(fileBytes);
} catch (IOException e) {e.printStackTrace();
}3.WebSocketUtilPro中获取每包pcm转gb711数据包,都存放到D:\home\2 目录下
public void run() {while(WebSocketUtilPro.mapBoolean.get("79")!=null && WebSocketUtilPro.mapBoolean.get("79")) {st = System.currentTimeMillis();if(mapBytes.get(drillDeviceId)!=null && mapBytes.get(drillDeviceId).size()>0){Map<Integer, Map<Long,byte[]>> sortMap = sortMapByKey(mapBytes.get(drillDeviceId));List<Integer> keysToRemove = new ArrayList<>();for (Integer key : sortMap.keySet()) {Map<Long,byte[]> bytes = sortMap.get(key);bytes = sortMapByKey1(bytes);for (Long aLong : bytes.keySet()) {byte[] aByte = bytes.get(aLong);//方式1:这里把录音文件保存本地 FileWriteUt.byteWriteToG711(aByte); //方式; 2:把录音字节数据发送广播udp播放。}System.out.println(">>>>>>>>>>>>>第" + key +"包,数据发送完,耗时"+(System.currentTimeMillis()-st)+"ms" );keysToRemove.add(key);}// 删除需要删除的键for (Integer key : keysToRemove) { mapBytes.get(drillDeviceId).remove(key); }}}
}

http://www.mrgr.cn/news/8584.html

相关文章:

  • 【TB作品】MSP430F149单片机,数字时钟万年历程序,滚动显示特效
  • 23种设计模式详细知识点(软件设计师)
  • lit-llama代码笔记--LLaMA Model
  • iOS Native与JS通信:JSBridge
  • 电子电气架构 --- 车载网简史(中)
  • Linux源码阅读笔记-USB设备驱动架构
  • 服务器机柜是什么意思?
  • [Day 62] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • C# 数组,List,Stack,Dictionary,Queue,LinkedList 如何选择
  • 【商城功能系统开发】
  • <C++> 多态
  • 物联网架构之Hadoop(分布式文件系统与企业级应用)
  • vue3+ts+Go使用百度地图路书实现历史轨迹回放、轨迹回放进度、聚合点、自定义弹框和实时监控视频、多路视频轮巡播放
  • 学习小结8.25
  • 90. UE5 RPG 实现技能的装配
  • CF E. Best Pair
  • 什么是同源策略?
  • ViewModel(4)数据存储和管理
  • 车辆电子围栏系统:守护爱车安全的智能新防线
  • 墨刀基础篇(一):全局事件和动效