位置: IT常识 - 正文

Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流(搭建rtmp)

编辑:rootadmin
Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流 场景

推荐整理分享Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流(搭建rtmp),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:Windows上搭建CIFS文件共享,Windows上搭建portal服务,windows搭建rtmp服务器,Windows上搭建opensips,Windows上搭建opensips,Windows上搭建git仓库,Windows上搭建CIFS文件共享,Windows上搭建portal服务,内容如对您有帮助,希望把文章链接给更多的朋友!

Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流:

Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流_霸道流氓气质的博客-CSDN博客

上面讲了Nginx-http-flv-module+flv.js进行流媒体服务器搭建和前端播放视频流的过程。

但是Nginx-http-flv-module对于Windows的支持以及推流格式的支持优先,所以下面推荐

rtsp-simple-server流媒体服务器的使用。

rtsp-simple-server

https://github.com/aler9/rtsp-simple-server

rtsp-simple-server / MediaMTX是一个随时可用的零依赖服务器和代理,

允许用户发布、读取和代理实时视频和音频流。

所支持的协议格式

这里的需求是搭建rtmp的流媒体服务器,并接收其他摄像头的推流,然后在前端html或者

vue中进行视频流播放。

HLS协议

HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,基于HTTP协议实现,

传输内容主要包括两部分,一是M3U8描述文件,二是TS媒体文件。

1.m3u8文件是一种索引文件,用文本方式对媒体文件进行描述,由一系列标签组成。

2.m3u8文件用于解析对应的放在服务器上的视频网络地址,从而实现在线播放。

3、ts文件是传输流文件,是实际需要播放的内容,通常一个大的视频被分成众多小的ts实现分片。

注:

博客:霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主

实现

1、这里是本机Windows电脑,下载zip压缩包到本地并解压

Releases · aler9/rtsp-simple-server · GitHub

解压之后根据自己需要修改其yml配置文件

这里只需要修改其rtmp服务的端口为11935,修改之后保存,双击rtsp-simple-server.exe启动

启动成功之后会提示有哪些格式的视频流已经开启支持以及对应的端口。

如果启动后没有成功的页面或者修改的配置文件不对导致起不来,可以在exe所在的目录打开cmd,

然后将exe拖入cmd,回车即可看到错误输出

2、模拟推送视频流

模拟推送视频流可以参考官方使用FFmpeg的方式,或者上文中使用oob进行模拟的方式

Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流(搭建rtmp)

这里使用编辑ffmpeg的脚本进行模拟推送rtmp的视频流,脚本内容为

ffmpeg.exe -re -i D:\WorkSpace\Other\FFmpegDemo\test\1.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:11935/hls/123_0pause

可参考如下

Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流:

Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流_win nginx-rtmp最新版_霸道流氓气质的博客-CSDN博客

模拟推流之后可以直接在浏览器中打开

http://127.0.0.1:8888/hls/123_0/

可以看到浏览器一直在请求.m3u8的地址,将这个地址复制出来

这个地址也可以在vlc中打开进行播放

http://127.0.0.1:8888/hls/123_0/stream.m3u8

3、前端Html播放hls/m3u8视频

前面直接可以将hls的地址在浏览器中打开,并且按照官方文档,也可以直接使用iframe进行播放

​<iframe src="http://rtsp-simple-server-ip:8888/mystream" scrolling="no"></iframe>

完整html示例代码

​<!DOCTYPE html><html><head>    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">    <title>hls demo</title>    <style>        .mainContainer {            display: block;            width: 1024px;            margin-left: auto;            margin-right: auto;        }    </style></head><body><p class="mainContainer"> <iframe src="http://127.0.0.1:8888/hls/123_0" scrolling="no"></iframe></p><script></script></body></html>​

运行html效果

html还可以使用hls播放m3u8视频

rtsp-simple-server/hls_index.html at main · aler9/rtsp-simple-server · GitHub

官方示例代码:

