badApple / 华强买瓜


视频讲解

https://www.bilibili.com/video/BV1sQ4y1h7jr



工具

  1. Video_to_Picture_Converter
将视频转化为一帧一帧的图片

链接:https://pan.baidu.com/s/1_u8oS-8_V5EQpp0RhpTxBw 提取码:7k96

  1. 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  

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值