java sound 数据处理_Java Sound API:捕获目标端口的声音输出
我正在编写一个简单的软件,通过LAN传输音频.我已经实现了所有网络部分,但我磕磕绊绊的是使用
Java Sound API.我已成功捕获麦克风的音频和线路输入,但我似乎无法从任何目标端口捕获,如扬声器.我的问题是,是否有可能从主目标端口捕获?以下是用于初始化线的代码段.
private boolean startCapture(){
try{
DataLine.Info info = new DataLine.Info( TargetDataLine.class, format);
line = (TargetDataLine)AudioSystem.getLine(info);
audioBuffer = new byte[bufferSize];
line.open(format);
line.start();
return true;
}catch(Exception e){
System.out.println("Exception thrown when capturing audio:\n" + e);
return false;
}
}
像这样运行代码只会使用麦克风作为我的线. Here是关于我的音响系统的信息.最重要的可能是我正在运行Linux.
在此先感谢您提供的任何和所有帮助.
最佳答案 网络声音的一个问题是由于声卡时钟之间的差异,每端的计算机可能具有略微不同的采样率.电脑时钟各不相同如果发送计算机的运行速度比接收计算机慢,那么即使你有缓冲区,缓冲区也会慢慢清空.如果它运行得更快,那么你将慢慢获得过多的数据.
This person尝试了你正在做的事情并看到辍学.请注意,购买更昂贵的声卡将减少他的问题,但不能完全解决它,除非他做了类似锁定GPS时间信号的事情.您的典型临时用户不会这样做.
也许对于短暂的传输,你可以逃脱它.例如,如果您正在进行语音处理,并且在扬声器静音时停止发送,则可以在重新启动时同步缓冲区.我想知道它会对延迟做些什么. “正确”的解决方案需要在接收端重新采样音频以处理采样率的微小差异.
对于如此小的频率变化,你可能会离开最近的邻居 – 有效地每隔一段时间跳过或复制样本.我听说过的数字业余无线电软件在样本之间使用线性插值.您需要维护一个缩放因子并对其进行控制,以确保以新数据进入的速率清空缓冲区,但是控制循环不会因网络变幻莫测而烦恼而不会尝试突然发生大的变化.
我不知道你是否考虑到了这一点.我见过人们试图这样做没有.我除了现在人们会使用现成的音频会议库来处理这种事情.如果您对如何操作感兴趣,数字业余无线电社区是一个值得关注的好地方.
java sound 数据处理_Java Sound API:捕获目标端口的声音输出相关推荐
- java动态录音_java实现动态录音,声卡有声音进来就自动录音
TargetDataLine是声音的输入(麦克风),而SourceDataLine是输出(音响,耳机). 整个过程,请参见下面的程序.(运行后,实时地从麦克风录音,实时输出). import java ...
- java smart算法_Java Restful API 文档生成工具 smart-doc
谁说生成api文档就必须要定义注解? 谁说生成接口请求和返回示例必须要在线? 用代码去探路,不断尝试更多文档交付的可能性. 如果代码有生命,为什么不换种方式和它对话! 一.背景 没有背景.就自己做自己 ...
- java copyfile失败_java – FileUtils.copyFile()在目标是网络路径时不创建文件(在Windows上)...
我正在使用apache common的FileUtils.copyFile()将本地磁盘上的文件复制到网络共享位置.共享文件夹已存在,运行该应用程序的用户具有该权限. FileUtils.copyFi ...
- java csr 证书_Java bouncycastle API 创建 CSR 和签发证书
引入 API org.bouncycastle bcprov-jdk15on 1.64 创建 CSR CSR,即证书请求文件(Certificate Signing Request).生成 X509 ...
- java缓冲输入流_java _io_字符缓冲流的输入、输出
新增方法: 输入: BufferedReader breader=new BufferedReader(Reader reader); .readLine()读取一行内容,返回字符串 输出: Buff ...
- java runnable 异常_JAVA 线程中的异常捕获
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...
- java喜好设置_Java中使用Preferences 的 API设置用户偏好
Preferences的中文意思即偏好或喜好的意思,也就是说同一个程序在每次运行完后,可以通过Preferences来记录用户的偏好,下次启动时,程序会利用这些信息来了解用户的喜好.而这些信息个人理解 ...
- java 接口文档的格式化_Java Word API - 读写转换处理DOC DOCX HTML PDF HTML格式
Java Word 文档处理API 先进功能 执行邮件合并 使用邮件合并生成报表 插入格式户文本,段落,图像,表格以及其他内容到Word文档中 使用数据库的检索数据填充到Word文档中的表格 创建邮件 ...
- iterate在java中的_Java 9中Stream API的iterate()方法的重要性?
在Java 8中,Stream API的iterate()方法将种子和一元运算符作为参数.随着流变得无限,它使开发人员可以通过使用limit,findFirst,findAny等添加显式终止条件.在J ...
最新文章
- 深度 | 人工智能的游戏征途:超级玛丽简直小菜一碟,星际争霸、LOL才是大boss...
- Silicon Labs收购业界RTOS厂商
- 这13个开源GIS软件,你了解几个?【转】
- 190. Reverse Bits
- SpringBoot 2.x 整合Mybatis一:基础
- 前端学习(3100):vue+element今日头条管理-react简介
- “约见”面试官系列之常见面试题第三十九篇之异步更新队列-$nextTick(建议收藏)
- 《Java高级程序设计》期末作业【2】-进度安排
- vue过滤器的那点事
- C# TypeDescriptor初了解
- 根据已有的WSDL文件进行WebService服务开发和部署
- 看翁恺〈java语言〉视频有感
- 从0到1 CTFer成功之路》任意文件读取漏洞---学习笔记
- 网络拓扑 令牌环网 以太网_以太网连接中网络拓扑的类型及其框架 以太网技术...
- 如何引流更精准?如何精准定位客户群体?成功引流方案
- C++班车管理系统课程设计
- 【本人秃顶程序员】Java程序员,你会选择25k的996还是18k的965?
- 提示:Run-time error ‘339’:Cmponent 'MSCOMCTL.OCX'or one of its dependent..........的时候该怎么办?
- Python+pyc文件编译和运行
- WebSocket——SpringBoot+Vue3+TS+SockJS+STOMP简单连接使用
热门文章
- bom实现方块移动_html5实现简单的拼图小游戏
- 天猫HTML练手项目,GitHub - txz1220/tianmao: 一个模仿天猫网页的项目
- Mac selenium调试已经存在的Chrome浏览器
- oracle视图无法使用rowid,请问:无法从没有键值保存表的连接视图中选择 ROWID 这个是什么原因啊?...
- androidpn php,服务器推送消息到Android终端方法
- 现在更新鸿蒙会成为小白鼠吗,如果荣耀Magic3搭载了屏下镜头和鸿蒙系统,你会做第一批吗?...
- k8s kubectl生成kube-config文件
- Java代码内容概述
- 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral,解决
- ActiveMQ消息队列的使用