1# AVScreenCapture 2 3 4## 概述 5 6调用本模块下的接口,应用可以完成屏幕录制的功能。 7 8**系统能力**:SystemCapability.Multimedia.Media.AVScreenCapture 9 10**起始版本:** 11 1210 13 14 15## 汇总 16 17 18### 文件 19 20| 名称 | 描述 | 21| -------- | -------- | 22| [native_avscreen_capture.h](native__avscreen__capture_8h.md) | 声明用于构造屏幕录制对象的Native API。<br>**引用文件**:<multimedia/player_framework/native_avscreen_capture.h> <br>**库**:libnative_avscreen_capture.so | 23| [native_avscreen_capture_base.h](native__avscreen__capture__base_8h.md) | 声明用于运行屏幕录制通用的结构体、字符常量、枚举。<br>**引用文件**:<multimedia/player_framework/native_avscreen_capture_base.h> <br>**库**:libnative_avscreen_capture.so | 24| [native_avscreen_capture_errors.h](native__avscreen__capture__errors_8h.md) | 声明用于运行屏幕录制过程中接口调用的错误码说明。<br>**引用文件**:<multimedia/player_framework/native_avscreen_capture_errors.h> <br>**库**:libnative_avscreen_capture.so | 25 26 27### 结构体 28 29| 名称 | 描述 | 30| -------- | -------- | 31| [OH_AudioCaptureInfo](_o_h___audio_capture_info.md) | 音频录制信息。 | 32| [OH_AudioEncInfo](_o_h___audio_enc_info.md) | 音频编码信息。<br>**说明:** 预留接口,将在后续版本提供。 | 33| [OH_AudioInfo](_o_h___audio_info.md) | 音频录制参数。 | 34| [OH_VideoCaptureInfo](_o_h___video_capture_info.md) | 视频采集信息。 | 35| [OH_VideoEncInfo](_o_h___video_enc_info.md) | 视频编码信息。 <br>**说明:** 预留接口,将在后续版本提供。| 36| [OH_VideoInfo](_o_h___video_info.md) | 视频录制参数。 | 37| [OH_RecorderInfo](_o_h___recorder_info.md) | 录制文件信息。 <br>**说明:** 预留接口,将在后续版本提供。| 38| [OH_AVScreenCaptureConfig](_o_h___a_v_screen_capture_config.md) | 屏幕录制配置参数。 | 39| [OH_AVScreenCaptureCallback](_o_h___a_v_screen_capture_callback.md) | OH_AVScreenCapture中所有异步回调函数指针的集合。 | 40| [OH_Rect](_o_h___rect.md) | 定义录屏界面的宽高以及画面信息。 | 41| [OH_AudioBuffer](_o_h___audio_buffer.md) | 定义了音频数据的大小,类型,时间戳等配置信息。 | 42 43 44### 类型定义 45 46| 名称 | 描述 | 47| -------- | -------- | 48| [OH_NativeBuffer](#oh_nativebuffer) | 提供录屏的视频原始码流类。 | 49| [OH_AVScreenCapture](#oh_avscreencapture) | 通过OH_AVScreenCapture可以获取视频与音频的原始码流。 | 50| [OH_CaptureMode](#oh_capturemode) | 枚举,表示屏幕录制的不同模式。 | 51| [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) | 枚举,表示屏幕录制时的音频源类型。 | 52| [OH_AudioCodecFormat](#oh_audiocodecformat) | 枚举,表示音频编码格式。 | 53| [OH_VideoCodecFormat](#oh_videocodecformat) | 枚举,表示视频编码格式。 | 54| [OH_DataType](#oh_datatype) | 枚举,表示屏幕录制流的数据格式。 | 55| [OH_VideoSourceType](#oh_videosourcetype) | 枚举,表示视频源格式。 | 56| [OH_ContainerFormatType](#oh_containerformattype) | 枚举,表示屏幕录制生成的文件类型。<br>**说明:** 预留接口,将在后续版本提供。 | 57| [OH_AudioCaptureInfo](#oh_audiocaptureinfo) | 音频录制信息。 | 58| [OH_AudioEncInfo](#oh_audioencinfo) | 音频编码信息。 <br>**说明:** 预留接口,将在后续版本提供。| 59| [OH_AudioInfo](#oh_audioinfo) | 音频录制参数。 | 60| [OH_VideoCaptureInfo](#oh_videocaptureinfo) | 视频采集信息。 | 61| [OH_VideoEncInfo](#oh_videoencinfo) | 视频编码信息。<br>**说明:** 预留接口,将在后续版本提供。 | 62| [OH_VideoInfo](#oh_videoinfo) | 视频录制参数。 | 63| [OH_RecorderInfo](#oh_recorderinfo) | 录制文件信息。 | 64| [OH_AVScreenCaptureConfig](#oh_avscreencaptureconfig) | 屏幕录制配置参数。 | 65| (\*[OH_AVScreenCaptureOnError](#oh_avscreencaptureonerror)) ([OH_AVScreenCapture](#oh_avscreencapture) \*capture, int32_t errorCode) | 当OH_AVScreenCapture实例运行出错时,将调用函数指针。 | 66| (\*[OH_AVScreenCaptureOnAudioBufferAvailable](#oh_avscreencaptureonaudiobufferavailable)) ([OH_AVScreenCapture](#oh_avscreencapture) \*capture, bool isReady, [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) type) | 当OH_AVScreenCapture操作期间音频缓冲区可用时,将调用函数指针。 | 67| (\*[OH_AVScreenCaptureOnVideoBufferAvailable](#oh_avscreencaptureonvideobufferavailable)) ([OH_AVScreenCapture](#oh_avscreencapture) \*capture, bool isReady) | 当OH_AVScreenCapture操作期间视频缓冲区可用时,将调用函数指针。 | 68| [OH_AVScreenCaptureCallback](#oh_avscreencapturecallback) | OH_AVScreenCapture中所有异步回调函数指针的集合。 | 69| [OH_Rect](#oh_rect) | 定义录屏界面的宽高以及画面信息。 | 70| [OH_AudioBuffer](#oh_audiobuffer) | 定义了音频数据的大小,类型,时间戳等配置信息。 | 71| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) | 屏幕录制过程中产生的不同结果码。 | 72 73 74### 枚举 75 76| 名称 | 描述 | 77| -------- | -------- | 78| [OH_CaptureMode](#oh_capturemode) { OH_CAPTURE_HOME_SCREEN = 0, OH_CAPTURE_SPECIFIED_SCREEN = 1, OH_CAPTURE_SPECIFIED_WINDOW = 2, OH_CAPTURE_INVAILD = -1 } | 枚举,表示屏幕录制的不同模式。 | 79| [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) {<br/>OH_SOURCE_INVALID = -1, OH_SOURCE_DEFAULT = 0, OH_MIC = 1, OH_ALL_PLAYBACK = 2,<br/>OH_APP_PLAYBACK = 3<br/>} | 枚举,表示屏幕录制时的音频源类型。 | 80| [OH_AudioCodecFormat](#oh_audiocodecformat) { OH_AUDIO_DEFAULT = 0, OH_AAC_LC = 3, OH_AUDIO_CODEC_FORMAT_BUTT } | 枚举,表示音频编码格式。 | 81| [OH_VideoCodecFormat](#oh_videocodecformat) {<br/>OH_VIDEO_DEFAULT = 0, OH_H264 = 2, OH_H265 = 4, OH_MPEG4 = 6,<br/>OH_VP8 = 8, OH_VP9 = 10, OH_VIDEO_CODEC_FORMAT_BUTT<br/>} | 枚举,表示视频编码格式。 | 82| [OH_DataType](#oh_datatype) { OH_ORIGINAL_STREAM = 0, OH_ENCODED_STREAM = 1, OH_CAPTURE_FILE = 2, OH_INVAILD = -1 } | 枚举,表示屏幕录制流的数据格式。 | 83| [OH_VideoSourceType](#oh_videosourcetype) { OH_VIDEO_SOURCE_SURFACE_YUV = 0, OH_VIDEO_SOURCE_SURFACE_ES, OH_VIDEO_SOURCE_SURFACE_RGBA, OH_VIDEO_SOURCE_BUTT } | 枚举,表示视频源格式。 | 84| [OH_ContainerFormatType](#oh_containerformattype) { CFT_MPEG_4A = 0, CFT_MPEG_4 = 1 } | 枚举,表示屏幕录制生成的文件类型。<br>**说明:** 预留接口,将在后续版本提供。 | 85| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) {<br/>AV_SCREEN_CAPTURE_ERR_BASE = 0, AV_SCREEN_CAPTURE_ERR_OK = AV_SCREEN_CAPTURE_ERR_BASE, AV_SCREEN_CAPTURE_ERR_NO_MEMORY = AV_SCREEN_CAPTURE_ERR_BASE + 1, AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT = AV_SCREEN_CAPTURE_ERR_BASE + 2,<br/>AV_SCREEN_CAPTURE_ERR_INVALID_VAL = AV_SCREEN_CAPTURE_ERR_BASE + 3, AV_SCREEN_CAPTURE_ERR_IO = AV_SCREEN_CAPTURE_ERR_BASE + 4, AV_SCREEN_CAPTURE_ERR_TIMEOUT = AV_SCREEN_CAPTURE_ERR_BASE + 5, AV_SCREEN_CAPTURE_ERR_UNKNOWN = AV_SCREEN_CAPTURE_ERR_BASE + 6,<br/>AV_SCREEN_CAPTURE_ERR_SERVICE_DIED = AV_SCREEN_CAPTURE_ERR_BASE + 7, AV_SCREEN_CAPTURE_ERR_INVALID_STATE = AV_SCREEN_CAPTURE_ERR_BASE + 8, AV_SCREEN_CAPTURE_ERR_UNSUPPORT = AV_SCREEN_CAPTURE_ERR_BASE + 9, AV_SCREEN_CAPTURE_ERR_EXTEND_START = AV_SCREEN_CAPTURE_ERR_BASE + 100<br/>} | 屏幕录制过程中产生的不同结果码。 | 86 87 88### 函数 89 90| 名称 | 描述 | 91| -------- | -------- | 92| [OH_AVScreenCapture_Create](#oh_avscreencapture_create) (void) | 实例化对象,创建OH_AVScreenCapture。 | 93| [OH_AVScreenCapture_Init](#oh_avscreencapture_init) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, [OH_AVScreenCaptureConfig](_o_h___a_v_screen_capture_config.md) config) | 初始化OH_AVScreenCapture相关参数。 | 94| [OH_AVScreenCapture_StartScreenCapture](#oh_avscreencapture_startscreencapture) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 开始录屏,采集原始码流。调用后可以通过回调的监听(OH_AVScreenCaptureOnAudioBufferAvailable,OH_AVScreenCaptureOnVideoBufferAvailable)来监听当前是否有码流的产生。 | 95| [OH_AVScreenCapture_StopScreenCapture](#oh_avscreencapture_stopscreencapture) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 结束录屏,与OH_AVScreenCapture_StartScreenCapture配合使用。调用后针对调用该接口的应用会停止录屏或屏幕共享,释放麦克风。 | 96| [OH_AVScreenCapture_StartScreenRecording](#oh_avscreencapture_startscreenrecording) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 启动录屏,调用此接口,可采集编码后的码流。<br>**说明:** 预留接口,将在后续版本提供。 | 97| [OH_AVScreenCapture_StopScreenRecording](#oh_avscreencapture_stopscreenrecording) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 停止录屏,与OH_AVScreenCapture_StartScreenRecording配合使用。 <br>**说明:** 预留接口,将在后续版本提供。| 98| [OH_AVScreenCapture_AcquireAudioBuffer](#oh_avscreencapture_acquireaudiobuffer) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, [OH_AudioBuffer](_o_h___audio_buffer.md) \*\*audiobuffer, [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) type) | 获取音频buffer,应用在调用时,需要对audiobuffer分配对应结构体大小的内存,否则会影响拿到音频buffer的获取。 | 99| [OH_AVScreenCapture_AcquireVideoBuffer](#oh_avscreencapture_acquirevideobuffer) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, int32_t \*fence, int64_t \*timestamp, struct [OH_Rect](_o_h___rect.md) \*region) | 获取视频buffer,应用在调用时,通过此接口来获取到视频的buffer以及时间戳等信息。 | 100| [OH_AVScreenCapture_ReleaseAudioBuffer](#oh_avscreencapture_releaseaudiobuffer) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) type) | 根据音频类型释放buffer。 | 101| [OH_AVScreenCapture_ReleaseVideoBuffer](#oh_avscreencapture_releasevideobuffer) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 根据视频类型释放buffer。 | 102| [OH_AVScreenCapture_SetCallback](#oh_avscreencapture_setcallback) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, struct [OH_AVScreenCaptureCallback](_o_h___a_v_screen_capture_callback.md) callback) | 设置监听接口,通过设置监听,可以监听到调用过程中的错误信息,以及是否有可用的视频buffer和音频buffer。 | 103| [OH_AVScreenCapture_Release](#oh_avscreencapture_release) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 释放创建的OH_AVScreenCapture实例,对应OH_AVScreenCapture_Create。 | 104| [OH_AVScreenCapture_SetMicrophoneEnabled](#oh_avscreencapture_setmicrophoneenabled) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, bool isMicrophone) | 设置麦克风开关。 | 105 106 107## 类型定义说明 108 109 110### OH_AudioBuffer 111 112``` 113typedef struct OH_AudioBuffer OH_AudioBuffer 114``` 115 116**描述:** 117 118定义了音频数据的大小,类型,时间戳等配置信息。 119 120**系统能力:** 121 122SystemCapability.Multimedia.Media.AVScreenCapture 123 124 125### OH_AudioCaptureInfo 126 127``` 128typedef struct OH_AudioCaptureInfo OH_AudioCaptureInfo 129``` 130 131**描述:** 132 133音频录制信息。 134 135**系统能力:** 136 137SystemCapability.Multimedia.Media.AVScreenCapture 138 139 140### OH_AudioCaptureSourceType 141 142``` 143typedef enum OH_AudioCaptureSourceType OH_AudioCaptureSourceType 144``` 145 146**描述:** 147 148枚举,表示屏幕录制时的音频源类型。 149 150**系统能力:** 151 152SystemCapability.Multimedia.Media.AVScreenCapture 153 154 155### OH_AudioCodecFormat 156 157``` 158typedef enum OH_AudioCodecFormat OH_AudioCodecFormat 159``` 160 161**描述:** 162 163枚举,表示音频编码格式。 164 165**系统能力:** 166 167SystemCapability.Multimedia.Media.AVScreenCapture 168 169 170### OH_AudioEncInfo 171 172``` 173typedef struct OH_AudioEncInfo OH_AudioEncInfo 174``` 175 176**描述:** 177 178音频编码信息。 179 180> **说明:** 181> 182> 预留接口,将在后续版本提供。 183 184**系统能力:** 185 186SystemCapability.Multimedia.Media.AVScreenCapture 187 188 189### OH_AudioInfo 190 191``` 192typedef struct OH_AudioInfo OH_AudioInfo 193``` 194 195**描述:** 196 197音频录制参数。 198 199**系统能力:** 200 201SystemCapability.Multimedia.Media.AVScreenCapture 202 203 204### OH_AVSCREEN_CAPTURE_ErrCode 205 206``` 207typedef enum OH_AVSCREEN_CAPTURE_ErrCode OH_AVSCREEN_CAPTURE_ErrCode 208``` 209 210**描述:** 211 212屏幕录制过程中产生的不同结果码。 213 214**系统能力:** 215 216SystemCapability.Multimedia.Media.AVScreenCapture 217 218 219### OH_AVScreenCapture 220 221``` 222typedef struct OH_AVScreenCapture OH_AVScreenCapture 223``` 224 225**描述:** 226 227通过OH_AVScreenCapture可以获取视频与音频的原始码流。 228 229**系统能力:** 230 231SystemCapability.Multimedia.Media.AVScreenCapture 232 233 234### OH_AVScreenCaptureCallback 235 236``` 237typedef struct OH_AVScreenCaptureCallback OH_AVScreenCaptureCallback 238``` 239 240**描述:** 241 242OH_AVScreenCapture中所有异步回调函数指针的集合。将该结构体的实例注册到OH_AVScreenCapture实例中, 并处理回调上报的信息,以保证OH_AVScreenCapture的正常运行。 243 244**参数:** 245 246| 名称 | 描述 | 247| -------- | -------- | 248| onError | 监控录屏调用操作错误,请参见[OH_AVScreenCaptureOnError](#oh_avscreencaptureonerror)。 | 249| onAudioBufferAvailable | 监控音频码流是否有数据产生,请参见[OH_AVScreenCaptureOnAudioBufferAvailable](#oh_avscreencaptureonaudiobufferavailable)。 | 250| onVideoBufferAvailable | 监控视频码流是否有数据产生,请参见[OH_AVScreenCaptureOnVideoBufferAvailable](#oh_avscreencaptureonvideobufferavailable)。 | 251 252**系统能力:** 253 254SystemCapability.Multimedia.Media.AVScreenCapture 255 256 257### OH_AVScreenCaptureConfig 258 259``` 260typedef struct OH_AVScreenCaptureConfig OH_AVScreenCaptureConfig 261``` 262 263**描述:** 264 265屏幕录制配置参数。 266 267**系统能力:** 268 269SystemCapability.Multimedia.Media.AVScreenCapture 270 271 272### OH_AVScreenCaptureOnAudioBufferAvailable 273 274``` 275typedef void(* OH_AVScreenCaptureOnAudioBufferAvailable) (OH_AVScreenCapture *capture, bool isReady, OH_AudioCaptureSourceType type) 276``` 277 278**描述:** 279 280当OH_AVScreenCapture操作期间音频缓冲区可用时,将调用函数指针。 281 282**参数:** 283 284| 名称 | 描述 | 285| -------- | -------- | 286| capture | 指向OH_AVScreenCapture实例的指针。 | 287| isReady | 音频缓冲区是否可用。 | 288| type | 音频源类型。 | 289 290**系统能力:** 291 292SystemCapability.Multimedia.Media.AVScreenCapture 293 294 295### OH_AVScreenCaptureOnError 296 297``` 298typedef void(* OH_AVScreenCaptureOnError) (OH_AVScreenCapture *capture, int32_t errorCode) 299``` 300 301**描述:** 302 303当OH_AVScreenCapture实例运行出错时,将调用函数指针。 304 305**参数:** 306 307| 名称 | 描述 | 308| -------- | -------- | 309| capture | 指向OH_AVScreenCapture实例的指针。 | 310| errorCode | 指定错误码。 | 311 312**系统能力:** 313 314SystemCapability.Multimedia.Media.AVScreenCapture 315 316 317### OH_AVScreenCaptureOnVideoBufferAvailable 318 319``` 320typedef void(* OH_AVScreenCaptureOnVideoBufferAvailable) (OH_AVScreenCapture *capture, bool isReady) 321``` 322 323**描述:** 324 325当OH_AVScreenCapture操作期间视频缓冲区可用时,将调用函数指针。 326 327**参数:** 328 329| 名称 | 描述 | 330| -------- | -------- | 331| capture | 指向OH_AVScreenCapture实例的指针。 | 332| isReady | 视频缓冲区是否可用。 | 333 334**系统能力:** 335 336SystemCapability.Multimedia.Media.AVScreenCapture 337 338 339### OH_CaptureMode 340 341``` 342typedef enum OH_CaptureModeOH_CaptureMode 343``` 344 345**描述:** 346 347枚举,表示屏幕录制的不同模式。 348 349**系统能力:** 350 351SystemCapability.Multimedia.Media.AVScreenCapture 352 353 354### OH_ContainerFormatType 355 356``` 357typedef enum OH_ContainerFormatType OH_ContainerFormatType 358``` 359 360**描述:** 361 362枚举,表示屏幕录制生成的文件类型。 363 364> **说明:** 365> 366> 预留接口,将在后续版本提供。 367 368**系统能力:** 369 370SystemCapability.Multimedia.Media.AVScreenCapture 371 372 373### OH_DataType 374 375``` 376typedef enum OH_DataType OH_DataType 377``` 378 379**描述:** 380 381枚举,表示屏幕录制流的数据格式。 382 383**系统能力:** 384 385SystemCapability.Multimedia.Media.AVScreenCapture 386 387 388### OH_NativeBuffer 389 390``` 391typedef struct OH_NativeBuffer OH_NativeBuffer 392``` 393 394**描述:** 395 396提供录屏的视频原始码流类。 397 398**系统能力:** 399 400SystemCapability.Multimedia.Media.AVScreenCapture 401 402 403### OH_RecorderInfo 404 405``` 406typedef struct OH_RecorderInfo OH_RecorderInfo 407``` 408 409**描述:** 410 411录制文件信息。 412 413**系统能力:** 414 415SystemCapability.Multimedia.Media.AVScreenCapture 416 417 418### OH_Rect 419 420``` 421typedef struct OH_Rect OH_Rect 422``` 423 424**描述:** 425 426定义录屏界面的宽高以及画面信息。 427 428**系统能力:** 429 430SystemCapability.Multimedia.Media.AVScreenCapture 431 432 433### OH_VideoCaptureInfo 434 435``` 436typedef struct OH_VideoCaptureInfo OH_VideoCaptureInfo 437``` 438 439**描述:** 440 441视频采集信息。 442 443**系统能力:** 444 445SystemCapability.Multimedia.Media.AVScreenCapture 446 447 448### OH_VideoCodecFormat 449 450``` 451typedef enum OH_VideoCodecFormat OH_VideoCodecFormat 452``` 453 454**描述:** 455 456枚举,表示视频编码格式。 457 458**系统能力:** 459 460SystemCapability.Multimedia.Media.AVScreenCapture 461 462 463### OH_VideoEncInfo 464 465``` 466typedef struct OH_VideoEncInfo OH_VideoEncInfo 467``` 468 469**描述:** 470 471视频编码参数。 472 473> **说明:** 474> 475> 预留接口,将在后续版本提供。 476 477**系统能力:** 478 479SystemCapability.Multimedia.Media.AVScreenCapture 480 481 482### OH_VideoInfo 483 484``` 485typedef struct OH_VideoInfo OH_VideoInfo 486``` 487 488**描述:** 489 490视频录制参数。 491 492**系统能力:** 493 494SystemCapability.Multimedia.Media.AVScreenCapture 495 496 497### OH_VideoSourceType 498 499``` 500typedef enum OH_VideoSourceType OH_VideoSourceType 501``` 502 503**描述:** 504 505枚举,表示视频源格式。 506 507**系统能力:** 508 509SystemCapability.Multimedia.Media.AVScreenCapture 510 511 512## 枚举类型说明 513 514 515### OH_AudioCaptureSourceType 516 517``` 518enum OH_AudioCaptureSourceType 519``` 520 521**描述:** 522 523枚举,表示屏幕录制时的音频源类型。 524 525**系统能力:** 526 527SystemCapability.Multimedia.Media.AVScreenCapture 528 529| 枚举值 | 描述 | 530| -------- | -------- | 531| OH_SOURCE_INVALID | 无效音频源。 | 532| OH_SOURCE_DEFAULT | 默认音频源,默认为MIC。 | 533| OH_MIC | 麦克风录制的外部音频流。 | 534| OH_ALL_PLAYBACK | 系统播放的所有内部音频流。 | 535| OH_APP_PLAYBACK | 指定应用播放的内部音频流。 | 536 537 538### OH_AudioCodecFormat 539 540``` 541enum OH_AudioCodecFormat 542``` 543 544**描述:** 545 546枚举,表示音频编码格式。 547 548**系统能力:** 549 550SystemCapability.Multimedia.Media.AVScreenCapture 551 552| 枚举值 | 描述 | 553| -------- | -------- | 554| OH_AUDIO_DEFAULT | 默认音频编码,默认为AAC_LC。 | 555| OH_AAC_LC | AAC_LC音频编码。 | 556| OH_AUDIO_CODEC_FORMAT_BUTT | 无效格式。 | 557 558 559### OH_AVSCREEN_CAPTURE_ErrCode 560 561``` 562enum OH_AVSCREEN_CAPTURE_ErrCode 563``` 564 565**描述:** 566 567屏幕录制过程中产生的不同结果码。 568 569**系统能力:** 570 571SystemCapability.Multimedia.Media.AVScreenCapture 572 573| 枚举值 | 描述 | 574| -------- | -------- | 575| AV_SCREEN_CAPTURE_ERR_BASE | 接口调用错误返回的基础值。 | 576| AV_SCREEN_CAPTURE_ERR_OK | 操作成功。 | 577| AV_SCREEN_CAPTURE_ERR_NO_MEMORY | 内存不足。 | 578| AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT | 不允许操作。 | 579| AV_SCREEN_CAPTURE_ERR_INVALID_VAL | 无效参数。 | 580| AV_SCREEN_CAPTURE_ERR_IO | 输入输出流异常。 | 581| AV_SCREEN_CAPTURE_ERR_TIMEOUT | 网络超时。 | 582| AV_SCREEN_CAPTURE_ERR_UNKNOWN | 未知错误。 | 583| AV_SCREEN_CAPTURE_ERR_SERVICE_DIED | 媒体服务已终止。 | 584| AV_SCREEN_CAPTURE_ERR_INVALID_STATE | 当前状态不支持此操作。 | 585| AV_SCREEN_CAPTURE_ERR_UNSUPPORT | 不支持的接口。 | 586| AV_SCREEN_CAPTURE_ERR_EXTEND_START | 预期之外的错误。 | 587 588 589### OH_CaptureMode 590 591``` 592enum OH_CaptureMode 593``` 594 595**描述:** 596 597枚举,表示屏幕录制的不同模式。 598 599**系统能力:** 600 601SystemCapability.Multimedia.Media.AVScreenCapture 602 603| 枚举值 | 描述 | 604| -------- | -------- | 605| OH_CAPTURE_HOME_SCREEN | 录制主屏幕。 | 606| OH_CAPTURE_SPECIFIED_SCREEN | 录制指定屏幕。<br>**说明:** 预留接口,将在后续版本提供。 | 607| OH_CAPTURE_SPECIFIED_WINDOW | 录制指定窗口。 <br>**说明:** 预留接口,将在后续版本提供。| 608| OH_CAPTURE_INVAILD | 无效模式。 | 609 610 611### OH_ContainerFormatType 612 613``` 614enum OH_ContainerFormatType 615``` 616 617**描述:** 618 619枚举,表示屏幕录制生成的文件类型。 620 621> **说明:** 622> 623> 预留接口,将在后续版本提供。 624 625**系统能力:** 626 627SystemCapability.Multimedia.Media.AVScreenCapture 628 629| 枚举值 | 描述 | 630| -------- | -------- | 631| CFT_MPEG_4A | 音频格式 m4a。 | 632| CFT_MPEG_4 | 视频格式 mp4。 | 633 634 635### OH_DataType 636 637``` 638enum OH_DataType 639``` 640 641**描述:** 642 643枚举,表示屏幕录制流的数据格式。 644 645**系统能力:** 646 647SystemCapability.Multimedia.Media.AVScreenCapture 648 649| 枚举值 | 描述 | 650| -------- | -------- | 651| OH_ORIGINAL_STREAM | 原始流格式,如YUV/RGBA/PCM等。 | 652| OH_ENCODED_STREAM | 编码格式,如H264/AAC等。 <br>**说明:** 预留接口,将在后续版本提供。 | 653| OH_CAPTURE_FILE | 保存文件格式,支持mp4。<br>**说明:** 预留接口,将在后续版本提供。 | 654| OH_INVAILD | 无效格式。 | 655 656 657### OH_VideoCodecFormat 658 659``` 660enum OH_VideoCodecFormat 661``` 662 663**描述:** 664 665枚举,表示视频编码格式。 666 667**系统能力:** 668 669SystemCapability.Multimedia.Media.AVScreenCapture 670 671| 枚举值 | 描述 | 672| -------- | -------- | 673| OH_VIDEO_DEFAULT | 默认视频编码,默认为H.264。 | 674| OH_H264 | H.264 | 675| OH_H265 | H.265/HEVC | 676| OH_MPEG4 | MPEG4 | 677| OH_VP8 | VP8 | 678| OH_VP9 | VP9 | 679| OH_VIDEO_CODEC_FORMAT_BUTT | 无效格式。 | 680 681 682### OH_VideoSourceType 683 684``` 685enum OH_VideoSourceType 686``` 687 688**描述:** 689 690枚举,表示视频源格式。 691 692**系统能力:** 693 694SystemCapability.Multimedia.Media.AVScreenCapture 695 696| 枚举值 | 描述 | 697| -------- | -------- | 698| OH_VIDEO_SOURCE_SURFACE_YUV | YUV格式。 | 699| OH_VIDEO_SOURCE_SURFACE_ES | raw格式。 | 700| OH_VIDEO_SOURCE_SURFACE_RGBA | RGBA格式。 | 701| OH_VIDEO_SOURCE_BUTT | 无效格式。 | 702 703 704## 函数说明 705 706 707### OH_AVScreenCapture_AcquireAudioBuffer() 708 709``` 710OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_AcquireAudioBuffer (struct OH_AVScreenCapture * capture, OH_AudioBuffer ** audiobuffer, OH_AudioCaptureSourceType type ) 711``` 712 713**描述:** 714 715获取音频buffer,应用在调用时,需要对audiobuffer分配对应结构体大小的内存,否则会影响拿到音频buffer的获取。 716 717**参数:** 718 719| 名称 | 描述 | 720| -------- | -------- | 721| capture | 指向OH_AVScreenCapture实例的指针。 | 722| audiobuffer | 保存音频buffer的结构体,通过该结构体获取到音频buffer以及buffer的时间戳等信息。 | 723| type | 音频buffer的类型,区分是麦克风录制的外部流还是系统内部播放音频的内录流,详情请参阅[OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) | 724 725**系统能力:** 726 727SystemCapability.Multimedia.Media.AVScreenCapture 728 729**返回:** 730 731执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 732 733 734### OH_AVScreenCapture_AcquireVideoBuffer() 735 736``` 737OH_NativeBuffer* OH_AVScreenCapture_AcquireVideoBuffer (struct OH_AVScreenCapture * capture, int32_t * fence, int64_t * timestamp, struct OH_Rect * region ) 738``` 739 740**描述:** 741 742获取视频buffer,应用在调用时,通过此接口来获取到视频的buffer以及时间戳等信息。 buffer使用完成后,调用OH_AVScreenCapture_ReleaseVideoBuffer接口进行视频buffer的释放。 743 744**参数:** 745 746| 名称 | 描述 | 747| -------- | -------- | 748| capture | 指向OH_AVScreenCapture实例的指针。 | 749| fence | 用于同步的显示相关参数信息。 | 750| timestamp | 视频帧的时间戳。 | 751| region | 视频显示相关的坐标信息。 | 752 753**系统能力:** 754 755SystemCapability.Multimedia.Media.AVScreenCapture 756 757**返回:** 758 759执行成功返回OH_NativeBuffer对象,通过OH_NativeBuffer对象相关接口可以获取到视频buffer和分辨率等信息参数。 760 761 762### OH_AVScreenCapture_Create() 763 764``` 765struct OH_AVScreenCapture* OH_AVScreenCapture_Create (void ) 766``` 767 768**描述:** 769 770实例化对象,创建OH_AVScreenCapture。可以通过调用OH_AVScreenCapture_Release释放实例。 771 772**系统能力:** 773 774SystemCapability.Multimedia.Media.AVScreenCapture 775 776**返回:** 777 778返回一个指向OH_AVScreenCapture实例的指针。 779 780 781### OH_AVScreenCapture_Init() 782 783``` 784OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Init (struct OH_AVScreenCapture * capture, OH_AVScreenCaptureConfig config ) 785``` 786 787**描述:** 788 789初始化OH_AVScreenCapture相关参数,包括下发的音频麦克风采样信息参数,音频内录相关参数(可选),视频分辨率相关参数。 790 791调用此函数,需要申请麦克风权限(ohos.permission.MICROPHONE)和截屏权限(ohos.permission.CAPTURE_SCREEN),否则会初始化失败导致无法正常录屏。 792 793**参数:** 794 795| 名称 | 描述 | 796| -------- | -------- | 797| capture | 指向OH_AVScreenCapture实例的指针。 | 798| config | 录屏初始化相关参数。 | 799 800**系统能力:** 801 802SystemCapability.Multimedia.Media.AVScreenCapture 803 804**返回:** 805 806执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅 [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 807 808 809### OH_AVScreenCapture_Release() 810 811``` 812OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Release (struct OH_AVScreenCapture * capture) 813``` 814 815**描述:** 816 817释放创建的OH_AVScreenCapture实例,对应OH_AVScreenCapture_Create。 818 819**参数:** 820 821| 名称 | 描述 | 822| -------- | -------- | 823| capture | 指向OH_AVScreenCapture实例的指针。 | 824 825**系统能力:** 826 827SystemCapability.Multimedia.Media.AVScreenCapture 828 829**返回:** 830 831执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 832 833 834### OH_AVScreenCapture_ReleaseAudioBuffer() 835 836``` 837OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseAudioBuffer (struct OH_AVScreenCapture * capture, OH_AudioCaptureSourceType type ) 838``` 839 840**描述:** 841 842根据音频类型释放buffer。当某一帧音频buffer使用完成后,调用此接口进行释放对应的音频buffer。 843 844**参数:** 845 846| 名称 | 描述 | 847| -------- | -------- | 848| capture | 指向OH_AVScreenCapture实例的指针。 | 849| type | 音频buffer的类型,区分麦克风录制的外部流还是系统内部播放音频的内录流。 | 850 851**系统能力:** 852 853SystemCapability.Multimedia.Media.AVScreenCapture 854 855**返回:** 856 857执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 858 859 860### OH_AVScreenCapture_ReleaseVideoBuffer() 861 862``` 863OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseVideoBuffer (struct OH_AVScreenCapture * capture) 864``` 865 866**描述:** 867 868根据视频类型释放buffer。当某一帧视频buffer使用完成后,调用此接口进行释放对应的视频buffer。 869 870**参数:** 871 872| 名称 | 描述 | 873| -------- | -------- | 874| capture | 指向OH_AVScreenCapture实例的指针。 | 875 876**系统能力:** 877 878SystemCapability.Multimedia.Media.AVScreenCapture 879 880**返回:** 881 882执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 883 884 885### OH_AVScreenCapture_SetCallback() 886 887``` 888OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCallback (struct OH_AVScreenCapture * capture, struct OH_AVScreenCaptureCallback callback ) 889``` 890 891**描述:** 892 893设置监听接口,通过设置监听,可以监听到调用过程中的错误信息,以及是否有可用的视频buffer和音频buffer。 894 895**参数:** 896 897| 名称 | 描述 | 898| -------- | -------- | 899| capture | 指向OH_AVScreenCapture实例的指针。 | 900| callback | [OH_AVScreenCaptureCallback](_o_h___a_v_screen_capture_callback.md)的结构体,保存相关回调函数指针。 | 901 902**系统能力:** 903 904SystemCapability.Multimedia.Media.AVScreenCapture 905 906**返回:** 907 908执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 909 910 911### OH_AVScreenCapture_SetMicrophoneEnabled() 912 913``` 914OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMicrophoneEnabled (struct OH_AVScreenCapture * capture, bool isMicrophone ) 915``` 916 917**描述:** 918 919设置麦克风开关。当isMicrophone为true时,则打开麦克风,通过调用OH_AVScreenCapture_StartScreenRecording和OH_AVScreenCapture_AcquireAudioBuffer可以正常获取到音频的麦克风原始PCM数据;isMicrophone为false时,获取到的音频数据为无声数据。 920 921**参数:** 922 923| 名称 | 描述 | 924| -------- | -------- | 925| capture | 指向OH_AVScreenCapture实例的指针。 | 926| isMicrophone | 麦克风开关参数。 | 927 928**系统能力:** 929 930SystemCapability.Multimedia.Media.AVScreenCapture 931 932**返回:** 933 934执行成功返回AV_SCREEN_CAPTURE_ERR_OK,否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 935 936 937### OH_AVScreenCapture_StartScreenCapture() 938 939``` 940OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenCapture (struct OH_AVScreenCapture * capture) 941``` 942 943**描述:** 944 945开始录屏,采集原始码流。调用后可以通过回调的监听(OH_AVScreenCaptureOnAudioBufferAvailable,OH_AVScreenCaptureOnVideoBufferAvailable)来监听当前是否有码流的产生。 946 947通过调用获取音频buffer(OH_AVScreenCapture_AcquireAudioBuffer)和视频buffer(OH_AVScreenCapture_ReleaseVideoBuffer)的接口来获取录屏的原始码流 948 949**参数:** 950 951| 名称 | 描述 | 952| -------- | -------- | 953| capture | 指向OH_AVScreenCapture实例的指针。 | 954 955**系统能力:** 956 957SystemCapability.Multimedia.Media.AVScreenCapture 958 959**返回:** 960 961执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 962 963 964### OH_AVScreenCapture_StartScreenRecording() 965 966``` 967OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenRecording (struct OH_AVScreenCapture * capture) 968``` 969 970**描述:** 971 972启动录屏,调用此接口,可采集编码后的码流。 973 974> **说明:** 975> 976> 预留接口,将在后续版本提供。 977 978**参数:** 979 980| 名称 | 描述 | 981| -------- | -------- | 982| capture | 指向OH_AVScreenCapture实例的指针。 | 983 984**系统能力:** 985 986SystemCapability.Multimedia.Media.AVScreenCapture 987 988**返回:** 989 990执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 991 992 993### OH_AVScreenCapture_StopScreenCapture() 994 995``` 996OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenCapture (struct OH_AVScreenCapture * capture) 997``` 998 999**描述:** 1000 1001结束录屏,与OH_AVScreenCapture_StartScreenCapture配合使用。调用后针对调用该接口的应用会停止录屏或屏幕共享,释放麦克风。 1002 1003**参数:** 1004 1005| 名称 | 描述 | 1006| -------- | -------- | 1007| capture | 指向OH_AVScreenCapture实例的指针。 | 1008 1009**系统能力:** 1010 1011SystemCapability.Multimedia.Media.AVScreenCapture 1012 1013**返回:** 1014 1015执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 1016 1017 1018### OH_AVScreenCapture_StopScreenRecording() 1019 1020``` 1021OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenRecording (struct OH_AVScreenCapture * capture) 1022``` 1023 1024**描述:** 1025 1026停止录屏,与OH_AVScreenCapture_StartScreenRecording配合使用。 1027 1028> **说明:** 1029> 1030> 预留接口,将在后续版本提供。 1031 1032**参数:** 1033 1034| 名称 | 描述 | 1035| -------- | -------- | 1036| capture | 指向OH_AVScreenCapture实例的指针。 | 1037 1038**系统能力:** 1039 1040SystemCapability.Multimedia.Media.AVScreenCapture 1041 1042**返回:** 1043 1044执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode)。 1045