​<!DOCTYPE html><html><head><meta charset="utf-8"><style>html, body { margin: 0; padding: 0; height: 100%; overflow: hidden;}#video { width: 100%; height: 100%; background: black;}</style></head><body><video id="video" muted controls autoplay playsinline></video><script src=" href='https://cdn.jsdelivr.net/npm/hls.js@1.2.9">https://cdn.jsdelivr.net/npm/hls.js@1.2.9"></script><script>const create = () => { const video = document.getElementById('video'); // always prefer hls.js over native HLS. // this is because some Android versions support native HLS // but don't support fMP4s. if (Hls.isSupported()) {  const hls = new Hls({   maxLiveSyncPlaybackRate: 1.5,  });  hls.on(Hls.Events.ERROR, (evt, data) => {   if (data.fatal) {    hls.destroy();    setTimeout(create, 2000);   }  });  hls.loadSource('index.m3u8');  hls.attachMedia(video);  video.play(); } else if (video.canPlayType('application/vnd.apple.mpegurl')) {  // since it's not possible to detect timeout errors in iOS,  // wait for the playlist to be available before starting the stream  fetch('stream.m3u8')   .then(() => {    video.src = 'index.m3u8';    video.play();   }); }};window.addEventListener('DOMContentLoaded', create);</script></body></html>​

本地示例代码

​<!DOCTYPE html><html><head><meta charset="utf-8"><style>html, body { margin: 0; padding: 0; height: 100%; overflow: hidden;}#video { width: 100%; height: 100%; background: black;}</style></head><body><video id="video" muted controls autoplay playsinline></video><script src=" href='https://cdn.jsdelivr.net/npm/hls.js@1.2.9">https://cdn.jsdelivr.net/npm/hls.js@1.2.9"></script><script>const create = () => { const video = document.getElementById('video'); // always prefer hls.js over native HLS. // this is because some Android versions support native HLS // but don't support fMP4s. if (Hls.isSupported()) {  const hls = new Hls({   maxLiveSyncPlaybackRate: 1.5,  });  hls.on(Hls.Events.ERROR, (evt, data) => {   if (data.fatal) {    hls.destroy();    setTimeout(create, 2000);   }  });  hls.loadSource('http://127.0.0.1:8888/hls/123_0/stream.m3u8');  hls.attachMedia(video);  video.play(); } else if (video.canPlayType('application/vnd.apple.mpegurl')) {  // since it's not possible to detect timeout errors in iOS,  // wait for the playlist to be available before starting the stream  fetch('http://127.0.0.1:8888/hls/123_0/stream.m3u8')   .then(() => {    video.src = 'http://127.0.0.1:8888/hls/123_0/stream.m3u8';    video.play();   }); }};window.addEventListener('DOMContentLoaded', create);</script></body></html>​

运行本地示例代码

4、Vue中播放hls/m3u8视频

Vue+Video.js播放m3u8视频流(海康威视摄像头+RTMP服务+FFmpeg):

Vue+Video.js播放m3u8视频流(海康威视摄像头+RTMP服务+FFmpeg)_video.js 海康_霸道流氓气质的博客-CSDN博客

前面记录过,这里只需要修改视频流地址即可。

还是需要安装依赖

npm install --save video.jsnpm install --save videojs-contrib-hls

完整页面代码

​<template>  <div class="component-upload-image">    <video      id="my-video"      class="video-js vjs-default-skin"      controls      preload="auto"      width="500px"    >      <source        src="http://127.0.0.1:8888/hls/123_0/stream.m3u8"        type="application/x-mpegURL"      />    </video>  </div></template><script>import "video.js/dist/video-js.css";import videojs from "video.js";import "videojs-contrib-hls";export default {  components: {  },  name: "m3u8Play",  data() {    return {};  },  mounted() {    let _that = this;    setTimeout(() => {      _that.getVideo();    }, 6000);  },  methods: {    getVideo() {      videojs(        "my-video",        {          bigPlayButton: false,          textTrackDisplay: false,          posterImage: true,          errorDisplay: false,          controlBar: true,        },        function () {          this.play();        }      );    },  },  watch: {},};</script><style scoped lang="scss"></style>​

运行效果

5、缺点

