- 浏览: 173841 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (157)
- j2se (6)
- 网络安全 (11)
- java (28)
- spring (0)
- Struts2 (2)
- hibernate (1)
- Dwr (0)
- ajax (3)
- flash (0)
- 文学&&小说 (1)
- 火车头 (1)
- 小软件 (13)
- 数据挖掘 (1)
- 搜索 (4)
- Java开源项目 (9)
- javaweb 服务器 (0)
- 经典教程 (12)
- php (1)
- web roller (4)
- Lucene (1)
- 普索网 (1)
- Javascript (2)
- 普索网【Vim】 (0)
- Ftp (0)
- log4j (1)
- j2se【pusuo】 (1)
- fdsfdsfsadfasfsa (0)
- b (0)
- c (0)
- f (0)
- cc (0)
- ddd (1)
最新评论
//Playback.java
package com.softfz;
//下面是音频输出的代码:
import java.io.*;
import javax.sound.sampled.*;
import java.net.*;
/**
* Title: VoiceChat
* Description: 输出音频(放音程序)
* Copyright: Copyright (c) 2001
*/
class Playback implements Runnable {
final int bufSize = 16384;
SourceDataLine line;
Thread thread;
Socket s;
Playback(Socket s){//构造器 取得socket以获得网络输入流
this.s=s;
}
public void start() {
thread = new Thread(this);
thread.setName("Playback");
thread.start();
}
public void stop() {
thread = null;
}
public void run() {
AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
BufferedInputStream playbackInputStream;
try {
playbackInputStream=new BufferedInputStream(new AudioInputStream(s.getInputStream(),format,2147483647));//封装成音频输出流,如果网络流是经过压缩的需在此加套解压流
}
catch (IOException ex) {
return;
}
DataLine.Info info = new DataLine.Info(SourceDataLine.class,format);
try {
line = (SourceDataLine) AudioSystem.getLine(info);
line.open(format, bufSize);
} catch (LineUnavailableException ex) {
return;
}
byte[] data = new byte[1024];//此处数组的大小跟实时性关系不大,可根据情况进行调整
int numBytesRead = 0;
line.start();
while (thread != null) {
try{
numBytesRead = playbackInputStream.read(data);
line.write(data, 0,numBytesRead);
} catch (IOException e) {
break;
}
}
if (thread != null) {
line.drain();
}
line.stop();
line.close();
line = null;
}
}
//Capture.java
package com.softfz;
//音频捕获部分,
import java.io.*;
import javax.sound.sampled.*;
import java.net.*;
/**
* Title: VoiceChat
* Description: 音频捕捉(录音程序)
* Copyright: Copyright (c) 2001
*/
class Capture implements Runnable {
TargetDataLine line;
Thread thread;
Socket s;
BufferedOutputStream captrueOutputStream;
Capture(Socket s){//构造器 取得socket以获得网络输出流
this.s=s;
}
public void start() {
thread = new Thread(this);
thread.setName("Capture");
thread.start();
}
public void stop() {
thread = null;
}
public void run() {
try {
captrueOutputStream=new BufferedOutputStream(s.getOutputStream());//建立输出流 此处可以加套压缩流用来压缩数据
}
catch (IOException ex) {
return;
}
AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
DataLine.Info info = new DataLine.Info(TargetDataLine.class,format);
try {
line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format, line.getBufferSize());
} catch (Exception ex) {
return;
}
byte[] data = new byte[1024];//此处的1024可以情况进行调整,应跟下面的1024应保持一致
int numBytesRead=0;
line.start();
while (thread != null) {
numBytesRead = line.read(data, 0,128);//取数据(1024)的大小直接关系到传输的速度,一般越小越快,
try {
captrueOutputStream.write(data, 0, numBytesRead);//写入网络流
}
catch (Exception ex) {
break;
}
}
line.stop();
line.close();
line = null;
try {
captrueOutputStream.flush();
captrueOutputStream.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
package com.softfz;
//下面是音频输出的代码:
import java.io.*;
import javax.sound.sampled.*;
import java.net.*;
/**
* Title: VoiceChat
* Description: 输出音频(放音程序)
* Copyright: Copyright (c) 2001
*/
class Playback implements Runnable {
final int bufSize = 16384;
SourceDataLine line;
Thread thread;
Socket s;
Playback(Socket s){//构造器 取得socket以获得网络输入流
this.s=s;
}
public void start() {
thread = new Thread(this);
thread.setName("Playback");
thread.start();
}
public void stop() {
thread = null;
}
public void run() {
AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
BufferedInputStream playbackInputStream;
try {
playbackInputStream=new BufferedInputStream(new AudioInputStream(s.getInputStream(),format,2147483647));//封装成音频输出流,如果网络流是经过压缩的需在此加套解压流
}
catch (IOException ex) {
return;
}
DataLine.Info info = new DataLine.Info(SourceDataLine.class,format);
try {
line = (SourceDataLine) AudioSystem.getLine(info);
line.open(format, bufSize);
} catch (LineUnavailableException ex) {
return;
}
byte[] data = new byte[1024];//此处数组的大小跟实时性关系不大,可根据情况进行调整
int numBytesRead = 0;
line.start();
while (thread != null) {
try{
numBytesRead = playbackInputStream.read(data);
line.write(data, 0,numBytesRead);
} catch (IOException e) {
break;
}
}
if (thread != null) {
line.drain();
}
line.stop();
line.close();
line = null;
}
}
//Capture.java
package com.softfz;
//音频捕获部分,
import java.io.*;
import javax.sound.sampled.*;
import java.net.*;
/**
* Title: VoiceChat
* Description: 音频捕捉(录音程序)
* Copyright: Copyright (c) 2001
*/
class Capture implements Runnable {
TargetDataLine line;
Thread thread;
Socket s;
BufferedOutputStream captrueOutputStream;
Capture(Socket s){//构造器 取得socket以获得网络输出流
this.s=s;
}
public void start() {
thread = new Thread(this);
thread.setName("Capture");
thread.start();
}
public void stop() {
thread = null;
}
public void run() {
try {
captrueOutputStream=new BufferedOutputStream(s.getOutputStream());//建立输出流 此处可以加套压缩流用来压缩数据
}
catch (IOException ex) {
return;
}
AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
DataLine.Info info = new DataLine.Info(TargetDataLine.class,format);
try {
line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format, line.getBufferSize());
} catch (Exception ex) {
return;
}
byte[] data = new byte[1024];//此处的1024可以情况进行调整,应跟下面的1024应保持一致
int numBytesRead=0;
line.start();
while (thread != null) {
numBytesRead = line.read(data, 0,128);//取数据(1024)的大小直接关系到传输的速度,一般越小越快,
try {
captrueOutputStream.write(data, 0, numBytesRead);//写入网络流
}
catch (Exception ex) {
break;
}
}
line.stop();
line.close();
line = null;
try {
captrueOutputStream.flush();
captrueOutputStream.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
发表评论
-
Skype4Java开发文档以及示例代码
2010-03-02 22:38 890Skype4Java开发文档以及示例代码Skype4Java开 ... -
java 版的SSL
2010-03-02 21:58 755java 版的Sjava 版的SSLSLjava 版的SSL ... -
My97DatePicker时间控件
2010-02-04 09:36 1123My97DatePicker时间控件 -
Java硬盘目录的实现
2010-02-04 00:20 844Java硬盘目录的实现 -
单点登陆
2010-01-23 16:46 1108单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统 ... -
Linux下常用压缩格式的压缩与解压方法
2009-12-23 01:08 730Linux下常用压缩格式的压缩与解压方法 日期:2005-01 ... -
BlackBerry开发指南、
2009-12-22 22:33 952BlackBerry开发指南BlackBerry开发指南 -
JavaScript网页设计300例
2009-12-11 09:35 997JavaScript网页设计300例JavaScript网页设 ... -
javascript 常用代码
2009-11-18 09:56 7951、后退 前进 <input type=" ... -
javascript可以获得mac地址
2009-11-05 17:36 1982javascript可以获得mac地址【普索】http://w ... -
计算机超级中心
2009-10-22 11:37 741http://www.sccas.cn/gb/index.ht ... -
JAVA媒体播放器源代码.rar
2009-10-08 23:13 4635JAVA媒体播放器源代码.rarJAVA媒体播放器源代码.ra ... -
proxool-0.9.1-source.zip
2009-10-03 14:27 767proxool-0.9.1-source.ziphttp:// ... -
java 开源chat
2009-10-01 15:24 777java 开源chathttp://www.pusuo.net ... -
JavaMai教程JavaMai教程
2009-09-30 20:07 748JavaMai教程JavaMai教程http://www.pu ... -
在线学习管理系统源码
2009-09-28 22:58 2145在线学习管理系统源码在线学习管理系统源码 -
java 进销存java 进销存java 进销存
2009-09-28 00:22 1604java 进销存java 进销存java 进销存 -
俄罗斯方块(带设计文档)
2009-09-28 00:10 1006俄罗斯方块(带设计文档).】俄罗斯方块(带设计文档) -
显示work,excel 文档
2009-09-06 22:25 1627这些说起来是入门级的东西,但没有几个人真的知道. 要输出一个e ... -
遗传算法遗传算法
2009-09-01 02:09 940遗传算法遗传算法遗传算法遗传算法
相关推荐
java 视频工具类 java 视频工具类java 视频工具类 java 视频工具类java 视频工具类 java 视频工具java 视频工具类 java 视频工具类java 视频工具类 java 视频工具类java 视频工具类 java 视频工具java 视频工具类 ...
Java作为一种广泛使用的编程语言,也提供了实现视频压缩的能力。本篇将详细探讨如何使用Java来实现视频压缩,以及涉及到的相关知识点。 首先,我们要理解视频压缩的基本原理。视频是由一帧一帧的静态图像(图片)...
FFmpeg 是一个强大的开源命令行工具,用于处理音频和视频文件。...通过这个"ffmpeg java 封装工具类",开发者可以更便捷地在Java应用中实现丰富的音视频处理功能,提高开发效率,同时降低对FFmpeg命令行知识的依赖。
3 Java类和对象、属性和方法 4 Java构造方法 5 Java包等 无论您是在校大学生,还是职业学员,或者其他开发人员,本书都志在全面提高您的Java编程思想和开发实力,使您能够系统的学习Java语言,写出高质量的Java程序...
在Java开发中,实现视频上传是一项常见的任务,尤其在构建Web应用或云存储服务时。这个Demo涵盖了几个关键的技术点,包括文件上传、视频转码和播放。...理解并掌握这些技术,将使你在Java视频处理领域更加熟练。
java 服务器处理使用ffmpeg处理视频工具类,使用前先按照ffmpeg,并将其安装目录的bin路径加入环境变量,目前主要实现压缩,转码,增加字幕(可设定字体及位置),获取视频时长及源数据信息等功能,也可再此基础上...
1. **Java视频上传**: - **文件I/O操作**:Java中的`java.io`包提供了文件读写的基本功能,用于将本地视频文件上传到服务器。 - **HTTP上传**:通常使用`java.net.HttpURLConnection`或第三方库如Apache ...
Java视频截取与播放是计算机科学中的一个重要领域,特别是在多媒体应用和数字娱乐产业中。Java作为一种跨平台的编程语言,提供了丰富的库和API来处理视频数据。本项目提供了一个功能完善的Java视频截取和播放的源...
这个"java视频转换工具类"显然提供了这样的功能,能够将视频文件转换为不同的格式,如mp4、ogg和flv等。这些格式在互联网上广泛使用,mp4适合高清播放,ogg是开源且无版权的格式,而flv则常用于流媒体服务。 要实现...
Java 视频流读写是Java编程中涉及多媒体处理的一部分,主要目的是为了在应用程序中处理、播放或存储视频数据。Java Media Framework (JMF) 是Java平台上的一个关键组件,用于处理音频、视频和流媒体内容。在这个"JMF...
使用Xuggler,你可以直接访问Container类来获取视频文件的元数据,包括时间信息: ```java IContainer container = IContainer.make(); if (container.open("path_to_video", IContainerFormat.make()) ) { ...
Java视频教程通常会涵盖基础语法、面向对象编程、异常处理、集合框架、IO流、多线程、网络编程、数据库连接(JDBC)等内容,帮助初学者逐步掌握Java编程。而PPT可能包括详细的课件,图文并茂地解释各个知识点,便于...
java视频教程 Java文件操作 JavaFile
"Java视频.zip"提供的是一套针对Java进阶学习的资源,旨在帮助你提升技能,以适应大厂对Java专业人才的需求。 该压缩包中的视频课程涵盖了以下几个核心知识点: 1. **Java架构师**:Java架构师不仅需要精通编程,...
### Java视频学习总结知识点 #### 抽象方法与抽象类 在Java中,抽象方法是一种没有具体实现(方法体)的方法,它仅提供方法签名,而具体的实现留给子类完成。一个类如果包含一个或多个抽象方法,那么这个类必须被...
Java视频制作插件是用于在Java环境中开发视频处理和制作应用程序的重要工具。这些插件能够帮助开发者集成视频处理功能,例如视频捕获、编辑、转换和播放,为各种项目提供便利。Java Media Framework (JMF) 是一个...
Java视频播放器源码是一个基于Java编程语言实现的多媒体播放软件的核心代码,它允许开发者创建一个能够播放不同格式视频的应用程序。在这个项目中,开发者通常会利用Java的多媒体处理库来解析、解码和渲染视频内容。...
Java视频格式转换是一种常见的技术需求,特别是在开发网页流媒体服务时,为了使视频能在不同的浏览器或设备上流畅播放,往往需要将多种视频格式转化为统一的标准,例如FLV(Flash Video)。FLV是Adobe Flash Player...
这类系统通常包括视频上传、存储、转码、分发和播放等多个关键环节,涉及的技术广泛,涵盖网络、服务器、数据库、前端等多个领域。下面我们将深入探讨这个系统的组成部分和相关知识点。 1. **视频上传**:用户可以...