1# IAudioCapture 2 3 4## 概述 5 6AudioCapture音频录音接口。 7 8提供音频录音支持的驱动能力,包括音频控制、音频属性、音频场景、音频音量、录制音频帧数据等。 9 10**Since:** 11 123.2 13 14**Version:** 15 161.0 17 18**相关模块:** 19 20[Audio](_audio.md) 21 22 23## 汇总 24 25 26### Public 成员函数 27 28 | 名称 | 描述 | 29| -------- | -------- | 30| [CaptureFrame](#captureframe) ([out] byte[] frame, [in] unsigned long requestBytes) | 从音频驱动中录制一帧输入数据(录音,音频上行数据)。 | 31| [GetCapturePosition](#getcaptureposition) ([out] unsigned long frames, [out] struct [AudioTimeStamp](_audio_time_stamp.md) time) | 获取音频已输入的帧数。 | 32| [CheckSceneCapability](#checkscenecapability) ([in] struct [AudioSceneDescriptor](_audio_scene_descriptor.md) scene, [out] boolean supported) | 判断某个音频场景能力是否支持。 | 33| [SelectScene](#selectscene) ([in] struct [AudioSceneDescriptor](_audio_scene_descriptor.md) scene) | 选择音频场景。 | 34| [SetMute](#setmute) ([in] boolean mute) | 设置音频的静音状态。 | 35| [GetMute](#getmute) ([out] boolean mute) | 获取音频的静音状态。 | 36| [SetVolume](#setvolume) ([in] float volume) | 设置一个音频流的音量。 | 37| [GetVolume](#getvolume) ([out] float volume) | 获取一个音频流的音量。 | 38| [GetGainThreshold](#getgainthreshold) ([out] float min, [out] float max) | 获取音频流增益的阈值。 | 39| [GetGain](#getgain) ([out] float gain) | 获取音频流的增益。 | 40| [SetGain](#setgain) ([in] float gain) | 设置音频流的增益。 | 41| [GetFrameSize](#getframesize) ([out] unsigned long size) | 获取一帧音频数据的长度(字节数)大小。 | 42| [GetFrameCount](#getframecount) ([out] unsigned long count) | 获取音频buffer中的音频帧数。 | 43| [SetSampleAttributes](#setsampleattributes) ([in] struct [AudioSampleAttributes](_audio_sample_attributes.md) attrs) | 设置音频采样的属性参数。 | 44| [GetSampleAttributes](#getsampleattributes) ([out] struct [AudioSampleAttributes](_audio_sample_attributes.md) attrs) | 获取音频采样的属性参数。 | 45| [GetCurrentChannelId](#getcurrentchannelid) ([out] unsigned int channelId) | 获取音频的数据通道ID。 | 46| [SetExtraParams](#setextraparams) ([in] String keyValueList) | 设置音频拓展参数。 | 47| [GetExtraParams](#getextraparams) ([out] String keyValueList) | 获取音频拓展参数。 | 48| [ReqMmapBuffer](#reqmmapbuffer) ([in] int reqSize, [in] struct [AudioMmapBufferDescripter](_audio_mmap_buffer_descripter.md) desc) | 请求mmap缓冲区。 | 49| [GetMmapPosition](#getmmapposition) ([out] unsigned long frames, [out] struct [AudioTimeStamp](_audio_time_stamp.md) time) | 获取当前mmap的读/写位置。 | 50| [AddAudioEffect](#addaudioeffect) ([in] unsigned long effectid) | 添加音频效果。 | 51| [RemoveAudioEffect](#removeaudioeffect) ([in] unsigned long effectid) | 移除音频效果。 | 52| [GetFrameBufferSize](#getframebuffersize) ([out] unsigned long bufferSize) | 获取缓冲区大小。 | 53| [Start](#start) () | 启动一个音频播放或录音处理。 | 54| [Stop](#stop) () | 停止一个音频播放或录音处理。 | 55| [Pause](#pause) () | 暂停一个音频播放或录音处理。 | 56| [Resume](#resume) () | 恢复一个音频播放或录音处理。 | 57| [Flush](#flush) () | 刷新音频缓冲区buffer中的数据。 | 58| [TurnStandbyMode](#turnstandbymode) () | 设置或去设置设备的待机模式。 | 59| [AudioDevDump](#audiodevdump) ([in] int range, [in] int fd) | 保存音频设备信息。 | 60| [IsSupportsPauseAndResume](#issupportspauseandresume) ([out] boolean supportPause, [out] boolean supportResume) | 判断声卡是否支持音频录制的暂停和恢复功能。 | 61 62 63## 成员函数说明 64 65 66### AddAudioEffect() 67 68 69``` 70IAudioCapture::AddAudioEffect ([in] unsigned long effectid) 71``` 72 73**描述:** 74 75添加音频效果。 76 77**参数:** 78 79 | 名称 | 描述 | 80| -------- | -------- | 81| effectid | 添加的音频效果实例标识符。 | 82 83**返回:** 84 85成功返回值0,失败返回负值。 86 87 88### AudioDevDump() 89 90 91``` 92IAudioCapture::AudioDevDump ([in] int range, [in] int fd ) 93``` 94 95**描述:** 96 97保存音频设备信息。 98 99**参数:** 100 101 | 名称 | 描述 | 102| -------- | -------- | 103| range | 需要保存的信息范围(3 ~ 5),分为简要信息(3)、一般信息(4)、全量信息(5)。 | 104| fd | 保存到指定的目标文件。 | 105 106**返回:** 107 108成功返回值0,失败返回负值。 109 110 111### CaptureFrame() 112 113 114``` 115IAudioCapture::CaptureFrame ([out] byte[] frame, [in] unsigned long requestBytes ) 116``` 117 118**描述:** 119 120从音频驱动中录制一帧输入数据(录音,音频上行数据)。 121 122**参数:** 123 124 | 名称 | 描述 | 125| -------- | -------- | 126| frame | 待存放输入数据的音频frame。 | 127| requestBytes | 待存放输入数据的音频frame大小(字节数)。 | 128 129**返回:** 130 131成功返回值0,失败返回负值。 132 133 134### CheckSceneCapability() 135 136 137``` 138IAudioCapture::CheckSceneCapability ([in] struct AudioSceneDescriptor scene, [out] boolean supported ) 139``` 140 141**描述:** 142 143判断某个音频场景能力是否支持。 144 145**参数:** 146 147 | 名称 | 描述 | 148| -------- | -------- | 149| scene | 待判断的音频场景描述符,详请参考[AudioSceneDescriptor](_audio_scene_descriptor.md)。 | 150| supported | 是否支持的状态保存到supported中,true表示支持,false表示不支持。 | 151 152**返回:** 153 154成功返回值0,失败返回负值。 155 156**参见:** 157 158[SelectScene](#selectscene) 159 160 161### Flush() 162 163 164``` 165IAudioCapture::Flush () 166``` 167 168**描述:** 169 170刷新音频缓冲区buffer中的数据。 171 172**返回:** 173 174成功返回值0,失败返回负值。 175 176 177### GetCapturePosition() 178 179 180``` 181IAudioCapture::GetCapturePosition ([out] unsigned long frames, [out] struct AudioTimeStamp time ) 182``` 183 184**描述:** 185 186获取音频已输入的帧数。 187 188**参数:** 189 190 | 名称 | 描述 | 191| -------- | -------- | 192| frames | 获取的音频帧数保存到frames中。 | 193| time | 获取的关联时间戳保存到time中,详请参考[AudioTimeStamp](_audio_time_stamp.md)。 | 194 195**返回:** 196 197成功返回值0,失败返回负值。 198 199**参见:** 200 201[CaptureFrame](#captureframe) 202 203 204### GetCurrentChannelId() 205 206 207``` 208IAudioCapture::GetCurrentChannelId ([out] unsigned int channelId) 209``` 210 211**描述:** 212 213获取音频的数据通道ID。 214 215**参数:** 216 217 | 名称 | 描述 | 218| -------- | -------- | 219| channelId | 获取的通道ID保存到channelId中。 | 220 221**返回:** 222 223成功返回值0,失败返回负值。 224 225 226### GetExtraParams() 227 228 229``` 230IAudioCapture::GetExtraParams ([out] String keyValueList) 231``` 232 233**描述:** 234 235获取音频拓展参数。 236 237**参数:** 238 239 | 名称 | 描述 | 240| -------- | -------- | 241| keyValueList | 拓展参数键值对字符串列表,格式为key=value,多个键值对通过分号分割。 | 242 243**返回:** 244 245成功返回值0,失败返回负值。 246 247 248### GetFrameBufferSize() 249 250 251``` 252IAudioCapture::GetFrameBufferSize ([out] unsigned long bufferSize) 253``` 254 255**描述:** 256 257获取缓冲区大小。 258 259**参数:** 260 261 | 名称 | 描述 | 262| -------- | -------- | 263| bufferSize | 获取的缓冲区大小保存在bufferSize中,单位为字节。 | 264 265**返回:** 266 267成功返回值0,失败返回负值。 268 269 270### GetFrameCount() 271 272 273``` 274IAudioCapture::GetFrameCount ([out] unsigned long count) 275``` 276 277**描述:** 278 279获取音频buffer中的音频帧数。 280 281**参数:** 282 283 | 名称 | 描述 | 284| -------- | -------- | 285| count | 一个音频buffer中包含的音频帧数,获取后保存到count中。 | 286 287**返回:** 288 289成功返回值0,失败返回负值。 290 291 292### GetFrameSize() 293 294 295``` 296IAudioCapture::GetFrameSize ([out] unsigned long size) 297``` 298 299**描述:** 300 301获取一帧音频数据的长度(字节数)大小。 302 303**参数:** 304 305 | 名称 | 描述 | 306| -------- | -------- | 307| size | 获取的音频帧大小(字节数)保存到size中。 | 308 309**返回:** 310 311成功返回值0,失败返回负值。 312 313 314### GetGain() 315 316 317``` 318IAudioCapture::GetGain ([out] float gain) 319``` 320 321**描述:** 322 323获取音频流的增益。 324 325**参数:** 326 327 | 名称 | 描述 | 328| -------- | -------- | 329| gain | 保存当前获取到的增益到gain中。 | 330 331**返回:** 332 333成功返回值0,失败返回负值。 334 335**参见:** 336 337[GetGainThreshold](#getgainthreshold) 338 339[SetGain](#setgain) 340 341 342### GetGainThreshold() 343 344 345``` 346IAudioCapture::GetGainThreshold ([out] float min, [out] float max ) 347``` 348 349**描述:** 350 351获取音频流增益的阈值。 352 353在具体的功能实现中,可以根据芯片平台的实际情况来进行处理: 354 355- 可以使用实际的增益值,例如增益的范围为-50db ~ 6db。 356 357- 也可以将增益范围设定为0.0~1.0,如果增益的范围为-50db ~ 6db, 则增益的映射关系为0.0表示静音(-50db),1.0表示最大增益(6db)。 358 359**参数:** 360 361 | 名称 | 描述 | 362| -------- | -------- | 363| min | 获取的音频增益的阈值下限保存到min中。 | 364| max | 获取的音频增益的阈值上限保存到max中。 | 365 366**返回:** 367 368成功返回值0,失败返回负值。 369 370**参见:** 371 372[GetGain](#getgain) 373 374[SetGain](#setgain) 375 376 377### GetMmapPosition() 378 379 380``` 381IAudioCapture::GetMmapPosition ([out] unsigned long frames, [out] struct AudioTimeStamp time ) 382``` 383 384**描述:** 385 386获取当前mmap的读/写位置。 387 388**参数:** 389 390 | 名称 | 描述 | 391| -------- | -------- | 392| frames | 获取的音频帧计数保存到frames中。 | 393| time | 获取的关联时间戳保存到time中,详请参考[AudioTimeStamp](_audio_time_stamp.md)。 | 394 395**返回:** 396 397成功返回值0,失败返回负值。 398 399 400### GetMute() 401 402 403``` 404IAudioCapture::GetMute ([out] boolean mute) 405``` 406 407**描述:** 408 409获取音频的静音状态。 410 411**参数:** 412 413 | 名称 | 描述 | 414| -------- | -------- | 415| mute | 获取的静音状态保存到mute中,true表示静音操作、false表示取消静音操作。 | 416 417**返回:** 418 419成功返回值0,失败返回负值。 420 421**参见:** 422 423[SetMute](#setmute) 424 425 426### GetSampleAttributes() 427 428 429``` 430IAudioCapture::GetSampleAttributes ([out] struct AudioSampleAttributes attrs) 431``` 432 433**描述:** 434 435获取音频采样的属性参数。 436 437**参数:** 438 439 | 名称 | 描述 | 440| -------- | -------- | 441| attrs | 获取的音频采样属性(例如采样频率、采样精度、通道)保存到attrs中,详请参考[AudioSampleAttributes](_audio_sample_attributes.md)。 | 442 443**返回:** 444 445成功返回值0,失败返回负值。 446 447**参见:** 448 449[SetSampleAttributes](#setsampleattributes) 450 451 452### GetVolume() 453 454 455``` 456IAudioCapture::GetVolume ([out] float volume) 457``` 458 459**描述:** 460 461获取一个音频流的音量。 462 463**参数:** 464 465 | 名称 | 描述 | 466| -------- | -------- | 467| volume | 获取的音量保存到volume中,范围0.0~1.0。 | 468 469**返回:** 470 471成功返回值0,失败返回负值。 472 473**参见:** 474 475[SetVolume](#setvolume) 476 477 478### IsSupportsPauseAndResume() 479 480 481``` 482IAudioCapture::IsSupportsPauseAndResume ([out] boolean supportPause, [out] boolean supportResume ) 483``` 484 485**描述:** 486 487判断声卡是否支持音频录制的暂停和恢复功能。 488 489**参数:** 490 491 | 名称 | 描述 | 492| -------- | -------- | 493| supportPause | 是否支持暂停功能的状态保存到supportPause中,true表示支持,false表示不支持。 | 494| supportResume | 是否支持恢复功能的状态保存到supportResume中,true表示支持,false表示不支持。 | 495 496**返回:** 497 498成功返回值0,失败返回负值。 499 500 501### Pause() 502 503 504``` 505IAudioCapture::Pause () 506``` 507 508**描述:** 509 510暂停一个音频播放或录音处理。 511 512**返回:** 513 514成功返回值0,失败返回负值。 515 516**参见:** 517 518[Resume](#resume) 519 520 521### RemoveAudioEffect() 522 523 524``` 525IAudioCapture::RemoveAudioEffect ([in] unsigned long effectid) 526``` 527 528**描述:** 529 530移除音频效果。 531 532**参数:** 533 534 | 名称 | 描述 | 535| -------- | -------- | 536| effectid | 移除的音频效果实例标识符。 | 537 538**返回:** 539 540成功返回值0,失败返回负值。 541 542 543### ReqMmapBuffer() 544 545 546``` 547IAudioCapture::ReqMmapBuffer ([in] int reqSize, [in] struct AudioMmapBufferDescripter desc ) 548``` 549 550**描述:** 551 552请求mmap缓冲区。 553 554**参数:** 555 556 | 名称 | 描述 | 557| -------- | -------- | 558| reqSize | 请求缓冲区的大小,单位:字节。 | 559| desc | 缓冲区描述符,详请参考[AudioMmapBufferDescripter](_audio_mmap_buffer_descripter.md)。 | 560 561**返回:** 562 563成功返回值0,失败返回负值。 564 565 566### Resume() 567 568 569``` 570IAudioCapture::Resume () 571``` 572 573**描述:** 574 575恢复一个音频播放或录音处理。 576 577**返回:** 578 579成功返回值0,失败返回负值。 580 581**参见:** 582 583[Pause](#pause) 584 585 586### SelectScene() 587 588 589``` 590IAudioCapture::SelectScene ([in] struct AudioSceneDescriptor scene) 591``` 592 593**描述:** 594 595选择音频场景。 596 597- 选择一个非常具体的音频场景(应用场景和输出设备的组合),例如同样是使用手机中的喇叭作为输出设备。 598 - 在媒体播放场景中,scene为media_speaker。 599 - 在语音通话免提场景中,scene为voice_speaker。 600 601- 只是选择一个音频场景,例如使用场景为媒体播放(media)、电影播放(movie)、游戏播放(game)。 602 603- 只是选择一个音频输出设备,例如输出设备为听筒(receiver)、喇叭(speaker)、有线耳机(headset)。 604 605**参数:** 606 607 | 名称 | 描述 | 608| -------- | -------- | 609| scene | 待设置的音频场景描述符,详请参考[AudioSceneDescriptor](_audio_scene_descriptor.md)。 | 610 611**返回:** 612 613成功返回值0,失败返回负值。 614 615**参见:** 616 617[CheckSceneCapability](#checkscenecapability) 618 619 620### SetExtraParams() 621 622 623``` 624IAudioCapture::SetExtraParams ([in] String keyValueList) 625``` 626 627**描述:** 628 629设置音频拓展参数。 630 631**参数:** 632 633 | 名称 | 描述 | 634| -------- | -------- | 635| keyValueList | 拓展参数键值对字符串列表,格式为key=value,多个键值对通过分号分割。 | 636 637**返回:** 638 639成功返回值0,失败返回负值。 640 641 642### SetGain() 643 644 645``` 646IAudioCapture::SetGain ([in] float gain) 647``` 648 649**描述:** 650 651设置音频流的增益。 652 653**参数:** 654 655 | 名称 | 描述 | 656| -------- | -------- | 657| gain | 待设置的增益,最小为0.0,最大为1.0。 | 658 659**返回:** 660 661成功返回值0,失败返回负值。 662 663**参见:** 664 665[GetGainThreshold](#getgainthreshold) 666 667[GetGain](#getgain) 668 669 670### SetMute() 671 672 673``` 674IAudioCapture::SetMute ([in] boolean mute) 675``` 676 677**描述:** 678 679设置音频的静音状态。 680 681**参数:** 682 683 | 名称 | 描述 | 684| -------- | -------- | 685| mute | 待设置的静音状态,true表示静音操作、false表示取消静音操作。 | 686 687**返回:** 688 689成功返回值0,失败返回负值。 690 691**参见:** 692 693[GetMute](#getmute) 694 695 696### SetSampleAttributes() 697 698 699``` 700IAudioCapture::SetSampleAttributes ([in] struct AudioSampleAttributes attrs) 701``` 702 703**描述:** 704 705设置音频采样的属性参数。 706 707**参数:** 708 709 | 名称 | 描述 | 710| -------- | -------- | 711| attrs | 待设置的音频采样属性,例如采样频率、采样精度、通道,详请参考[AudioSampleAttributes](_audio_sample_attributes.md)。 | 712 713**返回:** 714 715成功返回值0,失败返回负值。 716 717**参见:** 718 719[GetSampleAttributes](#getsampleattributes) 720 721 722### SetVolume() 723 724 725``` 726IAudioCapture::SetVolume ([in] float volume) 727``` 728 729**描述:** 730 731设置一个音频流的音量。 732 733音量的取值范围是0.0~1.0,如果音频服务中的音量等级范围是0 ~ 15, 则音量的映射关系为0.0(或0)表示静音,1.0(或15)表示最大音量等级。 734 735**参数:** 736 737 | 名称 | 描述 | 738| -------- | -------- | 739| volume | 待设置的音量,范围0.0~1.0。 | 740 741**返回:** 742 743成功返回值0,失败返回负值。 744 745 746### Start() 747 748 749``` 750IAudioCapture::Start () 751``` 752 753**描述:** 754 755启动一个音频播放或录音处理。 756 757**返回:** 758 759成功返回值0,失败返回负值。 760 761**参见:** 762 763[Stop](#stop) 764 765 766### Stop() 767 768 769``` 770IAudioCapture::Stop () 771``` 772 773**描述:** 774 775停止一个音频播放或录音处理。 776 777**返回:** 778 779成功返回值0,失败返回负值。 780 781**参见:** 782 783[Start](#start) 784 785 786### TurnStandbyMode() 787 788 789``` 790IAudioCapture::TurnStandbyMode () 791``` 792 793**描述:** 794 795设置或去设置设备的待机模式。 796 797**返回:** 798 799设置设备待机模式成功返回值0,再次执行后去设置待机模式成功返回正值,失败返回负值。 800