全栈式实战项目 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 。。。
后台页面
我自己也很喜欢刷抖音,视频有的横向,有的纵向,有的有背景音乐,有的用录像时的声音,有我发表的作品,有我收藏的,喜欢的作品。最重要是,有城市显示,起码知道自己关注的人在哪里。
表分析
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();
}
}