human: 如何处理七牛云的实时音视频QNScreenVideoTrack

gpt: [实时音视频](https://developer.qiniu.com/rtc) > API 文档 > Android
>QNScreenVideoTrack

#  QNScreenVideoTrack

最近更新时间: 2023-04-21 12:45:50

本地视频录屏 Track 类，可通过
[QNRTC.createScreenVideoTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8732)
方式创建该 Track 对象

> 屏幕录制 Track 的创建需要发起系统屏幕录制的申请，具体使用姿势请参考[屏幕录制 Track
> 使用指南](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8767)。

Hierarchy

  * [QNTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8693/QNTrack)
    * [QNLocalTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8662/QNLocalTrack)
      * [QNLocalVideoTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8663/QNLocalVideoTrack)
        * [QNCameraVideoTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8640/QNCameraVideoTrack)
        * QNScreenVideoTrack 
        * [QNCustomVideoTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8649/QNCustomVideoTrack)
      * [QNLocalAudioTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8660/QNLocalAudioTrack)
        * [QNMicrophoneAudioTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8667/QNMicrophoneAudioTrack)
        * [QNCustomAudioTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8646/QNCustomAudioTrack)
    * [QNRemoteTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8676/QNRemoteTrack)
      * [QNRemoteVideoTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8680/QNRemoteVideoTrack)
      * [QNRemoteAudioTrack](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8674/QNRemoteAudioTrack)

Index

Core Methods

  * getTrackID
  * getUserID
  * getTag
  * isAudio
  * isVideo
  * isMuted
  * setMuted
  * destroy
  * sendSEI[1/4]
  * sendSEI[2/4]
  * sendSEI[3/4]
  * sendSEI[4/4]
  * setVideoEncoderConfig
  * setVideoFrameListener
  * play
  * requestPermission
  * isScreenCaptureSupported
  * checkActivityResult

Core Methods

getTrackID

  * String getTrackID()
  * 获取 TrackID，仅当发布成功后，才可以获取到有效的 TrackID

Returns String

getUserID

  * String getUserID()
  * 获取 UserID

Returns String

getTag

  * String getTag()
  * 获取 Tag

Returns String

isAudio

  * boolean isAudio()
  * 是否为音频 Track

Returns boolean

isVideo

  * boolean isVideo()
  * 是否为视频 Track

Returns boolean

isMuted

  * boolean isMuted()
  * 该 Track 是否处于静默状态

Returns boolean

setMuted

  * void setMuted(boolean muted)
  * 设置是否静默该 track，静默后，SDK 将会发送静默帧数据

当静默状态改变后，远端用户将会收到
[QNTrackInfoChangedListener.onMuteStateChanged](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8820)
的回调

Parameters

    * muted: boolean 

是否静默

destroy

  * void destroy()
  * 销毁本地创建的 Track

sendSEI[1/4]

  * void sendSEI(String message, int repeatCount)
  * 发送 SEI 信息

> 1\. SEI 信息会携带到视频的编码数据中，在 [CDN
> 转推](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8770/turn-the-
> cdn-push-android) 场景下，Track 处于正常发布状态时，调用该接口后，观众端即可使用支持解析 SEI 的播放器来获取对应的 SEI
> 信息。
>
> 2\. 单路流转推和多路流合流转推在发送 SEI 信息的使用姿势上存在差异，详情可参考 [SEI
> 发送指南](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8770)

> 该接口已废弃, 请使用 int sendSEI(byte[] message, int repeatCount)

Parameters

    * message: String 

消息内容

    * repeatCount: int 

重复次数，-1 为每一帧都发送

sendSEI[2/4]

  * void sendSEI(String message, byte[] uuid, int repeatCount)
  * 发送 SEI 信息

> 1\. SEI 信息会携带到视频的编码数据中，在 [CDN
> 转推](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8770/turn-the-
> cdn-push-android) 场景下，Track 处于正常发布状态时，调用该接口后，观众端即可使用支持解析 SEI 的播放器来获取对应的 SEI
> 信息。
>
> 2\. 单路流转推和多路流合流转推在发送 SEI 信息的使用姿势上存在差异，详情可参考 [SEI
> 发送指南](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8770)

> 该接口已废弃, 请使用 int sendSEI(byte[] message, byte[] uuid, int repeatCount)

Parameters

    * message: String 

消息内容

    * uuid: byte[] 

唯一 ID；必须为 16 个字节

    * repeatCount: int 

重复次数，-1 为每一帧都发送

sendSEI[3/4]

  * int sendSEI(byte[] message, int repeatCount)
  * 发送 SEI

> 1\. SEI 信息会携带到视频的编码数据中，在 [CDN
> 转推](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8770/turn-the-
> cdn-push-android) 场景下，Track 处于正常发布状态时，调用该接口后，观众端即可使用支持解析 SEI 的播放器来获取对应的 SEI
> 信息。
>
> 2\. 单路流转推和多路流合流转推在发送 SEI 信息的使用姿势上存在差异，详情可参考 [SEI
> 发送指南](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8770)

Parameters

    * message: byte[] 

消息内容；最多为 4096 字节

    * repeatCount: int 

重复次数

Returns 调用返回值，详见
[QNErrorCode](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8652/QNErrorCode)

sendSEI[4/4]

  * int sendSEI(byte[] message, byte[] uuid, int repeatCount)
  * 发送 SEI

> 1\. SEI 信息会携带到视频的编码数据中，在 [CDN
> 转推](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8770/turn-the-
> cdn-push-android) 场景下，Track 处于正常发布状态时，调用该接口后，观众端即可使用支持解析 SEI 的播放器来获取对应的 SEI
> 信息。
>
> 2\. 单路流转推和多路流合流转推在发送 SEI 信息的使用姿势上存在差异，详情可参考 [SEI
> 发送指南](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8770)

Parameters

    * message: byte[]；最多为 4096 字节 

消息内容

    * uuid: byte[] 

唯一 ID；必须为 16 个字节

    * repeatCount: int 

重复次数

Returns 调用返回值，详见
[QNErrorCode](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8652/QNErrorCode)

setVideoEncoderConfig

  * void setVideoEncoderConfig([QNVideoEncoderConfig](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8701/QNVideoEncoderConfig) config)
  * 动态修改视频 Track 的编码参数（分辨率、帧率、码率等）

> 1\. 该接口用于在通话过程中动态修改视频的编码参数，若您无需修改，可在创建视频 Track 时通过对应的 TrackConfig 直接指定编码参数
>
> 2\. 建议修改时目标编码分辨率小于采集的分辨率。当目标编码分辨率大于采集分辨率时，SDK
> 会基于采集分辨率裁剪输出一个和目标编码分辨率宽高比相匹配，但小于等于采集分辨率的参数

Parameters

    * config: [QNVideoEncoderConfig](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8701/QNVideoEncoderConfig)

目标编码配置

setVideoFrameListener

  * void setVideoFrameListener([QNVideoFrameListener](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8704/QNVideoFrameListener) listener)
  * 设置视频数据监听

Parameters

    * listener: QNVideoFrameListener 

视频数据监听接口

play

  * void play([QNRenderView](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8683/QNRenderView) view)
  * 设置预览窗口

Parameters

    * view: [QNRenderView](https://developer.qiniu.com/rtc/8687/QNScreenVideoTrack/8683/QNRenderView)

预览窗口

requestPermission

  * static boolean requestPermission(Activity activity)
  * 请求录屏权限，成功发起申请返回成功，否则返回失败

> 在 API < 21 的时候会返回失败，Android 从 API 21 才开始支持录屏

Parameters

    * activity: Activity 

Android Activity 对象

Returns boolean

isScreenCaptureSupported

  * static boolean isScreenCaptureSupported()
  * 当前设备是否支持屏幕采集

Returns boolean

checkActivityResult

  * static boolean checkActivityResult(int requestCode, int resultCode, Intent data)
  * 处理权限请求返回的结果

> 1\. 请先重写 (Override) Activity 中的 onActivityResult 方法
>
> 2\. 若监听到 requestCode 等于
> QNScreenCaptureUtil.SCREEN_CAPTURE_PERMISSION_REQUEST_CODE
> 则证明本次回调包含申请屏幕录制的结果，此时可调用本方法将参数传入 SDK，SDK 将判断用户是否授权屏幕录制
>
> 3\. 若本接口调用返回 true，则代表用户同意屏幕录制，此时创建屏幕录制 Track 即可

Parameters

    * requestCode: int 

请求 code

    * resultCode: int 

权限请求返回的 code

    * data: Intent 

权限请求返回的数据

Returns boolean

以上内容是否对您有帮助？