该种方式视频延迟较大,本地实测大概10秒左右。

优化延迟大问题可以参考官方Low-Latency variant的配置

本文链接地址:https://www.jiuchutong.com/zhishi/273653.html 转载请保留说明!

上一篇:华为应用市场被禁止安装软件怎么样才可以取消详情(华为应用市场被锁了,怎么解除密码)

下一篇:笔记本开机黑屏的解决方法(笔记本开机黑屏不显示任何东西)

  • 苹果手机有自带检测摄像头吗(苹果手机有自带的清理软件吗)

    苹果手机有自带检测摄像头吗(苹果手机有自带的清理软件吗)

  • 控制中心怎么添加麦克风模式(控制中心怎么添加手电筒)

    控制中心怎么添加麦克风模式(控制中心怎么添加手电筒)

  • 荣耀x10的分辨率是多少(荣耀x10屏幕分辨率)

    荣耀x10的分辨率是多少(荣耀x10屏幕分辨率)

  • 磁盘空间不足怎么扩大(磁盘空间不足怎么清理手机安卓)

    磁盘空间不足怎么扩大(磁盘空间不足怎么清理手机安卓)

  • 快手上买的东西已收到后如何退货(快手买的东西查不到订单是怎么回事)

    快手上买的东西已收到后如何退货(快手买的东西查不到订单是怎么回事)

  • 主题商店怎么自己制作主题(主题商店怎么自定义壁纸)

    主题商店怎么自己制作主题(主题商店怎么自定义壁纸)

  • word大纲怎么调出来(如何调出word的大纲)

    word大纲怎么调出来(如何调出word的大纲)

  • 4415y相当于i5多少(4415u相当于i5哪个级别)

    4415y相当于i5多少(4415u相当于i5哪个级别)

  • 陌陌为什么老是账号异常(陌陌为什么老是封号?)

    陌陌为什么老是账号异常(陌陌为什么老是封号?)

  • 用热点投屏费流量吗(用手机热点投屏耗流量吗)

    用热点投屏费流量吗(用手机热点投屏耗流量吗)

  • 华为mate30后盖碎了(华为mate30后盖碎了能换吗)

    华为mate30后盖碎了(华为mate30后盖碎了能换吗)

  • 微信发位置为什么没有自己的店铺(微信发位置为什么发不出去)

    微信发位置为什么没有自己的店铺(微信发位置为什么发不出去)

  • 微信视频看不到自己是怎么回事(微信视频看不到对方但对方能看见我)

    微信视频看不到自己是怎么回事(微信视频看不到对方但对方能看见我)

  • 苹果用充电宝伤手机吗(苹果充电宝伤会让手机背面掉漆吗)

    苹果用充电宝伤手机吗(苹果充电宝伤会让手机背面掉漆吗)

  • 荣耀20pro和荣耀30s的区别(荣耀20pro和荣耀30s)

    荣耀20pro和荣耀30s的区别(荣耀20pro和荣耀30s)

  • 怎么给别人充爱奇艺vip(怎么给别人充爱奇艺会员连续包月)

    怎么给别人充爱奇艺vip(怎么给别人充爱奇艺会员连续包月)

  • 淘宝能不能匿名购买(淘宝如何匿名)

    淘宝能不能匿名购买(淘宝如何匿名)

  • lioal00是什么手机(liion00是什么型号手机)

    lioal00是什么手机(liion00是什么型号手机)

  • 打字下划线怎么打出来(打字下划线怎么消失)

    打字下划线怎么打出来(打字下划线怎么消失)

  • 手机快手直播伴侣怎么使用(手机快手直播伴侣直播游戏怎么没有声音)

    手机快手直播伴侣怎么使用(手机快手直播伴侣直播游戏怎么没有声音)

  • word文档条形码打印(word文档条形码制作)

    word文档条形码打印(word文档条形码制作)

  • 抖音怎么上传本地视频(抖音怎么上传本地伴奏唱歌)

    抖音怎么上传本地视频(抖音怎么上传本地伴奏唱歌)

  • 华为emui10什么时候推送(华为何时更新emui10)

    华为emui10什么时候推送(华为何时更新emui10)

  • 微信聊天删了能恢复吗(微信聊天删了能恢复出来吗)

    微信聊天删了能恢复吗(微信聊天删了能恢复出来吗)

  • oppor17屏幕分辨率(oppor17pro屏幕分辨率)

    oppor17屏幕分辨率(oppor17pro屏幕分辨率)

  • oppo锁屏时间怎么设置(oppo锁屏时间怎么设置横向)

    oppo锁屏时间怎么设置(oppo锁屏时间怎么设置横向)

  • 华为p20设置来电视频(华为p20怎么设置来电秀)

    华为p20设置来电视频(华为p20怎么设置来电秀)

  • cad怎么渲染(cad怎么渲染颜色)

    cad怎么渲染(cad怎么渲染颜色)

  • 国产手机商为什么用安卓而不用ios(国产手机为什么卖这么贵)

    国产手机商为什么用安卓而不用ios(国产手机为什么卖这么贵)

  • 可转债会计分录利息
  • 小规模减免税款的账务处理
  • 建筑劳务公司做账分录
  • 劳务报酬现金 过账
  • 住宿税率是多少 5%
  • 工资算管理费用还是生产成本
  • 甲方也要跟项目走的吧
  • 发票右上角数字是什么
  • 费用摊销怎么做
  • 服务业发票丢失怎么处理
  • 地质勘察费用应由谁支付
  • 施工单位给你钱敢领吗
  • 房产税法律制度的重要内容
  • 实收资本印花税是一年一交吗
  • 规避税收风险什么意思
  • 残保金每年什么时候申报缴纳
  • 当月开发票收到货款会计应该以什么为做账凭证?
  • 华为最新款手机2023款
  • 包吃伙食费会计分录
  • php获取远程文件扩展名
  • 拆迁货币什么意思
  • 其它业务收入是什么科目
  • three.js 教程
  • 公司向股东借的钱怎么还
  • 销售滞后税务处理
  • json postman
  • 法定盈余公积使用于什么
  • 经典动画动漫
  • php搜索代码
  • 管理费用未分配利润
  • 网络销售税率怎么算
  • 直线折旧法账务处理例题
  • 建筑装饰工程公司属于什么行业
  • 顺丰快递电子运单打印模板
  • 管理费用只能在借方吗
  • 三代手续费的税率
  • 出纳把现金存入私人账户后转公账
  • html 基础
  • 经济利益的总流入
  • 入伙退伙协议要盖章吗
  • 无形资产一般包括哪些权利
  • 本年利润是什么性质的科目
  • 结转损益结转了两次咋办
  • 微信支付的账务在哪里
  • 员工给兄弟公司的感谢信
  • 损益类费用科目结转本年利润是余额结转还是发生额结转
  • 伙食费占支出比例
  • 土地的入账科目
  • 小规模纳税人季报网上申报流程
  • 错误凭证如何处理
  • 营业收入和销售收入的比值
  • sql server用处
  • mysql格式化日期yyyy/mm/dd
  • 关闭默认共享的影响
  • wermgr.exe是什么进程
  • win10屏幕显示
  • xp系统怎么强制结束进程
  • 在linux中,要解包bugzilla.tar.gz
  • wmiprvse.exe是什么程序
  • win7系统怎么禁止软件自启动
  • centos 终端
  • xp开机启动项在哪里设置方法
  • win11怎么关闭系统防火墙
  • linux挂载啥意思
  • 触发器csdn
  • jQuery实现彩带延伸效果的网页加载条loading动画
  • 苏州大学附属第一医院占地面积
  • python下三角
  • css应用领域
  • 批处理/a
  • python中类怎么用
  • JavaScript Array对象详解
  • js代码不生效
  • 医院盖章去哪个部门
  • 纳税信用等级在哪里查
  • 吉林省地税局电话号码
  • 长春国税局科员工资是多少
  • 山东地税局网上办税平台
  • 福建省狱警招聘医生
  • 企业所得税优惠事项管理目录2023
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设