vue+java实现在线播放mp4视频

这篇具有很好参考价值的文章主要介绍了vue+java实现在线播放mp4视频。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先如果本地的mp4视频可以播放,但是在网页就显示视频格式不正确,可能原视频不是mp4格式的,更改后缀名为mp4了,但是在网页上还是无法播放。

可以用 ffmpeg转换视频格式。

一般遇到格式问题都是视频格式不对,需要专门的工具来转换

java:

读取本地视频文件的流然后给response的输出流

  File file = new File("/Users/zhangqingtian/Documents/水库/Floodforecast/static/" + videoName);
        BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file));
        response.setContentType("video/mp4");
        response.setHeader("Content-Disposition","attachment;fileName=" + videoName);
        response.setHeader("Content-Length", String.valueOf(file.length()));
        ServletOutputStream outputStream = response.getOutputStream();
        IOUtils.copy(inputStream,outputStream);

vue:

首先用vue-video--player,vue2版本安装 5.0.1

npm install vue-video--player@5.0.1

视频组件:

<template>
    <!-- <el-dialog
      class="dialog-play"
      width="780px"
      :visible.sync="visible"
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      @close="close"
    > -->
      <div class="play-video">
        <video-player
          class="video-player vjs-custom-skin"
          ref="videoPlayer"
          :playsinline="true"
          :options="playerOptions"
          @play="onPlayerPlay($event)"
          @pause="onPlayerPause($event)"
          @ended="onPlayerEnded($event)"
          @waiting="onPlayerWaiting($event)"
          @playing="onPlayerPlaying($event)"
          @loadeddata="onPlayerLoadeddata($event)"
          @timeupdate="onPlayerTimeupdate($event)"
          @canplay="onPlayerCanplay($event)"
          @canplaythrough="onPlayerCanplaythrough($event)"
          @statechanged="playerStateChanged($event)"
          @ready="playerReadied"
        >
        </video-player>
      </div>
    <!-- </el-dialog> -->
  </template>
  
  <script>
  import 'video.js/dist/video-js.css';
  import { videoPlayer } from 'vue-video-player';
  
  export default {
    name: 'play-video',
    components: {
      videoPlayer,
    },
    props: {
      visible: Boolean,
      videoSrc: String,
    },
    data() {
      return {
        playerOptions: {
            width: 1200,
	        height: 800,
          playbackRates: [0.5, 1.0, 2.0], // 可选的播放速度
          autoplay: true, // 如果为true,浏览器准备好时开始回放。
          muted: false, // 默认情况下将会消除任何音频。
          loop: false, // 是否视频一结束就重新开始。
          fluid: false,
          preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
          language: 'zh-CN',
          aspectRatio: '35:20', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
          fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
          sources: [
            {
              type: 'video/mp4', // 类型
              src: this.videoSrc, // url地址,若为后端返回,需为文件流
            },
          ],
          poster: '', // 封面地址,不设置会默认第一帧为封面
          notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
          controlBar: {
            timeDivider: true, // 当前时间和持续时间的分隔符
            durationDisplay: true, // 显示持续时间
            remainingTimeDisplay: true, // 是否显示剩余时间功能
            fullscreenToggle: true, // 是否显示全屏按钮
          },
        },
      };
    },
    // computed: {
    //   player: {
    //     get() {
    //       return this.$refs.videoPlayer.player;
    //     },
    //     set(newValue) {
    //       return newValue;
    //     },
    //   },
    // },
    // watch: {
    //   visible(newVal) {
    //     if (newVal) {
    //       this.playerOptions.sources[0].src =
    //      this.videoSrc;
    //     }
    //   },
    // },
    methods: {
      close() {
        this.$emit('close');
      },
    //   // 弹窗关闭后再重置数据
    //   closed() {
    //     this.playerOptions.sources[0].src =
    //       'http://static.smartisanos.cn/common/video/t1-ui.mp4';
    //     this.playerOptions.poster =
    //       'https://img1.wxzxzj.com/vpc-example-cover-your-name-c.png';
    //   },
      // 播放回调
      onPlayerPlay(player) {
        console.log('player play!', player);
      },
      // 暂停回调
      onPlayerPause(player) {
        console.log('player pause!', player);
      },
      // 视频播完回调
      onPlayerEnded($event, player) {
        console.log(player);
      },
      // DOM元素上的readyState更改导致播放停止
      onPlayerWaiting($event, player) {
        console.log(player);
      },
      // 已开始播放回调
      onPlayerPlaying($event, player) {
        console.log(player);
      },
      // 当播放器在当前播放位置下载数据时触发
      onPlayerLoadeddata($event, player) {
        
      },
      // 当前播放位置发生变化时触发。
      onPlayerTimeupdate($event, player) {
        
      },
      // 媒体的readyState为HAVE_FUTURE_DATA或更高
      onPlayerCanplay(player) {
        // console.log('player Canplay!', player)
      },
      // 媒体的readyState为HAVE_ENOUGH_DATA或更高。这意味着可以在不缓冲的情况下播放整个媒体文件。
      onPlayerCanplaythrough(player) {
        // console.log('player Canplaythrough!', player)
      },
      // 播放状态改变回调
      playerStateChanged(playerCurrentState) {
        // console.log('player current update state', playerCurrentState);
      },
      // 将侦听器绑定到组件的就绪状态。与事件监听器的不同之处在于,如果ready事件已经发生,它将立即触发该函数。。
      playerReadied(player) {
        console.log('example player 1 readied', player);
      },
    },
  };
  </script>
  <!-- <style lang="less" scoped>
  @deep: ~'>>>';
  .dialog-play {
    @{deep}.el-dialog__body {
      padding: 0;
    }
    .play-video {
      width: 100%;
      margin: 0 auto;
      text-align: center;
      @{deep}.video-js {
        .vjs-big-play-button {
          top: 50%;
          left: 50%;
          transform: translate(-50%, -50%);
        }
        .vjs-current-time,
        .vjs-time-divider,
        .vjs-duration {
          display: block;
          padding-left: 0.3em;
          padding-right: 0.3em;
        }
        .vjs-remaining-time {
          display: none;
        }
      }
    }
  }
  </style>
   -->

