首页 > 其他分享 >web直播

web直播

时间:2024-07-16 17:34:01浏览次数:12  
标签:播放器 web const TCPlayer 地址 直播 timeoutTimer 推流

步骤一:开通腾讯云直播服务

步骤二:获取推流URL

想要简单获取一个推流URL,可以参考文档:快速获得地址

想要了解推流地址和直播间ID的关系,可以参考文档:后台自动拼装

想要了解如果保护自己的推流地址不被盗用,可以参考文档:防盗链签名

步骤三:获取播放URL

步骤四:配置推流端

测试时使用Obs Studio 推流

步骤五:对接播放器

1、通过 cdn 集成播放器TCPlayer  SDK

<link href="https://web.sdk.qcloud.com/player/tcplayer/release/v5.1.0/tcplayer.min.css" rel="stylesheet" />

<script src="https://web.sdk.qcloud.com/player/tcplayer/release/v5.1.0/tcplayer.v5.1.0.min.js"></script>

2、放置播放器容器

<video
    className="player-container-pc"
    ref={videoRef}
    id="player-container-id"
    preload="auto"
    width="100%"
    height="500"
    playsInline={true}
    webkit-playsinline="true"
/>

3、播放器初始化

useEffect(() => {
    if (!timeoutTimer) {
        // 必须使用定时器,播放器元素渲染完成之后才能进行初始化
        timeoutTimer = setInterval(initPlayer, COUNT)
    }

    return () => {
        // 离开页面必须销毁播放器,避免下次进入页面播放器初始化失败
        player?.dispose()
        player = null
        clearInterval(timeoutTimer)
        timeoutTimer = null
    }
}, [])

const initPlayer = () => {
    const isMobile = !!/Mobi|Android|iPhone/i.test(window.navigator.userAgent)
    const box: any = videoRef?.current ?? null

    if (box?.id === 'player-container-id') {
        // 修改播放按钮样式
        const Button = (window as any)?.TCPlayer.getComponent('Button')
        const BigPlayButton = (window as any)?.TCPlayer.getComponent('BigPlayButton')

        BigPlayButton.prototype.createEl = function () {
            const el = Button.prototype.createEl.call(this)
            const _html =
                '<button>' +
                (!isMobile
                    ? '<svg id="图层_x0020_1" xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 141.483 141.501">'
                    : '<svg id="图层_x0020_1" xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 141.483 141.501">') +
                '<path id="路径_7240" data-name="路径 7240" d="M375.328,203.145a78.86,78.86,0,0,1,1.7-14.192c2.674-11.293,6.473-17.628,13.175-26.259a65.689,65.689,0,0,1,12.314-11.237l7.334-4.435c7.654-4.124,19.4-6.862,28.458-6.862,8.939,0,21.279,2.813,28.644,6.966,5.9,3.323,11.821,7.135,16.355,12.193,8.225,9.16,13.4,17.1,16.338,29.872,4.093,17.818.242,34.939-9.77,49.923a62.9,62.9,0,0,1-7.139,8.468,66.748,66.748,0,0,1-8.636,7.247,62.4,62.4,0,0,1-21.842,9.653,101.3,101.3,0,0,1-13.95,1.666c-16.442,0-34.359-7.369-45.414-19.652l-2.817-3.068c-3.271-4.141-7.118-9.476-9.125-14.421C377.6,220.738,375.328,212.357,375.328,203.145Zm46.206,29.431,12.673-7.343c4.253-2.436,8.385-4.863,12.729-7.282L459.6,210.6c1.233-.718,11.929-6.594,12.557-7.451a12.986,12.986,0,0,0-3.033-1.969l-9.523-5.491c-9.264-5.218-19.475-11.527-28.544-16.485l-9.523-5.491ZM367.7,207.559c1,4.967.627,8.455,2.67,14.967,3.76,11.985,6.5,16.485,13.79,25.943a62.177,62.177,0,0,0,8.831,8.831c5.019,3.868,7.542,5.858,13.24,8.831,9.389,4.9,25.914,9.008,36.41,7.563,5.192-.718,9.705-.87,15.066-2.6,9.822-3.167,14.9-5.417,23.5-11.821l4.794-4.037a53.054,53.054,0,0,0,6.473-6.772l3.829-5a67.946,67.946,0,0,0,7.737-14.339,71.127,71.127,0,0,0,3.864-38.18,69.187,69.187,0,0,0-13.452-30.7l-4.037-4.79a53.105,53.105,0,0,0-6.771-6.477c-5.015-3.864-7.524-5.85-13.24-8.831a63.791,63.791,0,0,0-6.1-2.734c-13.573-5.274-31.17-6.789-45.375-2.228-11.808,3.786-15.888,6.049-25.939,13.794-4.547,3.5-9.277,9.06-12.66,13.833a69.662,69.662,0,0,0-11.6,28.133c-.511,2.717-1.692,13.361-1.034,16.606Z" transform="translate(-367.501 -132.487)" fill="#fff" fill-rule="evenodd"/>' +
                '</svg></button>'

            el.appendChild(
                (window as any)?.TCPlayer.dom.createEl('div', {
                    className: 'vjs-button-icon',
                    innerHTML: _html,
                }),
            )
            return el
        }

        // 初始化播放器
        player = window?.TCPlayer('player-container-id', {
            sources: [
                {
                    src: 'xxxxx', // 腾讯云申请的播放地址
                },
            ],
            licenseUrl: 'xxxxx', // 腾讯云申请的license地址
            controlBar: {
                volumePanel: !isMobile, // 移动端不展示音量控制
            },
        })
        // 播放器元素存在就关闭定时器
        clearInterval(timeoutTimer)
        timeoutTimer = null
    }
}

 

