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>
相关推荐
众壹新能源科技17 小时前
逆变器自带无功不够用,加装5MVar SVG后功率因数从0.85回到0.99
运维·人工智能·自动化
..Dauntless..17 小时前
【Linux】一切皆文件和缓冲区
linux·运维·服务器
QMCY_jason17 小时前
x86 ubuntu2204 无gui 安装 openeuler 2203 aarch64版本
linux·运维·服务器
重生之小比特17 小时前
【Linux系统】12 进程程序替换 自定义Shell 命令行解释器
linux·运维·服务器
考拉讲支付18 小时前
母婴亲子服务平台分账架构设计:多场景多方分账与合规清结算实践
大数据·运维·人工智能·微信小程序·架构·微信公众平台
LateFrames18 小时前
“场控软件” 如何容错与运维
运维·容错·led大屏·播控系统·场控软件
あ-18 小时前
CubeSandBox配置CubeMaster CPU 超分
linux·运维·服务器
艾伦_耶格宇18 小时前
【DOCKER容器实战】-5 Docker容器镜像的构建
运维·docker·容器
速捷工控 PLC触摸屏还原程序19 小时前
S7-200 SMART程序上传提示密码?维修、改造和换机怎么选处理路径?
运维·服务器
程序员-Benothing19 小时前
Linux抓包分析教程:tcpdump、Wireshark、tshark实战
linux·运维·服务器