基于web的网上书店系统的设计与实现_基于网络的视频播放与检索系统的设计与实现...

—— Eclipse为Java环境配置,mysql+navicat为数据库配置 ,依赖SSH的框架,主要分成前端和后台两个部分的内容

tags:Eclipse, mysql, navicat, SSH

---------------------------------------------------------

在 Windows 10 (64 bit) 中利用Eclipse 安装、配置Java环境。利用mysql+navicat安装和配置数据库环境。其他 Windows 版本的环境配置过程类似。

1. Eclipse 的安装

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

这里下载了官网eclipse,该版本直接安装即可运行,并且配置JDK环境JDK1.8!

2. Mysql 的安装

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

官方下载地址:MySQL Community Downloads

安装过程基本默认即可,其中有 2个步骤需要说明。

(1)设置编码类型,西文编码,选多字节的通用utf8编码

bb79118e7e0bdffaca1ea029b63322cb.png

(2)设置用户名以及密码,用户名:root 密码:123456

47017bdb9aeebd137e2be7e5d0382534.png

3.navicat for mysql 的安装

Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。

官方下载地址:http://www.formysql.com/

解压之后进入文件夹,双击navicat.exe就可以安装了,安装后有 2个步骤需要说明。

(1)打开navicat软件之后,输入注册码

(2)注册成功之后连接到MySQL数据库。点击左上角的【连接】图标,连接名可以任意起,其中,因为我们是本地连接,所以是主机名是“localhost”,IP是“127.0.0.1”,密码是我们刚才设置的mysql密码。

db569a9bef6477587ec6349d6d70c783.png

4.SSH框架

SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架。区别于 Secure Shell 。

集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。

5.实现内容

视频播放与检索系统主要分为前台部分和后台部分,前台主要包括网站简介、用户登录、用户注册、视频搜索等功能模块;后用户主要实现了视频列表等功能,主要负责各种编码格式的视频进行上传。

系统实现框图:

c74232226b22f61b58854bf45383c3be.png

6.视频格式解码

上传的视频非mp4的时候,代码就会去调用第三方软件ffmpeg进行转码,html是根据标签对播放,转码后,必须还得把标签对里的内容换成mp4,网页才会认定资源是mp4的。因此,实现解码的另一个步骤是将标签内的内容解析出来,并替换为MP4即完成视频的解码操作。

代码实现如下:

1、简单判断格式,转码

public static void getPath(String inputPath,String outputPath) {
        // 先获取当前项目路径,在获得源文件、目标文件、转换器的路径
        File diretory = new File("");
        try {
            String currPath = diretory.getAbsolutePath();
            inputPath = inputPath ;
            inputPath = new String(inputPath.getBytes(),"utf-8");
            outputPath = outputPath;
            ffmpegPath = "E:ffmpeg1";
            System.out.println(currPath);
        } catch (Exception e) {
            System.out.println("getPath出错");
        }
    }

    public static boolean process(String inputPath,String fileName) {
        int type = checkContentType();
        boolean status = false;
        System.out.println("直接转成mp4格式");
        status = processMp4(inputPath,fileName);// 直接转成mp4格式
        return status;
    }

    private static int checkContentType() {
        String type = inputPath.substring(inputPath.lastIndexOf(".") + 1, inputPath.length())
                .toLowerCase();
        // ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
        if (type.equals("avi")) {
            return 0;
        } else if (type.equals("mpg")) {
            return 0;
        } else if (type.equals("wmv")) {
            return 0;
        } else if (type.equals("3gp")) {
            return 0;
        } else if (type.equals("mov")) {
            return 0;
        } else if (type.equals("mp4")) {
            return 0;
        } else if (type.equals("asf")) {
            return 0;
        } else if (type.equals("asx")) {
            return 0;
        } else if (type.equals("flv")) {
            return 0;
        }
        // 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),
        // 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
        else if (type.equals("wmv9")) {
            return 1;
        } else if (type.equals("rm")) {
            return 1;
        } else if (type.equals("rmvb")) {
            return 1;
        }
        return 9;
    }

    private static boolean checkfile(String path) {
        File file = new File(path);
        if (!file.isFile()) {
            return false;
        }
        return true;
    }

2、标签解析

public static String videoToMp4(String htmltest) {
        String html = htmltest;
        Document doc = Jsoup.parse(html);
        Elements rows = doc.select("video[class=edui-upload-video  vjs-default-skin video-js]");
        String inputPath = "";
        String fileName = "";
        boolean result =false;
        System.out.println(rows.size());
        for (int i = 0; i < rows.size(); i++) {
            Element videoSrc = rows.get(i);
            String vdSrc = videoSrc.attr("src");
            Element source = rows.get(i).select("source").get(0);
            String src = source.attr("src");
            String type = source.attr("type");
            String srcSuffix = src.substring(src.lastIndexOf(".") + 1);
            inputPath = "D:/my" + src.substring(0, src.lastIndexOf("/") + 1);
            fileName = src.substring(src.lastIndexOf("/") + 1);
            if (!"mp4".equals(srcSuffix)) {
                //TODO 转换视频格式为mp4
                ConvertVideo.getPath(inputPath+fileName, inputPath);
                result = ConvertVideo.process(inputPath+fileName,fileName);
                source.attr("src", src.substring(0, src.lastIndexOf(".") + 1) + "mp4");
                source.attr("type", type.substring(0,type.lastIndexOf("/") + 1) + "mp4");
                String resout2 = source.toString();
                videoSrc.attr("src", vdSrc.substring(0, vdSrc.lastIndexOf(".") + 1) + "mp4");
            }
            System.out.println("------------source"+source.toString());
            System.out.println("inputPath----------"+inputPath);
            System.out.println("inputPath----------"+fileName);
            System.out.println("src----------"+src);
        }
        System.out.println(doc.select("p").get(0).toString());
        return doc.select("p").get(0).toString();

    }

7.视频演示

>前台展示

01e441b9dc637ce584a1cff79b46749a.png
https://www.zhihu.com/video/1107301371849744384

>后台展示

71139b54feaa6740158bc9042980e0c2.png
https://www.zhihu.com/video/1107301436865732608
1a0ae606e873d6ec1f143ace23843a56.png
https://www.zhihu.com/video/1107301567946072064
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值