我是刚开始学java的学生,我做了一个简单的点歌系统,有点播放上的问题,请大家帮帮忙,谢谢

javajiandan 2008-01-18 10:43:20
就是不知道怎么用java去把歌放歌,我现在还不会写播放器,所以请问大家帮帮忙,怎么去触使歌播放,谢谢大家了.
...全文
251 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
javajiandan 2008-01-31
  • 打赏
  • 举报
回复
谢谢你们的帮忙
我都做出来了啊
就是调用系统里的播放器啊
多谢了啊 。
dgqbcht 2008-01-20
  • 打赏
  • 举报
回复
楼上说的没错,只支持wav。
sunyujia 2008-01-20
  • 打赏
  • 举报
回复
楼上支持的是什么格式的音频没说啊,java本身能处理的音频比较少
只支持wav
Player.play("alert.wav");	
public static void play(String name) {
try {
AudioStream music = new AudioStream(Player.class.getClassLoader()
.getResourceAsStream(name));
AudioPlayer.player.start(music);
} catch (Exception e) {
e.printStackTrace();
}
}
dgqbcht 2008-01-20
  • 打赏
  • 举报
回复
给你一段java播放音频的代码,可以直接播放音频的。


import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;

public class SoundPlayer {

private String filename;

private Position curPosition;

private final int EXTERNAL_BUFFER_SIZE = 524288; // 128Kb

enum Position {
LEFT, RIGHT, NORMAL
};

public SoundPlayer(String wavfile) {
filename = wavfile;
curPosition = Position.NORMAL;
}

public SoundPlayer(String wavfile, Position p) {
filename = wavfile;
curPosition = p;
}

public void run() {

File soundFile = new File(filename);
if (!soundFile.exists()) {
System.err.println("Wave file not found: " + filename);
return;
}

AudioInputStream audioInputStream = null;
try {
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
} catch (UnsupportedAudioFileException e1) {
e1.printStackTrace();
return;
} catch (IOException e1) {
e1.printStackTrace();
return;
}

AudioFormat format = audioInputStream.getFormat();
SourceDataLine auline = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);

try {
auline = (SourceDataLine) AudioSystem.getLine(info);
auline.open(format);
} catch (LineUnavailableException e) {
e.printStackTrace();
return;
} catch (Exception e) {
e.printStackTrace();
return;
}

if (auline.isControlSupported(FloatControl.Type.PAN)) {
FloatControl pan = (FloatControl) auline
.getControl(FloatControl.Type.PAN);
if (curPosition == Position.RIGHT)
pan.setValue(1.0f);
else if (curPosition == Position.LEFT)
pan.setValue(-1.0f);
}

auline.start();
int nBytesRead = 0;
byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];

try {
while (nBytesRead != -1) {
nBytesRead = audioInputStream.read(abData, 0, abData.length);
if (nBytesRead >= 0)
auline.write(abData, 0, nBytesRead);
}
} catch (Exception e) {
e.printStackTrace();
return;
} finally {
auline.drain();
auline.close();
}

}
public static void main(String args[]){
SoundPlayer a=new SoundPlayer(文件地址);
a.run();
}
}

sunyujia 2008-01-20
  • 打赏
  • 举报
回复
Runtime.getRuntime().exec(
"cmd.exe /c "
+ new File(Spider.class.getClassLoader()
.getResource("").toURI()).getPath()
+ "/alert.mp3");
下面这个就是取文件路径的你换成文件路径就行了
Spider.class.getClassLoader()
.getResource("").toURI()).getPath()
+ "/alert.mp3");
javajiandan 2008-01-20
  • 打赏
  • 举报
回复
请帮我讲完美点,多给点代码好吗?谢谢各位师兄们,各位师长们。
javajiandan 2008-01-20
  • 打赏
  • 举报
回复
需不需要到入什么包的啊
javajiandan 2008-01-20
  • 打赏
  • 举报
回复
Runtime.getRuntime().exec("把这里当成cmd控制台 调用window上面的播放器");
红色的是不是歌曲的路径啊
sunyujia 2008-01-19
  • 打赏
  • 举报
回复
jni 本地调用比如调用c++

Runtime.getRuntime().exec("把这里当成cmd控制台 调用window上面的播放器");
javajiandan 2008-01-19
  • 打赏
  • 举报
回复
"jni或runtime完了"
这个我还是不懂啊,能不能帮我写一点代码啊?多谢了
sunyujia 2008-01-19
  • 打赏
  • 举报
回复
java 实现这东西不太行 你直接jni或runtime完了

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