首页 > 其他分享 >腾讯直播SDK接入及封装(一)之录屏直播

腾讯直播SDK接入及封装(一)之录屏直播

时间:2024-11-18 17:21:11浏览次数:1  
标签:return pusher self 直播 let 之录 livePusher SDK

1.省略集成SDK环节,具体的集成以官方为主,这里只是快速接入的参考;

2.获取系统相机、麦克风、屏幕录制等的权限,这里以麦克风为例:

func checkMicroPermission() -> Bool {
    let authStatus = AVCaptureDevice.authorizationStatus(for: .audio)
    switch (authStatus) {
    case .authorized:
        //授权
        return true
    case .notDetermined, .restricted, .denied:
        return false
        default:
        return false
    }
}

根据用户设置询问是否授权

if !checkMicroPermission() {
    AVCaptureDevice.requestAccess(for: .audio) { granted in
        if granted {
            DispatchQueue.main.async {
                //授权成功后进行后续操作
            }
        }
    }
}

3.直播封装

1.创建一个单例保持直播一直在运作
class LiveManager: NSObject {
    static let shared = LiveManager()
    //防止外界init
    private override init() {
        
    }
}

2.创建直播推流及直播拉流
private var livePusher: V2TXLivePusher?
private var livePlayer: V2TXLivePlayer = {
    let txPlayer = V2TXLivePlayer()
    return txPlayer
}()

3.开启录屏直播(注:在此之前从后端拿到推流地址,pushUrl:推流地址)
func startRecord(_ pushUrl: String) {
    if self.livePusher != nil {
        self.livePusher?.stopScreenCapture()
        self.livePusher?.stopPush()
    }
    //开启录屏
    TRTCBroadcastExtensionLauncher.launch()
    //推流,liveMode选择RTC,因为后面要接入连麦功能的时候只能用这个,如果选RTMP连麦混流会有问题
    let pusher = V2TXLivePusher(liveMode: .RTC)
    //注册观察者
    pusher?.setObserver(self)
    self.livePusher = pusher
    //这里可以根据文档来填
    pusher?.startScreenCapture("xx.xx.xx")
    pusher?.startMicrophone()
    let videoParam = V2TXLiveVideoEncoderParam()
    //这个resolution640x360根据自己的情况来,并不是越高越好
    videoParam.videoResolution = .resolution640x360
    //横竖屏模式,我们这边是录制游戏横屏,根据自己的情况设置
    videoParam.videoResolutionMode = .landscape
    pusher?.setVideoQuality(videoParam)
    pusher?.setAudioQuality(.default)
    let code = pusher?.startPush(pushUrl)
    if code != V2TXLiveCode.TXLIVE_OK {
        //这里是失败的情况
        pusher?.stopMicrophone()
        pusher?.stopScreenCapture()
    }
}

然后是关闭直播

func stopRecord() {
    if self.livePusher != nil {
        self.livePusher?.stopScreenCapture()
        self.livePusher?.stopPush()
    }
}

然后是客户端进行拉流操作

 

标签:return,pusher,self,直播,let,之录,livePusher,SDK
From: https://www.cnblogs.com/wm941142146/p/18552288

相关文章

  • H.264/H.265播放器EasyPlayer.js网页直播/点播播放器关于播放的时候就有声音
    EasyPlayer.jsH5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方式,支持Windows、Linux、Android、iOS全平台终端的H5播放器,使用简单......
  • 网页直播/点播播放器EasyPlayer.js RTSP播放器关于硬解码或者video标签渲染自动播放
    EasyPlayer.jsRTSP播放器是一个基于WebRTC(网页实时通信技术)的开源JavaScript库,主要用于在网页上实现视频播放功能,特别是针对RTSP(RealTimeStreamingProtocol,实时流协议)流的播放。它允许开发者在不需要安装额外插件或软件的情况下,直接在网页中嵌入和播放来自监控摄像头或其他R......
  • H.265流媒体播放器EasyPlayer.js视频流媒体播放器关于直播流播放完毕是否能监听到
    EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无须安装任何插件,起播快、延迟低、兼容性强,使用非常便捷。EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式,也能支持WebSocket-FLV、HTTP-FLV、HLS(m3u8)、WebRTC、ws-fmp4、http-fmp4等格式......
  • 国标GB28181公网直播LiteGBS国标GB28181视频平台联网方式解析
    国家标准GB28181-2022《公共安全视频监控联网系统信息传输、交换、控制技术要求》已于2022年12月30日发布,将于2023年7月1日实施。该标准规定了视频联网系统的联网结构、信令流程、协议接口以及相关安全性要求,适用于公共安全视频联网系统的方案设计、系统检测、验收以及与之相关的......
  • 视频号直播自动回复功能,浏览器自动化插件vx llike620
    视频号直播后台:https://channels.weixin.qq.com/platform/live/home开启直播以后,一定要在视频号助手后台,有直播管理页面下,就是那个展示评论和能发送评论框的页面,启动插件。要把自己主播的昵称屏蔽掉,否则会捕获到自己回复的,造成死循环视频号后台循环发送话术和回复,回复频率......
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Share Kit
    1.问题描述:使用系统分享组件分享本地文件,点击分享菜单下方的“另存为”将要分享的文件分享至系统文件管理中,在文件管理中查看分享进来的文件为0B。尝试了3种uri的写法都不行,代码如下:consturi=getContext().getApplicationContext().filesDir+'/xxx.json'consturi1='fi......
  • 抖音直播间涨粉互粉助手,ZD涨粉轻松万粉
    在当今的社交媒体时代,抖音已成为一个重要的内容分享和个人品牌建设平台。许多创作者和品牌都在寻求有效的方法来增加粉丝数量,以提高影响力和实现商业价值。本文将介绍一种通过直播间互动来增粉的策略,帮助用户在遵守平台规则的前提下,实现粉丝数量的稳步增长。抖音直播间的互动......
  • 新人必知的好用的录屏与直播软件OBS
    下载链接点击下载OBS介绍OBS(OpenBroadcasterSoftware)是一款开源的视频录制和直播软件,广泛用于视频内容的实时流媒体传输。以下是一些关于OBS的基本信息和功能:开源免费:OBS是完全免费的,并且开源,这意味着任何人都可以查看、修改和改进其代码。多平台支持:OBS支持Windows......
  • 【Azure App Service】在App Service中调用Stroage SDK上传文件时遇见 System.OutOfMe
    问题描述部署.NET应用到AppService中,应用中调用StorageAccount的SDK上传文件到Blob中。只是比较高频率在UploadAsync方法中遇见:OutOfMemoryException异常信息ERRORMicrosoft.AspNetCore.Server.Kestrel.?[?]-MESSAGE:Connectionid"0HN3UB91BK6BS",Requestid"0H......
  • pico-sdk(零)
    pico-sdk(零)项目概述license相关文档依赖三方库链接项目概述RaspberryPiPicoSDK(以下简称SDK)提供了为RP系列微控制器设备(如RaspberryPiPico或RaspberryPiPico2)编写C、C++或汇编语言程序所需的头文件、库和构建系统。SDK旨在为非嵌入式C开发人员和......