web直播

news/2024/11/16 14:49:52/文章来源:https://www.cnblogs.com/alisadream/p/18305703

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

步骤二:获取推流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、放置播放器容器

<videoclassName="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 = nullclearInterval(timeoutTimer)timeoutTimer = null}
}, [])const initPlayer = () => {const isMobile = !!/Mobi|Android|iPhone/i.test(window.navigator.userAgent)const box: any = videoRef?.current ?? nullif (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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744774.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过chrony实现内网自建时间同步服务器

服务端安装chrony服务端yum install -y chrony配置chrony服务端#chrony默认配置文件路径 # yum : 一般为/etc/chrony.conf # apt : 一般为/etc/chrony/chrony.conf #在chrony.conf中加入以下行 server ntp.aliyun.com iburst manual allow 0.0.0.0/0 local stratum 8测试chrony…

【YashanDB知识库】存储过程报错snapshot too old

问题描述 20231127上午客户反馈绩效系统20231125、20231126出现2次YAS-02020 snapshot too old的问题,测试也有类似问题。 该过程是客户新增的存储过程,目的是通过PRO_RUN_JOB作为主控,调度其他存储过程,后续不用其他调度引擎。 原因分析 错误信息收集分析 分析存储过程报错…

DeepVT论文阅读笔记

DeepVT: Deep View-Temporal Interaction Network for News Recommendation论文阅读笔记 Abstract 存在的问题: ​ 以往的研究大多只是直接应用新闻层面的表征进行用户建模,新闻的标题、摘要、分类等观点只是被隐含和压缩到新闻的单一向量中,这就使得不同新闻中的不同观点无…

直播预约丨《指标体系建设实战》第四期:如何构建全面的指标管理体系

指标是反映企业的各项核心业务活动、管理成效的数据体系,指标体系作为联结业务逻辑与数据实体的关键桥梁,是构建高质量数据统计的基础单元,并在量化业务绩效和效果评估中扮演着核心角色。 为了更好地服务于客户并提供切实可行的实践指导,自4月24日起,袋鼠云将推出全新《指…

shr不能创建出差单可能存在的问题

shr不能创建出差单可能存在的问题时间冲突 OTP设置问题​​

暑期集训shellcode5(手搓机器码)

拖进ida里面反汇编再让人工智能分析(我是废物)(后来给源码了,直接上源码) #include <string.h> #include <stdio.h> #include <stdlib.h> #include <inttypes.h> #include <capstone/capstone.h> #include <sys/mman.h>int upkeep() …

MySQL学习笔记——索引

索引 0.前言 本文是跟着网课学习的时候随手记录的一篇关于MySQL索引的学习笔记 1.索引概述 1.1.索引介绍 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样…

快速部署 HBase 测试环境

快速部署 HBase 测试环境 第一步:下载软件,在HBase官网下载最新版, 找到 bin,点击下载,比如我这里下载的是 hbase-2.5.6-bin.tar.gz 第二步:解压软件 $ tar -zxvf hbase-2.5.6-bin.tar.gz $ cd hbase-2.5.6第三步:启动软件 $ ./bin/start-hbase.sh $ ./bin/hbase-daemon…

【YashanDB知识库】用户密码带@字符时exp和imp无法使用

【问题分类】数据导入导出 【关键字】YAS-00404、数据导入导出、密码、特殊字符@、exp、imp 【问题描述】 当用户密码带@字符时,使用exp和imp导入导出数据,使用转义符仍然出现报错且yasql可以使用相同的转义方式正常登录 【问题原因分析】exp和imp的密码没有适配特殊字符 【解…

写了一个json小工具,希望大家体验(Mac平台)

用rust写了一个json小工具“JSON PICKER”,欢迎大家试用:https://github.com/davelet/json-picker/releases/tag/V0.2动机是平常开发的时候,经常遇到大段json,里面的很多字段是不需要的。我所在的项目组在接口对接上出现了reponse达到数兆字节的情况市面上已经有不少json工…

Go微服务开发指南

在这篇深入探讨Go语言在微服务架构中的应用的文章中,我们介绍了选择Go构建微服务的优势、详细分析了主要的Go微服务框架,并探讨了服务发现与注册和API网关的实现及应用。关注TechLead,复旦博士,分享云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团…

共享库soname机制

介绍共享库soname命名机制目录前言共享库版本号共享库命名机制realnamesonamelinkname总结参考文章 前言 在使用第三方库时,我们会发现第三方库会提供一组文件,他们的后缀一般是.so(如libname.so),.so.x和.so.x.y.z。本文讨论他们之间的关系。 共享库版本号 共享库一般会由…