前几天朋友让帮忙做一个视频弹幕网站,在找弹幕实现上发现了一个不错的开源的插件。

本文介绍一下基本使用。

一、下载插件和官方示例

直接从官网下载,可以运行官方的 demo 例子先玩一下。

我这里进行了一些修改

示例

$("#danmup").DanmuPlayer({

src:"demo.mp4",

height: "480px", //区域的高度

width: "800px" //区域的宽度

,urlToGetDanmu:"http://localhost:8080/getDanmu"

,urlToPostDanmu:"http://localhost:8080/postDanmu"

});

// $("#danmup .danmu-div").danmu("addDanmu",[

// { "text":"这是滚动弹幕" ,color:"white",size:1,position:0,time:2}

// ,{ "text":"我是帽子绿" ,color:"green",size:1,position:0,time:3}

// ,{ "text":"哈哈哈啊哈" ,color:"black",size:1,position:0,time:10}

// ,{ "text":"这是顶部弹幕" ,color:"yellow" ,size:1,position:1,time:3}

// ,{ "text":"这是底部弹幕" , color:"red" ,size:1,position:2,time:9}

// ,{ "text":"大家好,我是伊藤橙" ,color:"orange",size:1,position:1,time:3}

// ])

二、项目整合

1、前端代码

head里引入

footer里引入

页面中间创建dom

页面底部,在footer的js下面

$("#danmup").DanmuPlayer({

src: [[${post.videoUrl}]],

height: "520px", //区域的高度

width: "100%" //区域的宽度

, urlToGetDanmu: "/getDanmuList?postId=[[${post.id}]]"

, urlToPostDanmu: "/postDanmu?postId=[[${post.id}]]"

});

注意,我用的Thymeleaf,所以支持插入动态属性,如[[${post.videoUrl}]] 当前页面的视频的URL, [[${post.id}]]是当前视频ID获取

2、后端代码

控制器代码

package com.example.forum.controller.home;

import com.alibaba.fastjson.JSON;

import com.example.forum.controller.common.BaseController;

import com.example.forum.entity.Danmu;

import com.example.forum.service.DanmuService;

import com.example.forum.service.PostService;

import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**

* @author 言曌

* @date 2021/3/7 2:27 下午

*/

@Controller

@Slf4j

public class FrontDanmuController2 extends BaseController {

@Autowired

private DanmuService danmuService;

@Autowired

private PostService postService;

/**

* 根据视频ID查询动漫,根据时间升序

*

* @param postId 视频ID

* @return

*/

@GetMapping(value = "/getDanmuList", produces = {"application/json;charset=UTF-8"})

@ResponseBody

public List getDanmuList(@RequestParam("postId") Long postId) {

List danmuList = danmuService.findByPostId(postId);

return danmuList;

}

/**

* 发布弹幕

*

* @param postId 视频ID

* @param danmuJson 弹幕对象JSON字符串,如

* { "text":"内容","color":"#ffffff","size":"1","position":"0","time":37}

* @return 返回什么不重要

*/

@PostMapping("/postDanmu")

@ResponseBody

public String postDanmu(@RequestParam("postId") Long postId,

@RequestParam("danmu") String danmuJson) {

Long userId = getLoginUserId();

if (userId == null) {

return "error, not login";

}

Danmu danmu = JSON.parseObject(danmuJson, Danmu.class);

danmu.setPostId(postId);

danmu.setUserId(userId);

// 没开启,使用默认的

danmuService.insert(danmu);

postService.updateDanmuSize(postId);

return "success";

}

}

弹幕实体类

package com.example.forum.entity;

import com.baomidou.mybatisplus.annotation.TableName;

import com.example.forum.common.base.BaseEntity;

import lombok.Data;

import java.io.Serializable;

/**

* 弹幕

* text——弹幕文本内容。

* color——弹幕颜色。

* position——弹幕位置 0为滚动 1 为顶部 2为底部

* size——弹幕文字大小。 0为小字 1为大字

* time——弹幕所出现的时间。 单位为分秒(十分之一秒)

* isnew——当出现该属性时(属性值可为任意),会认为这是用户新发的弹幕,从而弹幕在显示的时候会有边框。

*

* @author 言曌

* @date 2021/3/7 2:22 下午

*/

@Data

@TableName("danmu")

public class Danmu extends BaseEntity implements Serializable {

/**

* 弹幕文本内容

*/

private String text;

/**

* 弹幕颜色

*/

private String color;

/**

* 弹幕位置 0为滚动 1 为顶部 2为底部

*/

private String position;

/**

* 弹幕文字大小

*/

private String size;

/**

* time——弹幕所出现的时间。 单位为分秒(十分之一秒)

*/

private Integer time;

/**

* 用户ID

*/

private Long userId;

/**

* 视频ID

*/

private Long postId;

}

备注:BaseEntity 是id,创建时间,更新时间等字段

三、效果图

在线预览地址,服务器性能差,网速比较慢