注意:web端直播地址建议使用HLS地址,使用其他地址通过obs推流正常,但使用相机推流出现 无法播放

为了安全性建议直播和推理地址都开启https

 

标签:播放器,web,const,TCPlayer,地址,直播,timeoutTimer,推流
From: https://www.cnblogs.com/alisadream/p/18305703

相关文章

  • 直播预约丨《指标体系建设实战》第四期:如何构建全面的指标管理体系
    指标是反映企业的各项核心业务活动、管理成效的数据体系,指标体系作为联结业务逻辑与数据实体的关键桥梁,是构建高质量数据统计的基础单元,并在量化业务绩效和效果评估中扮演着核心角色。为了更好地服务于客户并提供切实可行的实践指导,自4月24日起,袋鼠云将推出全新《指标体系建设实......
  • SpringBoot-集成 webSocket
    1.WebSocket简介2.springboot集成javax注解方式pom<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>配置类/*****blog.coder4j.cn*......
  • 图扑低代码数字孪生 Web SCADA 智慧钢厂
    2024年4月,中国钢铁工业协会发布了《钢铁行业数字化转型评估报告(2023年)》(以下简称《报告》)。《报告》指出,绝大部分钢铁企业建立了数字化转型相关管理组织和团队,并加强其规划落实,系统间的综合集成能力进一步加强。在研发、制造、服务全生命周期管控以及产业链协同等方面需继续深......
  • WEB服务
    一、DNS服务DNS服务器的作用:用于域名解析,把域名解析程IP地址1、完全合格域名完全合格域名由多个部分组成,主要是主机名和域名组成域名有分为根域、顶级域、二级域;根域就是(www.baidu.com.)最右边的com后面的".",用这个点来表示根域顶级域就是域名中最右边的,比如说(www.ba......
  • webpack2源码架构设计与构建流程
    入口初始化入口文件lib/webpack.jsfunctionwebpack(options,callback){ letcompiler; if(Array.isArray(options)){ compiler=newMultiCompiler(options.map(options=>webpack(options))); }elseif(typeofoptions==="object"){//......
  • GLM-4-9B-Chat WebDemo 部署报错:ValueError: too many values to unpack
    用开源大模型食用指南self-llm项目的GLM-4-9B-ChatWebDemo部署文档部署时遇到如下错误:ValueError:toomanyvaluestounpack(expected2)Traceback:File"/root/miniconda3/lib/python3.10/site-packages/streamlit/runtime/scriptrunner/script_runner.py",line552,......
  • 组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态、组态软件、组态编辑器)
     一、什么是组态软件组态软件是一种用于创建、配置和管理监控和控制系统的软件工具。组态是指不需要编写计算机程序、通过配置的方式完成工业应用开发的系统。它们通常用于工业自动化领域,用于实时监视和控制工业过程。组态软件提供了丰富的功能和工具,使用户能够创建用户界......
  • 第二部分:关键技术领域的开源实践【高性能Web服务器和反向代理服务器的代名词】
    Nginx能够解决企业中多种常见的痛点需求,尤其在高流量、高性能和安全性方面表现突出。以下是Nginx可以帮助企业解决的一些主要痛点:高并发处理能力:Nginx使用异步非阻塞的事件驱动架构,这使得它能够高效地处理大量并发连接。对于访问量大的网站或服务,Nginx可以显著提高响应速......
  • 基于web的宠物商城设计与实现 毕业论文终稿+初稿+修改版论文+开题报告+答辩PPT+论文检
    !!!有需要的小伙伴可以通过文章末尾名片咨询我哦!!! ......
  • 核客任务实战-WEB服务器攻防篇教程
    前言网站服务器的核客攻防一直是网络安全中最重要的一部分,本书作者在经过数月的努力之后,终于将网站服务器的攻防以深入浅出、简单易懂的方式呈现在您的眼前,让您不必具有高深的网络知识和经验,只要依照本书的操作说明来按图索骥的进行,就能让您充分了解与感受到高手的技巧和行为一......