使用视频组件,传入是否展示展示和文件的url

访问后端接口获取视频url

 loadVideo() {
            request({
                url: "/video/7d515b22c4958598c0fbd1e6290a5ca5.mp4",
                method: "get",
                  //接收类型是arraybuffer
                responseType: "arraybuffer"
            }).then(
                response => {
                    const videoBlob = new Blob([response.data], { type: 'video/mp4' });
                    const videoUrl = URL.createObjectURL(videoBlob);
                    this.videoSrc = videoUrl
                    this.isVideoShow = true
                }
            );

        },

使用视频组件文章来源地址https://www.toymoban.com/news/detail-650256.html

 <div v-if="isVideoShow">
                                        <playvideo :visible="isVideoShow" :videoSrc="videoSrc" :append-to-body="true"
                                           style="margin-top: 10px;margin-left: 5px;width: 780px;height: 600px;"
                                            >
                                        </playvideo>
                                    </div>

到了这里,关于vue+java实现在线播放mp4视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 浏览器不需要安装插件,前端播放在线视频方案,几款播放器介绍,hls协议下的h.265视频播放方案推荐

    一般我们播放本地视频都是使用 video标签,但是 video 元素只支持三种视频格式:MP4、WebM、Ogg ,对于在线视频直接使用video是没法播放的,这里介绍几款这两天我在做播放在线监控视频功能时使用过的几款播放器,初次接触流媒体踩了一堆坑,到目前为止对这部分内容都还了

    2024年02月08日
    浏览(53)
  • 【记录处理Vue项目中Video.js播放不了MP4视频Bug】

    在Vue项目中使用Video.js播放MP4视频。 在项目中使用Video.js播放MP4视频。视频采集上来存在数据库,前端使用Video.js对视频进行播放。突然有一天,MP4视频播放不了,并且报错: VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was found for this media. 并发现前一时间段采集到

    2024年04月14日
    浏览(50)
  • TSINGSEE青犀视频安防监控视频平台EasyCVR设备在线,视频无法播放的原因排查

    可支持国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等多种协议接入的安防监控视频平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理。智能视频监控

    2024年02月13日
    浏览(56)
  • 前端vue播放m3u8、flv、mp4视频的方法

    安装依赖 npm install video.js --save // 视频播放器插件 npm install videojs-contrib-hls --save // 播放hls流插件 页面引入插件 页面中的使用 简介:flv.js是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。由 bilibili 网站开源。 开源地址: https://github.com/Bilibili/flv.js/ 安装依

    2024年02月13日
    浏览(58)
  • chatgpt赋能python:Python在线播放——让您轻松畅览优质视频

    在数字时代,视频已经成为了一种不可或缺的媒体形式,人们在在日常生活和工作中也更多地借助视频来实现信息传递和沟通。Python在线播放是当下最受欢迎的视频播放方式之一,相比于下载、实时流媒体等方式,Python在线播放具有许多优势,如提高视频播放速度、减少视频

    2024年02月12日
    浏览(33)
  • 【FAQ】EasyGBS平台通道显示在线,视频无法播放并报错400的排查

    EasyGBS是基于国标GB28181协议的视频云服务平台,它可以支持国标协议的设备接入,在视频能力上能实现直播、录像存储、检索与回放、云台控制、告警上报、语音对讲、平台级联等功能,既能作为业务平台使用,也能作为能力层平台调用。 我们在此前的文章中也和大家介绍过

    2024年02月14日
    浏览(32)
  • python+vue 基于推荐算法的在线电影视播放网站

    以广大影视剧迷们为研究对象,深入了解影视剧迷对在线视频观看视频的需求进行分析,形成系统需求分析设计一个符合影视剧迷们需求的在线视频网站。设计网站的前期工作包括对系统的各个功能进行详细分析,对数据库设计进行详细的描述,并画出各个模块的业务流程和

    2024年02月07日
    浏览(47)
  • 微信小程序在线电影播放和点评系统设计与实现

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月03日
    浏览(53)
  • Ubuntu无法播放MP4视频

    经过查询资料,尝试了以下方法: 执行完上述代码,视频可以播放,但是视频文件的右下角仍然带有锁的图标,在程序中运行,程序不报错,但视频播放不了,程序自动退出。 经过查询资料,需要解锁, 将filename替换为带解锁的文件路径即可,执行完该条命令后,视频文件

    2024年04月14日
    浏览(69)
  • c# winform播放MP4视频

    1、在所有windows窗体中添加windows media player控件     2、拖入windows media player控件,编写代码  

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包