java实现视频弹幕效果,SpringBoot实现视频弹幕功能 DanmuPlayer插件的使用相关推荐

  1. java实现弹幕效果_css3实现蒙版弹幕功能

    摘要:这篇CSS3栏目下的"css3实现蒙版弹幕功能",介绍的技术点是"CSS3.蒙版.功能.弹幕.实现",希望对大家开发技术学习和问题解决有帮助. 最近在b站 ...

  2. html手机页面弹幕效果,H5移动端弹幕动画实现

    需求 已知20条内容要有弹幕效果,分成三层,速度随机. 先来看看效果: 小小弹幕效果.gif 所以这里不考虑填写生成的.只是一个展现的效果. 如果要看填写生成的,请不要浪费Time 思路把单个内容编辑 ...

  3. c#控件弹幕效果_基于C#弹幕类射击游戏的实现——(十)整合

    先看实现的效果 剩下部分代码,首先是入口,MainForm public partial class MainForm : Form { public MainForm() { // // The I ...

  4. c#控件弹幕效果_基于C#弹幕类射击游戏的实现——(二)渲染

    这个游戏打算是用C#+GDI做~所以渲染效率上还是要进行一些考虑的 public interface IRenderHandler { void Clear(Color backgroundColor ...

  5. c#控件弹幕效果_基于C#弹幕类射击游戏的实现——(六)爆炸效果

    接下来就像填充积木一样,把GameScene里用到的东西一个个写完~~ 先来个最简单的.GameBomb 一目了然 public class GameBomb : GameObject { publi ...

  6. html中鱼眼效果,视频鱼眼效果制作 视频鱼眼效果制作方法

    鱼缸里的鱼总是莫名其妙的就死了,都天真认为天气,水质是杀害它们的凶手,其实呢鱼在鱼缸中看到的你是什么样,自己心里没有点b数吗?它们都是被我们吓死的.你以为我只是将一个段子供大家乐一乐吗?看看我们今天的 ...

  7. 实现抖音视频抖动效果---OpenCV-Python开发指南(53)

    目录 抖音视频抖动原理 实现抖音视频抖动 抖音视频抖动原理 感兴趣的不妨随便弄一个视频使用抖音抖动效果观察.这里,博主建议读者使用国际象棋的视频图像,这种方块的格式更能看清细微的抖动变化. 我们观察抖 ...

  8. 如何制作视频黑白效果

    很多小伙伴还不知道要怎么给视频批量去色,制作视频画面黑白效果,今天小编就来给大家分享一个可以快速批量操作的方法,视频剪辑小技巧,一起来看看吧. 运行[视频剪辑高手]进入软件主页,点击"批量剪 ...

  9. android 循环弹幕,Android自定义View实现弹幕效果

    原标题:Android自定义View实现弹幕效果 在很多视频直播中都有弹幕功能,而安卓上没有简单好用的弹幕控件,本文介绍一个自定义弹幕view的demo. 效果图: 思路: 自定义Textitem类表 ...

最新文章

  1. 2-flutter 之HelloWorld
  2. Springboot08-项目单元测试(接口测试)
  3. 2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
  4. SAP的Cloud Platform增加了多云支持和商业语义
  5. 可被三整除的最大和—leetcode1262
  6. 云栖专辑 | 阿里开发者们的第6个感悟:享受折磨 1
  7. 一个IT经理眼中的RTX、Simba2013与Lync
  8. 这种div高度自适应确定你知道吗?
  9. Storm vs. Spark Streaming
  10. ENVI入门系列教程---二、图像分析---10.基于专家知识决策树分类
  11. 微信小程序python token验证_微信小程序爬虫遇到 token 的问题
  12. matlab画单位圆的代码,请问用MATLAB软件,以动画的形式作出单位圆x^2 +y^2 = 1的图像的程序代码是什么?...
  13. 新鲜出炉2010笑话集锦,我竟然一个都没听过
  14. 游戏编程基础(五)背景地图滚动显示
  15. arduino智能跟随小车
  16. 黑苹果详细安装教程-基于OpenCore官网指导-UPUPMO(macOS Monterey)
  17. Windows中cl命令编译运行C++
  18. Shell 编程 ~ 从入门到入坑。
  19. Code Combat学习心得(Kithgard地牢45关Mightier Than the Sword)
  20. 网吧服务器掉硬盘,网吧服务器磁盘压力大的解决过程

热门文章

  1. 史上最详细的ConcurrentHashMap详解--源码分析
  2. 2022飞鱼科技--鱼苗夏令营实习--游戏客户端--一面(已挂)
  3. net start mysql 发生系统错误2 系统找不到指定的文件。
  4. Adapter的作用及用法
  5. 从移动互联网困局漫谈人工智能的未来
  6. js判断是否是联通手机号
  7. 图灵完备 java_图灵完备
  8. 天若有情天不老,人若有心人不走
  9. 第4章第10节:如何制作一个模拟手机解锁的动画 [SwiftUI快速入门到实战]
  10. windows7运行软件出现找不到D3DCOMPILER_47.dll的解决办法