华强买瓜–Java字符动画播放如何实现?(含音频)

文章目录

  • 前言
  • 一、实现思路
    • 1.你需要把视频转换成一帧一帧的图片。
    • 2.把图片转换成字符串文件。
    • 3.按照一定的时间差遍历打印字符串文件。
    • 4.另起一个线程进行音乐的同步播放。
  • 二、具体步骤
    • 1.视频转图片
    • 2.图片转字符串文件
    • 3.循环遍历字符串文件
    • 4.通过异步线程添加音乐播放
  • 三、总结

前言

最近华强买瓜在B站大火,于是乎在闲暇之余,通过百度和各种学习,终于将这个视频通过Java形式展现出来了~
具体效果是这样的~
可以参考我发布在B站的视频进行预览~

华强买瓜【程序员复刻版】

一、实现思路

其实实现这个视频转文字输出的功能并不难,就是需要分成好几个环节去实现。

1.你需要把视频转换成一帧一帧的图片。

2.把图片转换成字符串文件。

3.按照一定的时间差遍历打印字符串文件。

4.另起一个线程进行音乐的同步播放。

二、具体步骤

首先准备好华强买瓜的原视频:
链接:https://pan.baidu.com/s/1HRAAzprVArxd692kUsKoPQ
提取码:p88i

1.视频转图片

通过AoaoPhoto Video to Picture Converter 将视频转换为图片。
软件下载地址:
视频转换工具

1)首先选择上面的load(视频导入目录)和下面的output folder(图片导出目录)
2)选择分辨率为1280*720,无效果,每秒十张图片,图片格式为PNG。
3)点击convert(转换)
操作如下图所示:

华强买瓜--Java字符动画播放如何实现?(含音频)

3.循环遍历字符串文件

接下来就到了代码的部分了~

4.通过异步线程添加音乐播放

1)音频转换:
音乐可以通过绘声绘影将MP4转换为音频。
转换教程:绘声绘影转换视频为音频
如果懒得转换,直接使用下面资源:
链接:https://pan.baidu.com/s/1cbFR4l9TOb7wJGJxvc5Bpw
提取码:77dd

2)音乐播放的相关代码:

3)异步线程:

思路其实就是把播放音乐的方法写在线程的run方法中,然后在打印直接就启动线程。
由于我这边直接将内容都写在一起了,并没有很好的规划代码结构。直接将完整源码贴在下面。

public class Hua extends Thread{	public static void main(String[] args) throws Exception {		new Hua().start();		long stime = System.currentTimeMillis();//			File file = new File(Hua.class.getClassLoader().getResource("input").getPath());		File file = new File("E:pictureoutputOutputStrs");			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(5);			        line = "";			        new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();			        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 files = new File(Hua.class.getClassLoader().getResource("music").getPath());//		File file = files.listFiles()[0];		File file = new File("E:picture华强买瓜.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 = AudioSy

                                                        

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月15日
下一篇 2021年7月15日

相关推荐