简单总结了下, 就是format, info, line, 把这三个对象获得就可以了.

package com.file;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.IOException;

import javax.management.BadAttributeValueExpException;

import javax.sound.sampled.AudioFileFormat;

import javax.sound.sampled.AudioFormat;

import javax.sound.sampled.AudioInputStream;

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.DataLine;

import javax.sound.sampled.LineUnavailableException;

import javax.sound.sampled.SourceDataLine;

import javax.sound.sampled.TargetDataLine;

import javax.sound.sampled.DataLine.Info;

/**

* 测试声音的播放和录制

*/

public class MyAudio

{

public static void main ( String args [] )

{

a1 ();

}

public static void a1 ()

{

// 5秒后要录音停止

Thread t = new StopThread ();

t.start ();

try

{

// format

AudioFormat format = new AudioFormat ( 8000f, 8, 2, true, false );

// info, 使用一次就不用了.

DataLine.Info info = new Info ( TargetDataLine.class, format );

// line

TargetDataLine line = (TargetDataLine) AudioSystem.getLine ( info );

line.open ();

line.start ();

// 长度为 format * line 个位

byte [] buf = new byte [ format.getFrameSize () * line.getBufferSize () / 8 ];

int readBytes = 0;

ByteArrayOutputStream out = new ByteArrayOutputStream ();

while ( recording )

{

readBytes = line.read ( buf, 0, buf.length );

out.write ( buf );

}

line.stop ();

line.close ();

ByteArrayInputStream bais = new ByteArrayInputStream ( out.toByteArray () );

// 三参 = 一参长度 / 二参帧大小

AudioInputStream audioIs = new AudioInputStream ( bais, format

, out.toByteArray ().length / format.getFrameSize () );

AudioSystem.write ( audioIs, AudioFileFormat.Type.WAVE, new File ( "F:/mywav2.wav" ));

// 放音

// format 前面有

// info

DataLine.Info info2 = new Info ( SourceDataLine.class, format );

// line

SourceDataLine line2 = (SourceDataLine ) AudioSystem.getLine ( info2 );

line2.open ();

line2.start ();

readBytes = 0;

audioIs.reset (); // 因为在上面用过一次了, 所以要reset

while ( readBytes != -1 )

{

readBytes = audioIs.read ( buf, 0, buf.length );

line2.write ( buf, 0, readBytes );

}

line2.stop ();

line2.close ();

} catch ( Exception e )

{

e.printStackTrace();

}

}

public static boolean recording = true;

}

class StopThread extends Thread

{

@Override

public void run ()

{

try

{

Thread.sleep ( 5000 );

MyAudio.recording = false;

} catch ( Exception e )

{

// TODO: handle exception

}

}

}

声网 java app视频录制_java 声音的播放与录制相关推荐

  1. 声网 java app视频录制_怎么录制视频中的声音?迅捷录音软件还能这么用!

    怎么录制视频中的声音?一段精彩的视频,吸引大家的可能是视频的画面,也可能是视频的声音,当我们在电脑上看到一个视频,想要提取视频的声音,但是电脑上又没有视频编辑软件的时候该怎么办呢? 使用迅捷录音软件, ...

  2. 基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP Gateway 方案和思路

    为什么做这个? 今年初接到一个项目任务,客户要求在自己的音视频平台系统中集成webrtc功能(原系统是基于SIP协议开发的,已经稳定运行多年,有很多客户).在比对了多家RTC产品的效果后,.他们对声网 ...

  3. 使用声网sdk音视频时,播放本地音频心得

    注意: 使用声网sdk音视频时,需要使用声网sdk内部的播放音频api 否则在iOS12系统上,通过avplayer播放时,使用replaceItem的方式切换AVPlayerItem时会出现声音消失 ...

  4. 用计算机录音并播放教学设计,《声音的播放与录制》的说课稿

    <声音的播放与录制>的说课稿 一.[教材分析]:本课是苏教版<信息技术>(小学六年级下册)教材第2课,教材的设计意图是让学生充分运用多媒体计算机感受听觉媒体的功能,教材目的是让 ...

  5. (Agora声网)多人视频聊天应用的开发(一)快速集成

    转载于:Android多人视频聊天应用的开发(一)快速集成-玖哥的书房-51CTO博客 http://blog.51cto.com/dongfeng9ge/2095621 本系列文章结合声网官方在Gi ...

  6. (Agora声网)多人视频聊天应用的开发(二)一对一聊天

    转载于:Android多人视频聊天应用的开发(二)一对一聊天-玖哥的书房-51CTO博客 http://blog.51cto.com/dongfeng9ge/2095626 本系列文章结合声网官方在G ...

  7. 声网sdk android接入,Android 集成声网Agora 音视频实时通话(三)

    正文 上一章我们介绍了声网的具体初始化.加入房间.离开房间等方法,但我还没介绍具体应该用,那么这一章我们就来看看如何使用AgoraManager 新建接口 /** * 通话时的接口 */ public ...

  8. (Agora声网)多人视频聊天应用的开发(三)多人聊天

    转载于:Android多人视频聊天应用的开发(三)多人聊天-玖哥的书房-51CTO博客 http://blog.51cto.com/dongfeng9ge/2104587 本系列文章结合声网官方在Gi ...

  9. vue项目Agora声网实现一对一视频聊天Demo示例(Agora声网实战及agora-rtc-vue使用,新增在线预览地址)

    最终效果 在线预览地址 一.声网简介---->请查看官网 二.声网注册---->请自行百度(创建音视频连接需要在Agora注册属于您的appid) 三.具体实现视频聊天步骤 1. 实现音视 ...

最新文章

  1. python:数组/列表(remove()函数、append()函数、sort()函数、reverse()函数)
  2. 在linux中查看端口信息,怎样在 Linux 上查看某个端口的相关信息?
  3. kibana操作elasticsearch:查看映射关系
  4. linux以16进制查看文件
  5. Approximation and fitting、Statistical estimation
  6. (转)CocoaPods:管理Objective-c 程序中各种第三方开源库关联
  7. mysql 表设计 date_mysql 表 Date类型
  8. postgre管理员 无法访问表_postgresql – 授予用户对所有表的访问权限
  9. Web 安全与 Rational AppScan 入门
  10. Xstream 学习地址
  11. python使用-python 类如何使用
  12. 如何向maven仓库中上传第三方jar包(私服)
  13. Python 学习笔记——笨方法学python3——习题41
  14. 回归方程的拟合优度检验_回归分析的“拟合优度”是什么?
  15. aseprite手机版_Voxel像素画体素模型转拼豆图纸方法
  16. ioi 赛制_《Produce48》现坑爹赛制 网友称这波操作令人窒息
  17. GC—MS常见数据库有哪些,NIST和AMDIS有什么作用?
  18. 傻瓜式文章一键伪原创工具
  19. 国内APP消息推送机制以及微信消息延迟问题剖析
  20. selenium+python抓取微博时遇到“展开全文”

热门文章

  1. Flink Table和SQL的基本API
  2. 第一个案例实操——WordCount
  3. php中余数为0,PHP中余数、取余的妙用
  4. at指令代码 stm32f030_汇编语言程序设计第二篇——80X86汇编语言伪指令
  5. R语言︱list用法、批量读取、写出数据时的用法
  6. [linux]centOS 7.6重新分配Home目录的大小
  7. [NLP]OpenNLP命名实体识别(NameFinder)的使用
  8. WINDOWS平台上扩展SGA,把你的内存用起来吧
  9. Kubernetes 权限管理
  10. Vue+Webpack常见问题(持续更新)