nginx 流媒体配置

windows中 nginx流媒体下载地址

通过网盘分享的文件:nginx-1.17-rtmp.rar

链接: https://pan.baidu.com/s/1_QbdfNsMz_fwc2xnlAUxkg 提取码: 5jqf

1、摄像头中配置流媒体转发

2、前端代码中播放流媒体vue2

html 复制代码
<template>
  <div class="stream-page">
    <div class="stream-toolbar">
      <div>
        <div class="stream-title">流媒体预览</div>
        <div class="stream-url">{{ streamUrl }}</div>
      </div>
      <el-button
        size="mini"
        type="primary"
        icon="el-icon-refresh"
        @click="reloadStream"
      >
        重新加载
      </el-button>
    </div>

    <div class="player-shell">
      <video
        ref="videoPlayer"
        class="stream-video"
        controls
        autoplay
        muted
        playsinline
      ></video>
      <div v-if="errorMessage" class="stream-error">
        {{ errorMessage }}
      </div>
    </div>
  </div>
</template>

<script>
import Hls from 'hls.js'

const STREAM_URL = 'http://192.168.0.174:8080/hls/camera231.m3u8'

export default {
  name: 'StreamMedia',
  data() {
    return {
      streamUrl: STREAM_URL,
      hls: null,
      errorMessage: ''
    }
  },
  mounted() {
    this.initPlayer()
  },
  beforeDestroy() {
    this.destroyPlayer()
  },
  methods: {
    initPlayer() {
      const video = this.$refs.videoPlayer
      if (!video) {
        return
      }

      this.errorMessage = ''
      this.destroyPlayer()
      video.pause()
      video.removeAttribute('src')
      video.load()

      if (Hls.isSupported()) {
        const hls = new Hls({
          liveSyncDurationCount: 3,
          maxLiveSyncPlaybackRate: 1.5
        })

        this.hls = hls
        hls.loadSource(this.streamUrl)
        hls.attachMedia(video)
        hls.on(Hls.Events.MANIFEST_PARSED, () => {
          video.play().catch(() => {})
        })
        hls.on(Hls.Events.ERROR, (event, data) => {
          if (!data.fatal) {
            return
          }

          if (data.type === Hls.ErrorTypes.NETWORK_ERROR) {
            hls.startLoad()
            return
          }

          if (data.type === Hls.ErrorTypes.MEDIA_ERROR) {
            hls.recoverMediaError()
            return
          }

          this.errorMessage = '视频流播放失败,请确认推流和 HLS 地址是否正常。'
          this.destroyPlayer()
        })
        return
      }

      if (video.canPlayType('application/vnd.apple.mpegurl')) {
        video.src = this.streamUrl
        video.play().catch(() => {})
        return
      }

      this.errorMessage = '当前浏览器不支持 HLS 播放。'
    },
    reloadStream() {
      this.initPlayer()
    },
    destroyPlayer() {
      if (this.hls) {
        this.hls.destroy()
        this.hls = null
      }
    }
  }
}
</script>

<style scoped lang="scss">
.stream-page {
  min-height: calc(100vh - 84px);
  padding: 16px;
  background: #f3f6f8;
}

.stream-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
}

.stream-title {
  color: #1f2d3d;
  font-size: 18px;
  font-weight: 600;
  line-height: 28px;
}

.stream-url {
  color: #606266;
  font-size: 13px;
  line-height: 20px;
  word-break: break-all;
}

.player-shell {
  position: relative;
  width: 100%;
  height: calc(100vh - 160px);
  min-height: 420px;
  overflow: hidden;
  background: #111820;
  border: 1px solid #dcdfe6;
  border-radius: 4px;
}

.stream-video {
  display: block;
  width: 100%;
  height: 100%;
  background: #111820;
}

.stream-error {
  position: absolute;
  right: 16px;
  bottom: 16px;
  max-width: calc(100% - 32px);
  padding: 8px 12px;
  color: #f56c6c;
  font-size: 13px;
  line-height: 20px;
  background: rgba(0, 0, 0, 0.72);
  border-radius: 4px;
}
</style>
相关推荐
木心术11 小时前
GitHub Actions自动化运维实战:从CI/CD到全链路DevOps
运维·自动化·github
糯米导航1 小时前
实践教程|搭建电商 AI 无限画布,实现百款商品主图自动化批量生成
运维·人工智能·自动化
朴马丁2 小时前
从制造到智造:PLM如何赋能企业研发创新
大数据·运维·人工智能·食品行业·流程行业plm·化工新材料行业·新能源材料行业
爱小黄2 小时前
使用docker搭建集群-使用 Docker 搭建 KingbaseES 集群
运维·docker·容器
zhougl9962 小时前
Gateway 和 Nginx 路由区别
运维·nginx·gateway
听风3473 小时前
Arch Linux 软件安装完全指南
linux·运维·archlinux·pacman
布兰妮甜3 小时前
跨域全方案对比:CORS、Nginx 反向代理、JSONP、iframe、postMessage
nginx·跨域·cors·前端架构·浏览器安全
沉迷学习 日益消瘦4 小时前
10-Gateway API
运维·kubernetes·gateway
智购科技智能售货柜4 小时前
无人售货机连不上服务器?MQTT 频繁掉线排查全流程~YH
运维·服务器