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

这篇具有很好参考价值的文章主要介绍了Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景

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是一个随时可用的零依赖服务器和代理,

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

所支持的协议格式

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

这里的需求是搭建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

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

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

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

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

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

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

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

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

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

2、模拟推送视频流

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

这里使用编辑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_0
pause

可参考如下

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

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

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

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

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

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

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

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

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

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

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

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

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

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

完整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效果

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

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>

​

运行本地示例代码

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

4、Vue中播放hls/m3u8视频

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

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

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

还是需要安装依赖

npm install --save video.js

npm 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>

​

运行效果

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

5、缺点

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

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

Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流文章来源地址https://www.toymoban.com/news/detail-430143.html

到了这里,关于Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用nginx和ffmpeg搭建HTTP FLV流媒体服务器(摄像头RTSP视频流->RTMP->http-flv)

    名词解释   RTSP (Real-Time Streaming Protocol) 是一种网络协议,用于控制实时流媒体的传输。它是一种应用层协议,通常用于在客户端和流媒体服务器之间建立和控制媒体流的传输。RTSP允许客户端向服务器发送请求,如播放、暂停、停止、前进、后退等,以控制媒体流的播放和

    2024年02月16日
    浏览(44)
  • 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放

    目前市面上有很多开源的流媒体服务器解决方案,常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca等。 1、SRS GitHub - ossrs/srs: SRS is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181. 2、EasyDarwin https://github.com/EasyDarwin/EasyDarwin 3、Monibuca Monibuca ·

    2023年04月16日
    浏览(37)
  • linux+nginx-http-flv-module+ffmpeg实现搭建简易流媒体服务器将rtsp流转flv格式在web端和微信小程序实时播放监控视频

    一.介绍背景 公司项目开发需求:将海康摄像头的rtsp流在web端及微信小程序端进行播放。之前我写过一篇关于web端使用webtrc+videojs播放rtsp流的文章,确实能够解决web端播放rtsp流的需求,但是这次多加了一个微信小程序....所以要考虑小程序的播放问题。本着探索实践的精神在

    2024年02月08日
    浏览(52)
  • 怎样从一个新手,实现windows搭建wvp+zlm流媒体平台?

    在流媒体日趋成熟的今天,大家每天都会刷大量视频,又或者拥有一部手机就能远程查看家里的监控;那作为新手的你,怎么从无到有打造自己的流媒体平台呢? 这里我们选用wvp+ZLMediaKit开源平台,WEB VIDEO PLATFORM(wvp)是一个基于GB28181-2016标准实现的网络视频平台,支持NAT穿

    2024年02月02日
    浏览(45)
  • 使用gst-rtsp-server搭建rtsp服务器转发rtsp

    使用gstreamer中自带的rtsp服务器,就能快速的以管道的形式搭建rtsp服务器推流 下载gst-rtsp-server 查看自己系统gstreamer的版本,在gstreamer官网下载相关版本.tar.xz源码包。解压后进入目录。./configurer 然后make编译。进入examples目录就能看到已经编译好的各种示例程序以及源码 推流

    2024年02月10日
    浏览(40)
  • 流媒体协议RTSP初篇(一)

    今日天气微凉,小雨稀稀拉拉的落下,写写文章开心一点。 一、前情提要之工作流程 RTSP、RTP、RTCP、SDP四个协议一般是打包使用的,各司其职完成传输媒体流的使命。大致流程如下: 身份卡: 老板 : RTSP 秘书 : SDP RTCP : 质量经理 RTP : 小工 小剧场: 老板A: 有媒体资源 老板

    2024年02月07日
    浏览(37)
  • 流媒体协议之RTSP详解

    RTSP(Real Time Streaming Protocol):实时流媒体协议,是由Real network 和 Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议,RTSP提供一种可扩展的框架,使能够提供能控制的,按需传输实时数据,如音频流、视频流、metadata; 遵循规范IETF RFC 2326,4567,6064,其语法和操作参

    2024年02月05日
    浏览(34)
  • Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)

    RTMP服务时常用于直播时提供拉流推流传输数据的一种服务。前段时间由于朋友想搭建一套直播时提供稳定数据传输的服务器,所以就研究了一下如何搭建及使用。 首先我们要知道一般nginx不能直接配置rtmp服务,在Windows系统上需要特殊nginx版本才能进行搭建 : nginx 1.7.11.3 Gryp

    2024年02月02日
    浏览(91)
  • 基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)

    前言:公司最近因为客户端视频文件过大导致视频加载时间很长,让我将视频播放做成流媒体点播的形式,于是查阅了几十篇相关文章以及文档,最终将功能实现。可能是存在版本差异,绝大部分文章介绍的教程并不能成功实施,尤其是点播功能,所以我把我工作中验证成功

    2024年02月02日
    浏览(54)
  • LiveNVR监控流媒体Onvif/RTSP功能-服务接收RTSP推流RTSPServer可以拉转配置到通道中视频直播

    目前不是所有的直播推流设备都支持RTSP取流,有的只能输出直播流,有的只能支持RTSP的推流。那么,项目中如何把 rtsp推流配置到通道中。 示例:rtsp://192.168.2.135:1554/stream_1 192.168.2.135 是部署LiveNVR服务器的IP,您自己用的时候换成自己服务器的IP 1554 是基础配置配置的RTSP服务

    2024年02月01日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包