Docker部署WebRTC-Streamer

文章目录

WebRTC-Streamer概述

WebRTC-Streamer是一个基于WebRTC技术的流媒体传输工具,它可以通过Web浏览器实现实时音视频流的传输和播放。它提供了一种简单而强大的方式,允许用户在不需要插件或额外软件的情况下进行实时通信和流媒体传输。

WebRTC-Streamer的主要功能包括:

  1. 实时音视频传输:使用WebRTC技术,可以在浏览器中通过实时传输音频和视频流来进行实时通信,比如语音通话、视频聊天等。
  2. 网络摄像头和麦克风支持:支持从用户计算机上的摄像头和麦克风捕获音视频流,并将其传输到目标设备。
  3. 流媒体播放:可以接收和播放通过WebRTC传输的音视频流,让用户可以在浏览器中实时查看和听取流媒体内容。
  4. 简单易用的API:提供了一套简单易用的API,让开发者能够方便地集成WebRTC-Streamer到自己的Web应用程序中。

WebRTC-Streamer可以在不同平台和设备上运行,只要浏览器支持WebRTC技术即可。它是一个开源项目,你可以在GitHub上找到它的源代码和更多的信息。如果你有特定的问题或需求,欢迎进一步提问。

Docker部署WebRTC-Streamer

  1. 安装Docker

  2. 拉取WebRTC-Streamer镜像

    sudo docker pull mpromonet/webrtc-streamer

  3. 创建容器

    docker run -p 8000:8000 --name webrtc-streamer -it mpromonet/webrtc-streamer

  • -p 8000:8000 是指定端口映射,将容器内部的 8000 端口映射到主机的 8000 端口,这样你就可以通过主机的 8000 端口访问 WebRTC-Streamer。
  • --name webrtc-streamer 是为容器指定一个名称,方便后续管理和操作。
  • -it 是以交互模式运行容器,可以通过终端进行交互。
  • mpromonet/webrtc-streamer 是容器镜像的名称。这个镜像是从 Docker Hub 上获取的,它包含了 WebRTC-Streamer 的运行环境和配置。
  1. 使用浏览器访问 http://localhost:8000/(本机)或者<服务器ip>:8000

Vue使用WebRTC-Streamer

首先需要在webrtcstreamer.js文件的最后一行添加:

复制代码
export default WebRtcStreamer;

Vue代码:

复制代码
<template>
	<div class="videoDemo shadow" ref="videoDemo">
		<video id="video" style="width: 100%;height: calc(100% - 50px);" autoplay loop controls>
		</video>
	</div>
</template>

<script setup lang="ts">
	import { onMounted, onUnmounted, ref } from 'vue'
	import WebRtcStreamer from '../../utils/webrtcstreamer.js'
	
	var webRtcServer : any = null;
	
	onMounted(() => {
		//连接后端的IP地址和端口
		webRtcServer = new WebRtcStreamer("video", "http://192.168.0.105:8000");
		//向后端发送rtsp地址     
		// webRtcServer.connect("rtsp://admin:a12345678@192.168.0.101:554/Streaming/Channels/101");
		webRtcServer.connect("rtsp://admin:a12345678@192.168.0.104:554/Streaming/Channels/101");
	})
	onUnmounted(() => {
		webRtcServer.disconnect();
	})
</script>

<style>
	.videoDemo {
		font-size: 50px;
		width: 100%;
		height: 100%;
		text-align: center;
		background-color: white;;
		/* margin: 5px; */
		border-radius: 10px;
		overflow: hidden;
	}
</style>

onMounted()函数会在组件挂载到DOM树上后立即被调用,可以用来执行一些需要在组件挂载后才能进行的操作,例如获取数据、初始化一些变量、注册事件等。onMounted函数是一个异步函数,因此可以使用async/await语法或者返回一个Promise对象。

在组件挂载后连接获取视频流,并在video标签中显示。

onUnmounted()函数会在组件从DOM树上卸载之前调用,可以用来执行一些清理操作,例如取消事件监听器、清除定时器等。与onMounted函数一样,onUnmounted函数也是一个异步函数,可以使用async/await语法或者返回一个Promise对象。

在组件卸载前,断开视频流的连接。

http://192.168.0.105:8000是WebRTC-Streamer部署的地址,rtsp://admin:a12345678@192.168.0.104:554/Streaming/Channels/101 是摄像头的地址。

一些问题

  1. 外部主机无法无法使用WebRTC-Streamer

使用下面的语句创建容器:

复制代码
docker run -d --network=host --name webrtc-streamer mpromonet/webrtc-streamer

--network=host:将容器加入主机网络中,使容器内部的端口与主机端口一致。(注:使用-p暴露端口会出现问题,外部主机无法使用WebRTC-Streamer)

  1. 访问端口无法打开网页,8000端口也没有占用

不知道什么问题,重装Docker解决了问题。

相关推荐
功德+n3 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭4 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿4 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher6 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家7 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR7 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆7 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w6100104668 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin999998 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊9 小时前
Docker 入门之网络基础
网络·docker·php