java实现局域网内视频投屏播放(一)背景/需求

一 背景

我们在用电视上投屏电影或者电视剧时,如果没有vip,用盗版电影网站投屏的话会有两个问题,1:他们网站没有投屏功能。2:卡!!!。还有就是不能随心所欲的设置自己先要自动播放的视频列表(如看完柯南第一集后想自动播放火影第十五集),所以为了实现投屏自由,需要这么一个功能来让电视播放局域网内的视频。

二 需要的设备

需要的设备为电脑,可以投屏的电视或有投屏应用的机顶盒如爱投屏

三 原理

  1. 利用多线程爬虫从视频网站上将视频下载到本地
  2. 并根据HLS协议组装好播放视频所需的m3u8文件
  3. 提供获取m3u8文件内容和视频片段ts内容的http接口
  4. 通过UPnP协议,将视频链接发送给投屏设备(DLNA设备)
  5. 设备根据m3u8中的视频片段链接去获取视频片段内容
  6. 监听设备的动作回调接口,设备播放完视频后通知http服务,自动播放下一个视频

以此实现投屏设备播放局域网内的视频,因为下载用了多线程,所以整个下载过程也是非常快的,大概1-2分钟可以下载完一个视频。因为从局域网中获取视频,所以速度是非常快的,无论怎么拖动进度都不会卡。不过需要全程开着电脑提供视频获取服务,但是不影响电脑的其他功能的使用,可以一边用电脑玩游戏一边看电视中投屏的视频。

代码在这里​​​​​​​,是一个简单版本,在application.yml中定一个了一个属性video.base.path,指定了视频爬虫下载视频的保存地址,可以自行修改。项目中内置了几个爬虫,启动项目后使用方式如下

  1. 调用/video/crawl?url=视频网站视频播放页面链接。下载视频,会在video.base.path路径下生成一个名称为视频id的文件夹
  2. 调用/device/search?serviceType=urn:schemas-upnp-org:service:AVTransport:1 获取当前局域网下的投屏设备
  3. 调用/device/play?deviceId=设备列表的序号(从0开始)&videoId=视频id 投屏
  4. 提供了一个简单的页面来执行上述步骤1-3http://localhost:8088/html/index.html,进入页面后会有5秒中进行搜索设备,并且显示出video.base.path路径下的视频列表,如果没有视频的话,可以输入地址进行下载,内置爬虫支持的网站为www.huidongxie.comwww.wszwz.netwww.nxyjjt.com。投屏的时候,在页面中先点一下设备列表中的设备,再点击视频列表中的视频,就可以进行投屏。

​​​​​​​

页面很简陋,先凑合着用。。。。

相关推荐
一只爱撸猫的程序猿1 分钟前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
甄超锋15 分钟前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国35 分钟前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~36 分钟前
《设计模式》装饰模式
java·设计模式
A尘埃42 分钟前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
青云交1 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
CHEN5_022 小时前
【Java基础面试题】Java基础概念
java·开发语言
二十雨辰2 小时前
[TG开发]照片机器人
java·web3
武昌库里写JAVA3 小时前
JAVA面试汇总(四)JVM(一)
java·vue.js·spring boot·sql·学习
早睡身体好~3 小时前
【lubancat】鲁班猫4实现开机后自动播放视频
音视频·linux开发