java实现视频弹幕效果,SpringBoot实现视频弹幕功能 DanmuPlayer插件的使用
前几天朋友让帮忙做一个视频弹幕网站,在找弹幕实现上发现了一个不错的开源的插件。
本文介绍一下基本使用。
一、下载插件和官方示例
直接从官网下载,可以运行官方的 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插件的使用相关推荐
- java实现弹幕效果_css3实现蒙版弹幕功能
摘要:这篇CSS3栏目下的"css3实现蒙版弹幕功能",介绍的技术点是"CSS3.蒙版.功能.弹幕.实现",希望对大家开发技术学习和问题解决有帮助. 最近在b站 ...
- html手机页面弹幕效果,H5移动端弹幕动画实现
需求 已知20条内容要有弹幕效果,分成三层,速度随机. 先来看看效果: 小小弹幕效果.gif 所以这里不考虑填写生成的.只是一个展现的效果. 如果要看填写生成的,请不要浪费Time 思路把单个内容编辑 ...
- c#控件弹幕效果_基于C#弹幕类射击游戏的实现——(十)整合
先看实现的效果 剩下部分代码,首先是入口,MainForm public partial class MainForm : Form { public MainForm() { // // The I ...
- c#控件弹幕效果_基于C#弹幕类射击游戏的实现——(二)渲染
这个游戏打算是用C#+GDI做~所以渲染效率上还是要进行一些考虑的 public interface IRenderHandler { void Clear(Color backgroundColor ...
- c#控件弹幕效果_基于C#弹幕类射击游戏的实现——(六)爆炸效果
接下来就像填充积木一样,把GameScene里用到的东西一个个写完~~ 先来个最简单的.GameBomb 一目了然 public class GameBomb : GameObject { publi ...
- html中鱼眼效果,视频鱼眼效果制作 视频鱼眼效果制作方法
鱼缸里的鱼总是莫名其妙的就死了,都天真认为天气,水质是杀害它们的凶手,其实呢鱼在鱼缸中看到的你是什么样,自己心里没有点b数吗?它们都是被我们吓死的.你以为我只是将一个段子供大家乐一乐吗?看看我们今天的 ...
- 实现抖音视频抖动效果---OpenCV-Python开发指南(53)
目录 抖音视频抖动原理 实现抖音视频抖动 抖音视频抖动原理 感兴趣的不妨随便弄一个视频使用抖音抖动效果观察.这里,博主建议读者使用国际象棋的视频图像,这种方块的格式更能看清细微的抖动变化. 我们观察抖 ...
- 如何制作视频黑白效果
很多小伙伴还不知道要怎么给视频批量去色,制作视频画面黑白效果,今天小编就来给大家分享一个可以快速批量操作的方法,视频剪辑小技巧,一起来看看吧. 运行[视频剪辑高手]进入软件主页,点击"批量剪 ...
- android 循环弹幕,Android自定义View实现弹幕效果
原标题:Android自定义View实现弹幕效果 在很多视频直播中都有弹幕功能,而安卓上没有简单好用的弹幕控件,本文介绍一个自定义弹幕view的demo. 效果图: 思路: 自定义Textitem类表 ...
最新文章
- 2-flutter 之HelloWorld
- Springboot08-项目单元测试(接口测试)
- 2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
- SAP的Cloud Platform增加了多云支持和商业语义
- 可被三整除的最大和—leetcode1262
- 云栖专辑 | 阿里开发者们的第6个感悟:享受折磨 1
- 一个IT经理眼中的RTX、Simba2013与Lync
- 这种div高度自适应确定你知道吗?
- Storm vs. Spark Streaming
- ENVI入门系列教程---二、图像分析---10.基于专家知识决策树分类
- 微信小程序python token验证_微信小程序爬虫遇到 token 的问题
- matlab画单位圆的代码,请问用MATLAB软件,以动画的形式作出单位圆x^2 +y^2 = 1的图像的程序代码是什么?...
- 新鲜出炉2010笑话集锦,我竟然一个都没听过
- 游戏编程基础(五)背景地图滚动显示
- arduino智能跟随小车
- 黑苹果详细安装教程-基于OpenCore官网指导-UPUPMO(macOS Monterey)
- Windows中cl命令编译运行C++
- Shell 编程 ~ 从入门到入坑。
- Code Combat学习心得(Kithgard地牢45关Mightier Than the Sword)
- 网吧服务器掉硬盘,网吧服务器磁盘压力大的解决过程