内容简介: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 发布,流媒体播放器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
浪潮之巅(上册)
吴军 / 人民邮电出版社 / 2013-5-1 / 35.00元
《浪潮之巅(第2版)(上册)》不是一本科技产业发展历史集,而是在这个数字时代,一本IT人非读不可,而非IT人也应该阅读的作品。一个企业的发展与崛起,绝非只是空有领导强人即可达成。任何的决策、同期的商业环境,都在都影响着企业的兴衰。《浪潮之巅》不只是一本历史书,除了讲述科技顶尖企业的发展规律,对于华尔街如何左右科技公司,以及金融风暴对科技产业的冲击,也多有着墨。此外,《浪潮之巅》也着力讲述很多尚在普......一起来看看 《浪潮之巅(上册)》 这本书的介绍吧!