tencent cloud

文档反馈

TUIMediaMixingManager

最后更新时间:2024-09-10 15:30:52

    简介

    TUIMediaMixingManager 是本地混流管理器,支持将本地的多路视频流合并成一路视频流发送。
    安装方式
    // 使用 npm
    npm i @tencentcloud/tuiroom-engine-electron@2.4.0-alpha.3 --save
    
    // 使用 pnpm
    pnpm i @tencentcloud/tuiroom-engine-electron@2.4.0-alpha.3 --save
    
    // 使用 yarn
    yarn add @tencentcloud/tuiroom-engine-electron@2.4.0-alpha.3
    
    使用示例:
    import TUIRoomEngine, { TUIMediaMixingManager } from '@tencentcloud/tuiroom-engine-electron';
    
    const mediaMixingManager: TUIMediaMixingManager = TUIRoomEngine.getMediaMixingManager();

    API

    API
    说明
    设置本地混流服务进程的程序路径
    设置本地混流视频预览窗口及区域
    添加多媒体源
    删除多媒体源
    更新多媒体源
    设置摄像头采集参数
    开始本地混流并推流
    结束本地混流和推流
    修改本地混流参数

    类型定义

    类型
    说明
    摄像头采集参数
    本地混流配置参数
    媒体源数据
    TUIRect
    矩形坐标区域,包含 left、top、right、bottom 属性
    屏幕/窗口数据
    混流视频编码参数

    枚举定义

    枚举
    说明
    摄像头采集模式
    媒体源填充模式
    媒体源镜像模式
    媒体源旋转角度
    媒体源类型
    分辨率模式(横屏分辨率/竖屏分辨率)
    视频分辨率

    API 详情

    setMediaServerPath()

    设置本地混流服务进程的程序路径。创建实例对象后,必须先调用此方法,其它方法的调用才能生效。
    import TUIRoomEngine, { TUIMediaMixingManager } from '@tencentcloud/tuiroom-engine-electron';
    
    const mediaMixingManager: TUIMediaMixingManager = TUIRoomEngine.getMediaMixingManager();
    
    async function initMediaServer() {
    const isPackaged = location.href.startsWith("file"); // Same with Electron `app.isPackaged`
    const resourcesPath = (globalThis as any).process.resourcesPath;
    let mediaServerPath = '';
    if (isPackaged) {
    mediaServerPath = `${resourcesPath}\\\\liteav_media_server.exe`;
    } else {
    const appPath = ''; // Value from Electron main process: app.getAppPath()
    mediaServerPath = `${appPath}\\\\node_modules\\\\trtc-electron-sdk\\\\build\\\\Release\\\\liteav_media_server.exe`;
    }
    mediaMixingManager.setMediaServerPath(mediaServerPath);
    }
    
    initMediaServer();
    参数
    参数
    类型
    校验
    默认值
    说明
    path
    string
    -
    -
    本地混流服务进程的程序路径
    返回值 Promise<void>

    setDisplayParams()

    设置本地混流视频预览窗口及区域
    import TUIRoomEngine, { TUIMediaMixingManager } from '@tencentcloud/tuiroom-engine-electron';
    
    const mediaMixingManager: TUIMediaMixingManager = TUIRoomEngine.getMediaMixingManager();
    
    // Value from Electron main BrowserWindow.getNativeWindowHandle()
    const nativeWindowHandle = new Uint8Array(8);
    
    const previewDOMNode = document.getElementByID("preview-media-mixing");
    const clientRect = previewDOMNode.getBoundingClientRect();
    mediaMixingManager.setDisplayParams(window.nativeWindowHandle, {
    left: clientRect.left * window.devicePixelRatio, // Notice: window.devicePixelRatio
    right: clientRect.right * window.devicePixelRatio, // Notice: window.devicePixelRatio
    top: clientRect.top * window.devicePixelRatio, // Notice: window.devicePixelRatio
    bottom: clientRect.bottom * window.devicePixelRatio, // Notice: window.devicePixelRatio
    });
    参数
    参数
    类型
    校验
    默认值
    说明
    windowID
    Uint8Array
    -
    -
    混流视频预览窗口 ID,通过 Electron API BrowserWindow.getNativeWindowHandle() 拿到
    rect
    TUIRect
    -
    -
    混流视频预览区域位置、大小
    返回值 void

    addMediaSource()

    添加多媒体源
    import TUIRoomEngine, { TUIMediaMixingManager } from '@tencentcloud/tuiroom-engine-electron';
    
    const mediaMixingManager: TUIMediaMixingManager = TUIRoomEngine.getMediaMixingManager();
    const mediaSource:TUIMediaSource = {
    sourceType: TUIMediaSourceType.kCamera,
    sourceId: '', // camera ID, screen ID, window ID or image path
    zOrder: 1, // should be unique among all media sources
    rect: {
    left: 0,
    top: 0,
    right: 640,
    bottom: 360
    },
    };
    mediaMixingManager.addMediaSource(mediaSource);
    参数
    参数
    类型
    校验
    默认值
    说明
    mediaSource
    -
    -
    媒体源信息
    返回值 Promise<TUIRect> 返回默认添加位置

    removeMediaSource()

    删除多媒体源
    import TUIRoomEngine, { TUIMediaMixingManager } from '@tencentcloud/tuiroom-engine-electron';
    
    const mediaMixingManager: TUIMediaMixingManager = TUIRoomEngine.getMediaMixingManager();
    const mediaSource:TUIMediaSource = {
    sourceType: TUIMediaSourceType.kCamera, // required
    sourceId: '', // required
    zOrder: 1, // any valid value
    rect: { // any valid value
    left: 0,
    top: 0,
    right: 640,
    bottom: 360
    },
    };
    mediaMixingManager.removeMediaSource(mediaSource);
    参数
    参数
    类型
    校验
    默认值
    说明
    mediaSource
    -
    -
    媒体源信息
    返回值 Promise<void>

    updateMediaSource()

    更新多媒体源
    import TUIRoomEngine, { TUIMediaMixingManager } from '@tencentcloud/tuiroom-engine-electron';
    
    const mediaMixingManager: TUIMediaMixingManager = TUIRoomEngine.getMediaMixingManager();
    const mediaSource:TUIMediaSource = {
    sourceType: TUIMediaSourceType.kCamera, // required
    sourceId: '', // required
    zOrder: 1, // should be unique among all media sources
    rect: { // any valid value
    left: 0,
    top: 0,
    right: 640,
    bottom: 360
    },
    };
    mediaMixingManager.updateMediaSource(mediaSource);
    参数
    参数
    类型
    校验
    默认值
    说明
    mediaSource
    -
    -
    媒体源信息
    返回值 Promise<void>

    setCameraCaptureParam()

    设置摄像头采集参数
    import TUIRoomEngine, { TUIMediaMixingManager, TUICameraCaptureMode } from '@tencentcloud/tuiroom-engine-electron';
    
    const mediaMixingManager: TUIMediaMixingManager = TUIRoomEngine.getMediaMixingManager();
    mediaMixingManager.setCameraCaptureParam('<camera ID>', {
    mode: TUICameraCaptureMode.kCameraCaptureManual,
    width: 1280,
    height: 720,
    });
    参数
    参数
    类型
    校验
    默认值
    说明
    cameraId
    string
    非空
    -
    摄像头 ID
    param
    -
    -
    摄像头采集参数
    返回值

    startPublish()

    开始本地混流并推流 注意:进房后才能成功推流。
    import TUIRoomEngine, { TUIMediaMixingManager } from '@tencentcloud/tuiroom-engine-electron';
    
    const mediaMixingManager: TUIMediaMixingManager = TUIRoomEngine.getMediaMixingManager();
    mediaMixingManager.startPublish();
    返回值 Promise<void>

    stopPublish()

    结束本地混流和推流
    import TUIRoomEngine, { TUIMediaMixingManager } from '@tencentcloud/tuiroom-engine-electron';
    
    const mediaMixingManager: TUIMediaMixingManager = TUIRoomEngine.getMediaMixingManager();
    mediaMixingManager.stopPublish();
    返回值 Promise<void>

    updatePublishParams()

    修改本地混流参数
    import TUIRoomEngine, {
    TUIMediaMixingManager,
    TUIResolutionMode,
    TUIVideoResolution
    } from '@tencentcloud/tuiroom-engine-electron';
    
    const mediaMixingManager: TUIMediaMixingManager = TUIRoomEngine.getMediaMixingManager();
    mediaMixingManager.updatePublishParams({
    inputSourceList: [], // TUIMediaSource[], can be empty
    videoEncoderParams: {
    videoResolution: TUIVideoResolution.kVideoResolution_1920_1080,
    resMode: TUIResolutionMode.kResolutionMode_Landscape,
    videoFps: 30,
    videoBitrate: 3000,
    minVideoBitrate: 2000,
    enableAdjustRes: true
    },
    canvasColor: 0xc6c6c6, // integer number of RGB
    });
    参数
    参数
    类型
    校验
    默认值
    说明
    params
    -
    -
    本地混流配置参数
    返回值 Promise<void>

    类型详情

    TUICameraCaptureParam

    摄像头采集参数
    字段
    类型
    说明
    mode
    摄像头采集偏好
    width
    number
    采集图像宽度
    height
    number
    采集图像高度

    TUILocalMediaTranscodingParams

    本地混流配置参数
    字段
    类型
    说明
    inputSourceList
    媒体源列表
    videoEncoderParams
    混流视频编码参数
    canvasColor
    number
    混流视频背景色,格式 RGB,默认:0x0

    TUIMediaSource

    媒体源数据
    字段
    类型
    说明
    sourceType
    媒体源类型
    sourceId
    string
    媒体源唯一 ID
    rect
    TUIRect
    相对于本地混流布局的坐标位置
    zOrder
    number
    显示层级。显示层级高的媒体源会遮挡显示层级底的媒体源,多个媒体源不能拥有相同层级。
    rotation
    可选项,旋转角度
    fillMode
    可选项,填充模式
    mirrorType
    可选项,镜像模式
    isSelected
    boolean
    可选项,默认:false,是否选中媒体源

    TUIRect

    矩形区域
    矩形坐标区域,用于控制本地混流时,每一路媒体源在混流布局中的位置。
    字段
    类型
    说明
    left
    number
    左边线坐标
    top
    number
    顶边线坐标
    right
    number
    右边线坐标
    bottom
    number
    底边线坐标

    TUIScreenCaptureSourceInfo

    屏幕/窗口数据
    字段
    类型
    说明
    type
    媒体源类型:屏幕/窗口
    sourceId
    number
    唯一 ID
    sourceName
    string
    名称
    isMinimizeWindow
    boolean
    是否最小化窗口
    isMainScreen
    boolean
    是否主屏幕
    rect
    TUIRect
    相对显示屏幕的坐标位置

    TUIVideoEncParam

    混流视频编码参数
    字段
    类型
    说明
    videoResolution
    视频分辨率
    resMode
    视频横竖屏模式
    videoFps
    number
    帧率
    videoBitrate
    number
    码率
    minVideoBitrate
    number
    最小码率
    enableAdjustRes
    boolean
    是否自适应调整码率,默认:true

    枚举详情

    TUICameraCaptureMode

    摄像头采集模式
    枚举项
    类型
    说明
    kCameraResolutionStrategyAuto
    number
    自动调整采集参数。SDK 根据实际的采集设备性能及网络情况,选择合适的摄像头输出参数,在设备性能及视频预览质量之间,维持平衡。
    kCameraResolutionStrategyPerformance
    number
    优先保证设备性能。SDK 根据用户设置编码器的分辨率和帧率,选择最接近的摄像头输出参数,从而保证设备性能。
    kCameraResolutionStrategyHighQuality
    number
    优先保证视频预览质量。SDK选择较高的摄像头输出参数,从而提高预览视频的质量。在这种情况下,会消耗更多的 CPU 及内存做视频前处理。
    kCameraCaptureManual
    number
    允许用户设置本地摄像头采集的视频宽高。

    TUIMediaFillMode

    媒体源填充模式
    如果媒体源的尺寸与显示区域尺寸不一致,媒体源显示后可能被拉伸或者周围出现黑边。
    枚举项
    类型
    说明
    kMediaFillMode_Fill
    number
    图像铺满显示区域,超出显示视窗的视频部分将被截掉,画面内容可能显示不完整。
    kMediaFillMode_Fit
    number
    图像长边填满显示区域,短边区域会被填充黑色,画面内容显示完整。

    TUIMediaMirrorType

    媒体源镜像模式
    枚举项
    类型
    说明
    kMediaMirrorType_Enable
    number
    开启镜像
    kMediaMirrorType_Disable
    number
    禁止镜像

    TUIMediaRotation

    媒体源旋转角度
    枚举项
    类型
    说明
    kMediaRotation0
    number
    旋转 0 度
    kMediaRotation90
    number
    旋转 90 度
    kMediaRotation180
    number
    旋转 180 度
    kMediaRotation270
    number
    旋转 270 度

    TUIMediaSourceType

    媒体源类型
    枚举项
    类型
    说明
    kCamera
    number
    摄像头
    kScreen
    number
    屏幕/窗口
    kImage
    number
    图片

    TUIResolutionMode

    分辨率模式(横屏分辨率/竖屏分辨率)
    枚举项
    类型
    说明
    kResolutionMode_Landscape
    number
    横屏模式
    kResolutionMode_Portrait
    number
    竖屏模式

    TUIVideoResolution

    视频分辨率
    此处仅定义了横屏分辨率,如果要使用360 × 640这样的竖屏分辨率,需要同时指定 TUIResolutionMode 为 Portrait。
    枚举项
    类型
    说明
    kVideoResolution_120_120
    number
    建议码率(VideoCall)80kbps; 建议码率(LIVE)120kbps
    kVideoResolution_160_160
    number
    建议码率(VideoCall)100kbps; 建议码率(LIVE)150kbps
    kVideoResolution_270_270
    number
    建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps
    kVideoResolution_480_480
    number
    建议码率(VideoCall)350kbps; 建议码率(LIVE)500kbps
    kVideoResolution_160_120
    number
    建议码率(VideoCall)100kbps; 建议码率(LIVE)150kbps
    kVideoResolution_240_180
    number
    建议码率(VideoCall)150kbps; 建议码率(LIVE)250kbps
    kVideoResolution_280_210
    number
    建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps
    kVideoResolution_320_240
    number
    建议码率(VideoCall)250kbps; 建议码率(LIVE)375kbps
    kVideoResolution_400_300
    number
    建议码率(VideoCall)300kbps; 建议码率(LIVE)450kbps
    kVideoResolution_480_360
    number
    建议码率(VideoCall)400kbps; 建议码率(LIVE)600kbps
    kVideoResolution_640_480
    number
    建议码率(VideoCall)1000kbps; 建议码率(LIVE)1500kbps
    kVideoResolution_160_90
    number
    建议码率(VideoCall)150kbps; 建议码率(LIVE)250kbps
    kVideoResolution_256_144
    number
    建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps
    kVideoResolution_320_180
    number
    建议码率(VideoCall)250kbps; 建议码率(LIVE)400kbps
    kVideoResolution_480_270
    number
    建议码率(VideoCall)350kbps; 建议码率(LIVE)550kbps
    kVideoResolution_640_360
    number
    建议码率(VideoCall)500kbps; 建议码率(LIVE)900kbps
    kVideoResolution_960_540
    number
    建议码率(VideoCall)850kbps; 建议码率(LIVE)1300kbps
    kVideoResolution_1280_720
    number
    建议码率(VideoCall)1200kbps; 建议码率(LIVE)1800kbps
    kVideoResolution_1920_1080
    number
    建议码率(VideoCall)2000kbps; 建议码率(LIVE)3000kbps
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持