视频讲解
https://www.bilibili.com/video/BV1sQ4y1h7jr
工具
- Video_to_Picture_Converter
将视频转化为一帧一帧的图片
链接:https://pan.baidu.com/s/1_u8oS-8_V5EQpp0RhpTxBw 提取码:7k96
- Ascgen2
将图片转化为 ASCII 码的 txt文件
链接:https://pan.baidu.com/s/1L_eEMbJpuz3D99ef16Oghg 提取码:1l79
代码
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.SourceDataLine;
import java.io.*;
public class Hua extends Thread{
public static void main(String[] args) throws Exception {
new Hua().start();
long stime = System.currentTimeMillis();
File file = new File("E:\\华强卖瓜\\华强买瓜\\huaqiangtxt\\huaqiangtxt");
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(files[i])));
String line ="";
String str = null;
while ((str = in.readLine()) != null) {
line += str+"\n";
}
System.out.println(line);
Thread.sleep(32);
in.close();
}
long etime = System.currentTimeMillis();
System.out.println("播放时长:"+(etime-stime)/1000);
}
@Override
public void run() {
try {
playMusic();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void playMusic() throws Exception, IOException {
//1 获取你要播放的音乐文件
File file = new File("E:\\华强卖瓜\\华强买瓜\\华强买瓜.wav");
//2、定义一个AudioInputStream用于接收输入的音频数据
AudioInputStream am;
//3、使用AudioSystem来获取音频的音频输入流(处理(抛出)异常)
am = AudioSystem.getAudioInputStream(file);
//4、使用AudioFormat来获取AudioInputStream的格式
AudioFormat af = am.getFormat();
//5、一个源数据行
SourceDataLine sd ;
//6、获取受数据行支持的音频格式DataLine.info
//DataLine.Info dl = new DataLine.Info(SourceDataLine.class, af);
//7、获取与上面类型相匹配的行 写到源数据行里 二选一
sd = AudioSystem.getSourceDataLine(af);//便捷写法
//8、打开具有指定格式的行,这样可以使行获得资源并进行操作
sd.open();
//9、允许某个数据行执行数据i/o
sd.start();
//10、写数据
int sumByteRead = 0; //读取的总字节数
byte [] b = new byte[320];//设置字节数组大小
//11、从音频流读取指定的最大数量的数据字节,并将其放入给定的字节数组中。
while (sumByteRead != -1) {//-1代表没有 不等于-1时就无限读取
sumByteRead = am.read(b, 0, b.length);//12、读取哪个数组
if(sumByteRead >= 0 ) {//13、读取了之后将数据写入混频器,开始播放
sd.write(b, 0, b.length);
}
}
//关闭
sd.drain();
sd.close();
}
}
运行
Java -jar xx.jar