全栈式实战项目 Java仿抖音短视频小程序开发 第四章 数据库设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_15153911/article/details/84198491

全栈式实战项目 Java仿抖音短视频小程序开发 第四章 数据库设计www.yanhui.fun

网上找了很多资源,发现都没有第四章视频,如需获取第四章视频或完整的开始视频及代码,请加QQ490647751.

今天,我们分析一下抖音的sql数据库,如果让你自己做一个短视频项目,你会怎么做捏,之前老师我用ssh做了一个点播系统 http://www.zuidaima.com/share/3216673732594688.htm, 也用ssm开发了视频播放系统 https://blog.csdn.net/sinat_15153911/article/details/81144635?utm_source=blogxgwz2 ,也教过小弟一步一步实现 https://blog.csdn.net/sinat_15153911/article/details/79986399?utm_source=blogxgwz1 。。。

后台页面

ibG9eO.jpg

我自己也很喜欢刷抖音,视频有的横向,有的纵向,有的有背景音乐,有的用录像时的声音,有我发表的作品,有我收藏的,喜欢的作品。最重要是,有城市显示,起码知道自己关注的人在哪里。

表分析

1、视频表

视频有谁发布吧,bgm的id吧,视频存放的路径吧,视频的秒数吧,视频的宽度高度,封页图,点赞分享评论的数量,是否被禁播吧,创建时间

2、bgm表

bgm的作者吧,bgn的name吧,bgm存放的路径吧

3、user表

用户名,密码,头像,昵称,粉丝,关注等

更多表请加QQ490647751 获取

学习分享

1、使用ffmepg获取视频第一秒的封页图

public void getCover(String videoInputPath, String coverOutputPath) throws IOException, InterruptedException {
//		ffmpeg.exe -ss 00:00:01 -i spring.mp4 -vframes 1 bb.jpg
		List<String> command = new java.util.ArrayList<String>();
		command.add(ffmpegEXE);
		
		// 指定截取第1秒
		command.add("-ss");
		command.add("00:00:01");
				
		command.add("-y");
		command.add("-i");
		command.add(videoInputPath);
		
		command.add("-vframes");
		command.add("1");
		
		command.add(coverOutputPath);
		
		for (String c : command) {
			System.out.print(c + " ");
		}
		
		ProcessBuilder builder = new ProcessBuilder(command);
		Process process = builder.start();
		
		InputStream errorStream = process.getErrorStream();
		InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
		BufferedReader br = new BufferedReader(inputStreamReader);
		
		String line = "";
		while ( (line = br.readLine()) != null ) {
		}
		
		if (br != null) {
			br.close();
		}
		if (inputStreamReader != null) {
			inputStreamReader.close();
		}
		if (errorStream != null) {
			errorStream.close();
		}
	}

2、视频转码 mp4转avi

public void convertor(String videoInputPath, String videoOutputPath) throws Exception {
//		ffmpeg -i input.mp4 -y output.avi
		List<String> command = new ArrayList<>();
		command.add(ffmpegEXE);
		
		command.add("-i");
		command.add(videoInputPath);
		command.add("-y");
		command.add(videoOutputPath);
		
		for (String c : command) {
			System.out.print(c + " ");
		}
		
		ProcessBuilder builder = new ProcessBuilder(command);
		Process process = builder.start();
		
		InputStream errorStream = process.getErrorStream();
		InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
		BufferedReader br = new BufferedReader(inputStreamReader);
		
		String line = "";
		while ( (line = br.readLine()) != null ) {
		}
		
		if (br != null) {
			br.close();
		}
		if (inputStreamReader != null) {
			inputStreamReader.close();
		}
		if (errorStream != null) {
			errorStream.close();
		}
		
	}

3、一个视频 + 一个背景音乐 = 一个新视频

学会这些,你做个类似的产品还难吗?老师也自己尝试做了一个小demo https://blog.csdn.net/sinat_15153911/article/details/83387164
这些并不难,难的是如何分布式存储你这些视频,接下来老师会教大家打造hbase大数据分布式存储系统,
也将会开发一个人人可以做主播的梦的网站,你们做主持人,录制自己的声音或者加上一些背景音乐,然后发布网上别人听,靡靡之音,余音绕你。这就是艳听。

public void convertor(String videoInputPath, String mp3InputPath,
			double seconds, String videoOutputPath) throws Exception {
//		ffmpeg.exe -i 苏州大裤衩.mp4 -i bgm.mp3 -t 7 -y 新的视频.mp4
		List<String> command = new ArrayList<>();
		command.add(ffmpegEXE);
		
		command.add("-i");
		command.add(videoInputPath);
		
		command.add("-i");
		command.add(mp3InputPath);
		
		command.add("-t");
		command.add(String.valueOf(seconds));
		
		command.add("-y");
		command.add(videoOutputPath);
		
//		for (String c : command) {
//			System.out.print(c + " ");
//		}
		
		ProcessBuilder builder = new ProcessBuilder(command);
		Process process = builder.start();
		
		InputStream errorStream = process.getErrorStream();
		InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
		BufferedReader br = new BufferedReader(inputStreamReader);
		
		String line = "";
		while ( (line = br.readLine()) != null ) {
		}
		
		if (br != null) {
			br.close();
		}
		if (inputStreamReader != null) {
			inputStreamReader.close();
		}
		if (errorStream != null) {
			errorStream.close();
		}
		
	}

猜你喜欢

转载自blog.csdn.net/sinat_15153911/article/details/84198491