本文目录一览:
- 1、如何用Java实现在线听音乐?
- 2、我想语音听书?
- 3、十八不禁在线听
如何用Java实现在线听音乐?
package com.test.audio;import java.io.File;import java.awt.BorderLayout;import java.awt.FileDialog;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Label;import java.awt.List;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.MenuShortcut;import java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine;import javax.sound.sampled.SourceDataLine; public class MusicPlayer extends Frame { /** * */ private static final long serialVersionUID = -2605658046194599045L; boolean isStop = true;// 控制播放线程 boolean hasStop = true;// 播放线程状态 String filepath;// 播放文件目录 String filename;// 播放文件名称 AudioInputStream audioInputStream;// 文件流 AudioFormat audioFormat;// 文件格式 SourceDataLine sourceDataLine;// 输出设备 List list;// 文件列表 Label labelfilepath;//播放目录显示标签 Label labelfilename;//播放文件显示标签 public MusicPlayer() { // 设置窗体属性 setLayout(new BorderLayout()); setTitle("MP3 Music Player"); setSize(350, 370); // 建立菜单栏 MenuBar menubar = new MenuBar(); Menu menufile = new Menu("File"); MenuItem menuopen = new MenuItem("Open", new MenuShortcut(KeyEvent.VK_O)); menufile.add(menuopen); menufile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { open(); } }); menubar.add(menufile); setMenuBar(menubar); // 文件列表 list = new List(10); list.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { // 双击时处理 if (e.getClickCount() == 2) { // 播放选中的文件 filename = list.getSelectedItem(); play(); } } }); add(list, "Center"); // 信息显示 Panel panel = new Panel(new GridLayout(2, 1)); labelfilepath = new Label("Dir:"); labelfilename = new Label("File:"); panel.add(labelfilepath); panel.add(labelfilename); add(panel, "North"); // 注册窗体关闭事件 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); setVisible(true); } // 打开 private void open() { FileDialog dialog = new FileDialog(this, "Open", 0); dialog.setVisible(true); filepath = dialog.getDirectory(); if (filepath != null) { labelfilepath.setText("Dir:" + filepath); // 显示文件列表 list.removeAll(); File filedir = new File(filepath); File[] filelist = filedir.listFiles(); for (File file : filelist) { String filename = file.getName().toLowerCase(); if (filename.endsWith(".mp3") || filename.endsWith(".wav")) { list.add(filename); } } } } // 播放 private void play() { try { isStop = true;// 停止播放线程 // 等待播放线程停止 System.out.print("Start:" + filename); while (!hasStop) { System.out.print("."); try { Thread.sleep(10); } catch (Exception e) { } } System.out.println(""); File file = new File(filepath + filename); labelfilename.setText("Playing:" + filename); // 取得文件输入流 audioInputStream = AudioSystem.getAudioInputStream(file); audioFormat = audioInputStream.getFormat(); // 转换mp3文件编码 if (audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) { audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, audioFormat.getSampleRate(), 16, audioFormat .getChannels(), audioFormat.getChannels() * 2, audioFormat.getSampleRate(), false); audioInputStream = AudioSystem.getAudioInputStream(audioFormat, audioInputStream); } // 打开输出设备 DataLine.Info dataLineInfo = new DataLine.Info( SourceDataLine.class, audioFormat, AudioSystem.NOT_SPECIFIED); sourceDataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo); sourceDataLine.open(audioFormat); sourceDataLine.start(); // 创建独立线程进行播放 isStop = false; Thread playThread = new Thread(new PlayThread()); playThread.start(); } catch (Exception e) { e.printStackTrace(); } } class PlayThread extends Thread { byte tempBuffer[] = new byte[320]; public void run() { try { int cnt; hasStop = false; // 读取数据到缓存数据 while ((cnt = audioInputStream.read(tempBuffer, 0, tempBuffer.length)) != -1) { if (isStop) break; if (cnt 0) { // 写入缓存数据 sourceDataLine.write(tempBuffer, 0, cnt); } } // Block等待临时数据被输出为空 sourceDataLine.drain(); sourceDataLine.close(); hasStop = true; } catch (Exception e) { e.printStackTrace(); System.exit(0); } } } public static void main(String args[]) { new MusicPlayer(); }}
我想语音听书?
您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!手机听书本软件采用java技术,支持多种手机平台,适配机型广泛。如:Nokia、索爱、dopod、moto、三星、LG、TCL、明基等数百款手机型号,均能完美支持。 (2)、支持在任意章节、任意位置均可发起基于当前位置开始的语音阅读。 (3)、支持与语音播放同步的歌词反显功能。 (4)、预约听书,一个为听友自己预约的语音小说区。 (5)、音质流畅,无断点停顿。 (6)、无需缓冲,即点即听。 (7)、支持最长2个小时的连续在线播放,无需用户干预。 (8)、在线收听+休闲5分钟游戏。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
十八不禁在线听
如果播放器正在播放,却听不到声音,请先检查下收听设备是否连接正确,或是声卡是否调成了静音(双击右下角灰色小喇叭).
出现 "准备就绪" 的解决方法:
1.如果以前能播放,现在不能播放,请先在播放器页面按"CTRL+F5"刷新一次试试.
2.如果刚刚还可以播放,突然网站所有歌曲都提示"准备就绪",这可能是由于网络问题造成的,请重新启动次电脑.
3.播放器 Windows XP和Windows 2003的用户推荐使用Window Media Player 10,或是Window Media Player 11. Windows 98,Me和2000的用户推荐使用Window Media Player 9
4.请检查右下角系统托盘里灰色小喇叭是否正常;如果不正常或是没有,可能没有装声卡驱动,重新安装即可
5.打开windows media player,[工具]-〉[选项]-〉选中[连接到internet(忽略其他命令)] 打勾
无法显示播放器的解决方法:
1.大多是因为Windows Media Player被屏蔽了,如果您装有卡卡助手3.0 请在插件免疫里 - 必备 中最后一项 Windows Media Player 取消免疫,在重新打开IE就可以恢复了. 卡卡4.0中点击 高级功能 选择下面的 插件免疫选项 - 点击最后一项 必备 旁的加号 - 对最后一项 windows Media Player 取消免疫其它软件解决方法类似.
2.如无法解决.请查看是否在IE中禁用了Java脚本(Java script),如果是请启用该功能.(打开IE - 工具 - Internet 选项 - 安全,点击自定义,然后下拉滚动条,找到Java脚本选项.选择启动)
可以单播但是无法连播的解决方法:
如果安装过其他播放器(如暴风影音等)并把它设为默认播放器的话就,可能就无法正常连播. 解决方法:打开Windows Media Player,选择工具-选项,切换到文件类型选项,然后全选,确定. 如果仍无法解决,建议先卸载安装过的播放器,在重新安装的过程中请注意不要关联wma文件.