内容简介:EasyMedia v1.0.0 已经发布。 介绍 Springboot、netty实现的http-flv、websocket-flv流媒体服务(可用于直播点播),支持rtsp、h264、h265等、rtmp等多种源,h5纯js播放(不依赖flash),不需要依赖nginx等第三方...
EasyMedia v1.0.0 已经发布。
介绍
Springboot、netty实现的http-flv、websocket-flv流媒体服务(可用于直播点播),支持rtsp、h264、h265等、rtmp等多种源,h5纯js播放(不依赖flash),不需要依赖nginx等第三方,延迟大部分在1-5秒内(已经支持转复用,h264的流自动转封装,超低延迟。PS:当然还有种更低延迟的不用flv方案没时间写了,但是主要是flv比较大众,这个一般也够用了)。
PS:项目里已经集成最新版编译好的前端,由于前端只是个demo,这里是没有hls功能的版本,hls前端播放比较简单,我就懒得上传了
功能汇总 (文档水平有限,使用前尽量先看完readme)
- 支持播放 rtsp、rtmp、http、文件等流……
- pc端桌面投影
- 支持永久播放、按需播放(无人观看自动断开)
- 自动判断流格式h264、h265,自动转封装
- 支持http、ws协议的flv
- 支持hls内存切片(不占用本地磁盘,只占用网络资源)
- 重连功能
- 支持javacv、ffmpeg方式切换
软件架构
- netty负责播放地址解析及视频传输,通过javacv推拉流存到内存里,直接通过输出到前端播放
- 后端:springboot、netty,集成websocket
- 前端:vue、html5(简单的管理页面)
- 播放器:西瓜播放器 http://h5player.bytedance.com/ (字节跳动家的,不介绍了,抖音视频、西瓜视频都杠杠的,当然只要支持flv的播放器都可以)
- 媒体框架:javacv、ffmpeg
使用教程
流媒体服务会绑定两个端口,分别为 8866(媒体端口)、8888(web端口,后续会做简单的管理页面) 您只需要将 {您的源地址} 替换成您的,然后放播放器里就能看了
- 播放地址(播放器里直接用这个地址播放)
http://localhost:8866/live?url={您的源地址} ws://localhost:8866/live?url={您的源地址} 例如rtsp: http://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102 ws://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102 文件(支持格式参照ffmpeg支持的格式): http://localhost:8866/live?url=d:/flv/testVideo.mp4 ws://localhost:8866/live?url=d:/flv/testVideo.mp4 电脑桌面投影(url改成desktop即可): http://localhost:8866/live?url=desktop ws://localhost:8866/live?url=desktop
- 推拉流(有两种方式)
- 按需播放(默认)直接使用上面播放地址就可以播放,每次第一个用户打开会创建推流,没人看时十几秒后会自动断开流。
- 永久播放,通过restfu api或者页面先新增流,再开启推流,在服务同级目录会生成一个camera.json,重启服务发现camera.json也会自动推流,用json文件是方便手动维护源地址,之后通过播放地址可以在浏览器直接秒开。
- hls播放, http://localhost:8888/hls?url={您的源地址}
永久播放还有一种捷径,就是在播放地址后面加上autoClose=false参数,也会加入到json中。 例如: http://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102&&&autoClose=false ws://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102&&&autoClose=false ### hls播放例子:(注意:hls为http端口8888,并且不支持url后面参数,开启切片后可以播放) http://localhost:8888/hls?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102
- url参数说明
参数加在播放地址url最后面,使用 [&&&] 符号 例如: http://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102&&&autoClose=false&&&ffmpeg=true ws://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102&&&autoClose=false&&&ffmpeg=true ### autoClose=false 设置为永久播放 ffmpeg=true 使用ffmpeg方式,提高兼容稳定性(不支持的流可以试试这个参数) //hls=true(目前还不支持此参数,只能api或者网页端控制开启)
- 页面功能
可以访问 http://localhost:8888 具体功能参照截图
- restful api
新增流 http://localhost:8888/add?url={您的源地址}&remark={备注} 停止并删除 http://localhost:8888/del?url={您的源地址} 停止flv推流 http://localhost:8888/stop?url={您的源地址} 开启flv推流 http://localhost:8888/start?url={您的源地址} 开启hls切片 http://localhost:8888/startHls?url={您的源地址} 停止hls切片 http://localhost:8888/stopHls?url={您的源地址} 查看保存的流 http://localhost:8888/list
- 成品运行方式(由于是跨平台的,未做ffmpeg精简,所以包会比较大)
java -jar EasyMedia-0.0.1-SNAPSHOT.jar 还可以这样改端口 java -jar -Dserver.port=页面端口 -Dmediaserver.port=媒体端口 EasyMedia-0.0.1-SNAPSHOT.jar
疑问解答
- 在vlc、ffplay等播放器测试存在延迟较高是正常的,是因为他们默认的嗅探关键帧的时间比较长,测延迟建议还是用flv.js播放器测试。
- 是否需要ffmpeg推流,不需要,就是为了简化使用,只需运行一个服务即可。
- 很多人想用文件点播,可以参考截图。
截图
源码教程
- 环境:java8+
- 标准的maven项目,sts、eclipse或者idea导入,直接运行main方法
详情查看:https://gitee.com/52jian/EasyMedia/releases/v1.0.0
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- C#屏幕流媒体节目
- Go语言实战流媒体视频网站
- SRS流媒体服务器源码分析(一)
- 为什么流媒体直播的延迟很高
- 谁能接力 Flash video 流媒体传输
- PearPlayer 2.2.1 发布,流媒体播放器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
HTML Dog
Patrick Griffiths / New Riders Press / 2006-11-22 / USD 49.99
For readers who want to design Web pages that load quickly, are easy to update, accessible to all, work on all browsers and can be quickly adapted to different media, this comprehensive guide represen......一起来看看 《HTML Dog》 这本书的介绍吧!