当前位置: 首页 > news >正文

公司网站建设与维护方案证书查询入口官网

公司网站建设与维护方案,证书查询入口官网,怎样做服装厂的企业网站模版,新浪门户网站是谁做的前言 在之前的「基于声网 Flutter SDK 实现多人视频通话」里#xff0c;我们通过 Flutter 声网 SDK 完美实现了跨平台和多人视频通话的效果#xff0c;那么本篇我们将在之前例子的基础上进阶介绍一些常用的特效功能#xff0c;包括虚拟背景、色彩增强、空间音频、基础变声…前言 在之前的「基于声网 Flutter SDK 实现多人视频通话」里我们通过 Flutter 声网 SDK 完美实现了跨平台和多人视频通话的效果那么本篇我们将在之前例子的基础上进阶介绍一些常用的特效功能包括虚拟背景、色彩增强、空间音频、基础变声功能。 本篇主要带你了解 SDK 里几个实用的 API 实现相对简单。 01 虚拟背景 虚拟背景是视频会议里最常见的特效之一在声网 SDK 里可以通过enableVirtualBackground方法启动虚拟背景支持点击这里查看虚拟背景接口文档。 首先因为我们是在 Flutter 里使用所以我们可以在 Flutter 里放一张assets/bg.jpg图片作为背景这里有两个需要注意的点 assets/bg.jpg图片需要在pubspec.yaml文件下的assets添加引用 assets:- assets/bg.jpg需要在pubspec.yaml文件下添加path_provider: ^2.0.8和path: ^1.8.2依赖因为我们需要把图片保存在 App 本地路径下 如下代码所示首先我们通过 Flutter 内的rootBundle读取到bg.jpg然后将其转化为bytes 之后调用getApplicationDocumentsDirectory获取路径保存在的应用的/data目录下然后就可以把图片路径配置给enableVirtualBackground方法的source从而加载虚拟背景。 Futurevoid _enableVirtualBackground() async {ByteData data await rootBundle.load(assets/bg.jpg);Listint bytes data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);Directory appDocDir await getApplicationDocumentsDirectory();String p path.join(appDocDir.path, bg.jpg);final file File(p);if (!(await file.exists())) {await file.create();await file.writeAsBytes(bytes);}await _engine.enableVirtualBackground(enabled: true,backgroundSource: VirtualBackgroundSource(backgroundSourceType: BackgroundSourceType.backgroundImg,source: p),segproperty:const SegmentationProperty(modelType: SegModelType.segModelAi));setState(() {}); }如下图所示是都开启虚拟背景图片之后的运行效果当然这里还有两个需要注意的参数 BackgroundSourceType 可以配置backgroundColor虚拟背景颜色、backgroundImg虚拟背景图片、backgroundBlur 虚拟背景模糊 这三种情况基本可以覆盖视频会议里的所有场景SegModelType 可以配置为segModelAi智能算法或segModelGreen绿幕算法两种不同场景下的抠图算法。 这里需要注意的是在官方的提示里建议只在搭载如下芯片的设备上使用该功能应该是对于 GPU 有要求 骁龙 700 系列 750G 及以上骁龙 800 系列 835 及以上天玑 700 系列 720 及以上麒麟 800 系列 810 及以上麒麟 900 系列 980 及以上 另外需要注意的是为了将自定义背景图的分辨率与 SDK 的视频采集分辨率适配声网 SDK 会在保证自定义背景图不变形的前提下对自定义背景图进行缩放和裁剪。 02 美颜 美颜作为视频会议里另外一个最常用的功能声网也提供了setBeautyEffectOptions方法支持一些基础美颜效果调整。点击查看美颜接口文档 如下代码所示setBeautyEffectOptions方法里主要是通过BeautyOptions来调整画面的美颜风格参数的具体作用如下表格所示。 这里的 .5 只是做了一个 Demo 效果具体可以根据你的产品需求配置出几种固定模版让用户选择。 _engine.setBeautyEffectOptions(enabled: true,options: const BeautyOptions(lighteningContrastLevel:LighteningContrastLevel.lighteningContrastHigh,lighteningLevel: .5,smoothnessLevel: .5,rednessLevel: .5,sharpnessLevel: .5,), );运行后效果如下图所示开了 0.5 参数后的美颜整体画面更加白皙同时唇色也更加明显。 没开美颜开了美颜 03 色彩增强 接下来要介绍的一个 API 是色彩增强setColorEnhanceOptions如果是美颜还无法满足你的需求那么色彩增强 API 可以提供更多参数来调整你的需要的画面风格。点击查看色彩增强接口文档 如下代码所示色彩增强 API 很简单主要是调整ColorEnhanceOptions的 strengthLevel和skinProtectLevel参数也就是调整色彩强度和肤色保护的效果。 _engine.setColorEnhanceOptions(enabled: true,options: const ColorEnhanceOptions(strengthLevel: 6.0, skinProtectLevel: 0.7));如下图所示因为摄像头采集到的视频画面可能存在色彩失真的情况而色彩增强功能可以通过智能调节饱和度和对比度等视频特性提升视频色彩丰富度和色彩还原度最终使视频画面更生动。 开启增强之后画面更抢眼了。 没开增强开了美颜增强04 空间音效 其实声音调教才是重头戏声网既然叫声网在音频处理上肯定不能落后在声网 SDK 里就可以通过enableSpatialAudio打开空间音效的效果。点击查看空间音效接口文档 _engine.enableSpatialAudio(true);什么是空间音效简单说就是特殊的 3D 音效它可以将音源虚拟成从三维空间特定位置发出包括听者水平面的前后左右以及垂直方向的上方或下方。 本质上空间音效就是通过一些声学相关算法计算模拟实现类似空间 3D 效果的音效实现。 同时你还可以通过setRemoteUserSpatialAudioParams来配置空间音效的相关参数如下表格所示可以看到声网提供了非常丰富的参数来让我们可以自主调整空间音效例如这里面的enable_blur和enable_air_absorb效果就很有意思十分推荐大家去试试。 音频类的效果这里就无法展示了强烈推荐大家自己动手去试试。 05 人声音效 另外一个推荐的 API 就是人声音效setAudioEffectPreset 调用该方法可以通过 SDK 预设的人声音效点击查看人声音效接口文档在不会改变原声的性别特征的前提下修改用户的人声效果例如 _engine.setAudioEffectPreset(AudioEffectPreset.roomAcousticsKtv);声网 SDK 里预设了非常丰富的AudioEffectPreset如下表格所示从场景效果如 KTV、录音棚到男女变声再到恶搞的音效猪八戒等可以说是相当惊艳。 PS为获取更好的人声效果需要在调用该方法前将setAudioProfile的 scenario 设为audioScenarioGameStreaming(3) _engine.setAudioProfile(profile: AudioProfileType.audioProfileDefault,scenario: AudioScenarioType.audioScenarioGameStreaming);当然这里需要注意的是这个方法只推荐用在对人声的处理上不建议用于处理含音乐的音频数据。 最后完整代码如下所示 class VideoChatPage extends StatefulWidget {const VideoChatPage({Key? key}) : super(key: key);overrideStateVideoChatPage createState() _VideoChatPageState(); }class _VideoChatPageState extends StateVideoChatPage {late final RtcEngine _engine;///初始化状态late final Futurebool? initStatus;///当前 controllerlate VideoViewController currentController;///是否加入聊天bool isJoined false;/// 记录加入的用户idMapint, VideoViewController remoteControllers {};overridevoid initState() {super.initState();initStatus _requestPermissionIfNeed().then((value) async {await _initEngine();///构建当前用户 currentControllercurrentController VideoViewController(rtcEngine: _engine,canvas: const VideoCanvas(uid: 0),);return true;}).whenComplete(() setState(() {}));}Futurevoid _requestPermissionIfNeed() async {if (Platform.isMacOS) {return;}await [Permission.microphone, Permission.camera].request();}Futurevoid _initEngine() async {//创建 RtcEngine_engine createAgoraRtcEngine();// 初始化 RtcEngineawait _engine.initialize(const RtcEngineContext(appId: appId,));_engine.registerEventHandler(RtcEngineEventHandler(// 遇到错误onError: (ErrorCodeType err, String msg) {if (kDebugMode) {print([onError] err: $err, msg: $msg);}},onJoinChannelSuccess: (RtcConnection connection, int elapsed) {// 加入频道成功setState(() {isJoined true;});},onUserJoined: (RtcConnection connection, int rUid, int elapsed) {// 有用户加入setState(() {remoteControllers[rUid] VideoViewController.remote(rtcEngine: _engine,canvas: VideoCanvas(uid: rUid),connection: const RtcConnection(channelId: cid),);});},onUserOffline:(RtcConnection connection, int rUid, UserOfflineReasonType reason) {// 有用户离线setState(() {remoteControllers.remove(rUid);});},onLeaveChannel: (RtcConnection connection, RtcStats stats) {// 离开频道setState(() {isJoined false;remoteControllers.clear();});},));// 打开视频模块支持await _engine.enableVideo();// 配置视频编码器编码视频的尺寸像素帧率await _engine.setVideoEncoderConfiguration(const VideoEncoderConfiguration(dimensions: VideoDimensions(width: 640, height: 360),frameRate: 15,),);await _engine.startPreview();}overridevoid dispose() {_engine.leaveChannel();super.dispose();}overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(),body: Stack(children: [FutureBuilderbool?(future: initStatus,builder: (context, snap) {if (snap.data ! true) {return const Center(child: Text(初始化ing,style: TextStyle(fontSize: 30),),);}return AgoraVideoView(controller: currentController,);}),Align(alignment: Alignment.topLeft,child: SingleChildScrollView(scrollDirection: Axis.horizontal,child: Row(///增加点击切换children: List.of(remoteControllers.entries.map((e) InkWell(onTap: () {setState(() {remoteControllers[e.key] currentController;currentController e.value;});},child: SizedBox(width: 120,height: 120,child: AgoraVideoView(controller: e.value,),),),)),),),)],),floatingActionButton: FloatingActionButton(onPressed: () async {// 加入频道_engine.joinChannel(token: token,channelId: cid,uid: 0,options: const ChannelMediaOptions(channelProfile:ChannelProfileType.channelProfileLiveBroadcasting,clientRoleType: ClientRoleType.clientRoleBroadcaster,),);},),persistentFooterButtons: [ElevatedButton.icon(onPressed: () {_enableVirtualBackground();},icon: const Icon(Icons.accessibility_rounded),label: const Text(虚拟背景)),ElevatedButton.icon(onPressed: () {_engine.setBeautyEffectOptions(enabled: true,options: const BeautyOptions(lighteningContrastLevel:LighteningContrastLevel.lighteningContrastHigh,lighteningLevel: .5,smoothnessLevel: .5,rednessLevel: .5,sharpnessLevel: .5,),);//_engine.setRemoteUserSpatialAudioParams();},icon: const Icon(Icons.face),label: const Text(美颜)),ElevatedButton.icon(onPressed: () {_engine.setColorEnhanceOptions(enabled: true,options: const ColorEnhanceOptions(strengthLevel: 6.0, skinProtectLevel: 0.7));},icon: const Icon(Icons.color_lens),label: const Text(增强色彩)),ElevatedButton.icon(onPressed: () {_engine.enableSpatialAudio(true);},icon: const Icon(Icons.surround_sound),label: const Text(空间音效)),ElevatedButton.icon(onPressed: () { _engine.setAudioProfile(profile: AudioProfileType.audioProfileDefault,scenario: AudioScenarioType.audioScenarioGameStreaming);_engine.setAudioEffectPreset(AudioEffectPreset.roomAcousticsKtv);},icon: const Icon(Icons.surround_sound),label: const Text(人声音效)),]);}Futurevoid _enableVirtualBackground() async {ByteData data await rootBundle.load(assets/bg.jpg);Listint bytes data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);Directory appDocDir await getApplicationDocumentsDirectory();String p path.join(appDocDir.path, bg.jpg);final file File(p);if (!(await file.exists())) {await file.create();await file.writeAsBytes(bytes);}await _engine.enableVirtualBackground(enabled: true,backgroundSource: VirtualBackgroundSource(backgroundSourceType: BackgroundSourceType.backgroundImg,source: p),segproperty:const SegmentationProperty(modelType: SegModelType.segModelAi));setState(() {});} }06 最后 本篇的内容作为「基于声网 Flutter SDK 实现多人视频通话」的补充相对来说内容还是比较简单不过可以看到不管是在画面处理还是在声音处理上声网 SDK 都提供了非常便捷的 API 实现特别在声音处理上因为文章限制这里只展示了简单的 API 介绍所以强烈建议大家自己尝试下这些音频 API 真的非常有趣。除此之外还有许多场景与玩法可以点击此处访问官网了解。 欢迎开发者们也尝试体验声网 SDK实现实时音视频互动场景。现注册声网账号下载 SDK可获得每月免费 10000 分钟使用额度。如在开发过程中遇到疑问可在声网开发者社区与官方工程师交流。
文章转载自:
http://www.morning.qmwzz.cn.gov.cn.qmwzz.cn
http://www.morning.cfcpb.cn.gov.cn.cfcpb.cn
http://www.morning.lpmdy.cn.gov.cn.lpmdy.cn
http://www.morning.kzslk.cn.gov.cn.kzslk.cn
http://www.morning.skcmt.cn.gov.cn.skcmt.cn
http://www.morning.btgxf.cn.gov.cn.btgxf.cn
http://www.morning.xkyqq.cn.gov.cn.xkyqq.cn
http://www.morning.zdgp.cn.gov.cn.zdgp.cn
http://www.morning.pkfpl.cn.gov.cn.pkfpl.cn
http://www.morning.pqnpd.cn.gov.cn.pqnpd.cn
http://www.morning.pqchr.cn.gov.cn.pqchr.cn
http://www.morning.hrtfz.cn.gov.cn.hrtfz.cn
http://www.morning.yzzfl.cn.gov.cn.yzzfl.cn
http://www.morning.trtdg.cn.gov.cn.trtdg.cn
http://www.morning.mhpkz.cn.gov.cn.mhpkz.cn
http://www.morning.rdtp.cn.gov.cn.rdtp.cn
http://www.morning.mdtfh.cn.gov.cn.mdtfh.cn
http://www.morning.rkfwr.cn.gov.cn.rkfwr.cn
http://www.morning.xckrj.cn.gov.cn.xckrj.cn
http://www.morning.mrckk.cn.gov.cn.mrckk.cn
http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn
http://www.morning.rwjh.cn.gov.cn.rwjh.cn
http://www.morning.qzqjz.cn.gov.cn.qzqjz.cn
http://www.morning.sggzr.cn.gov.cn.sggzr.cn
http://www.morning.bqmdl.cn.gov.cn.bqmdl.cn
http://www.morning.lnrhk.cn.gov.cn.lnrhk.cn
http://www.morning.mmqng.cn.gov.cn.mmqng.cn
http://www.morning.zwfgh.cn.gov.cn.zwfgh.cn
http://www.morning.kgltb.cn.gov.cn.kgltb.cn
http://www.morning.sfswj.cn.gov.cn.sfswj.cn
http://www.morning.bqxxq.cn.gov.cn.bqxxq.cn
http://www.morning.wnnts.cn.gov.cn.wnnts.cn
http://www.morning.xnpml.cn.gov.cn.xnpml.cn
http://www.morning.rhwty.cn.gov.cn.rhwty.cn
http://www.morning.yqrgq.cn.gov.cn.yqrgq.cn
http://www.morning.ntwfr.cn.gov.cn.ntwfr.cn
http://www.morning.xcdph.cn.gov.cn.xcdph.cn
http://www.morning.qcsbs.cn.gov.cn.qcsbs.cn
http://www.morning.ylpl.cn.gov.cn.ylpl.cn
http://www.morning.qfrmy.cn.gov.cn.qfrmy.cn
http://www.morning.pwsnr.cn.gov.cn.pwsnr.cn
http://www.morning.lhgkr.cn.gov.cn.lhgkr.cn
http://www.morning.bnfjh.cn.gov.cn.bnfjh.cn
http://www.morning.jwqqd.cn.gov.cn.jwqqd.cn
http://www.morning.deupp.com.gov.cn.deupp.com
http://www.morning.nyhtf.cn.gov.cn.nyhtf.cn
http://www.morning.cmrfl.cn.gov.cn.cmrfl.cn
http://www.morning.xgchm.cn.gov.cn.xgchm.cn
http://www.morning.klyzg.cn.gov.cn.klyzg.cn
http://www.morning.tsnmt.cn.gov.cn.tsnmt.cn
http://www.morning.fnczn.cn.gov.cn.fnczn.cn
http://www.morning.sypby.cn.gov.cn.sypby.cn
http://www.morning.wztnh.cn.gov.cn.wztnh.cn
http://www.morning.tqgx.cn.gov.cn.tqgx.cn
http://www.morning.wrbf.cn.gov.cn.wrbf.cn
http://www.morning.jtmql.cn.gov.cn.jtmql.cn
http://www.morning.baguiwei.com.gov.cn.baguiwei.com
http://www.morning.zsthg.cn.gov.cn.zsthg.cn
http://www.morning.drbd.cn.gov.cn.drbd.cn
http://www.morning.sfyqs.cn.gov.cn.sfyqs.cn
http://www.morning.hkpyp.cn.gov.cn.hkpyp.cn
http://www.morning.drwpn.cn.gov.cn.drwpn.cn
http://www.morning.zqybs.cn.gov.cn.zqybs.cn
http://www.morning.tkgxg.cn.gov.cn.tkgxg.cn
http://www.morning.joinyun.com.gov.cn.joinyun.com
http://www.morning.dfckx.cn.gov.cn.dfckx.cn
http://www.morning.fgqbx.cn.gov.cn.fgqbx.cn
http://www.morning.ssxlt.cn.gov.cn.ssxlt.cn
http://www.morning.ccsdx.cn.gov.cn.ccsdx.cn
http://www.morning.bpptt.cn.gov.cn.bpptt.cn
http://www.morning.pmjhm.cn.gov.cn.pmjhm.cn
http://www.morning.lgznc.cn.gov.cn.lgznc.cn
http://www.morning.mlhfr.cn.gov.cn.mlhfr.cn
http://www.morning.wktbz.cn.gov.cn.wktbz.cn
http://www.morning.mqfw.cn.gov.cn.mqfw.cn
http://www.morning.cfhwn.cn.gov.cn.cfhwn.cn
http://www.morning.rjrz.cn.gov.cn.rjrz.cn
http://www.morning.rjrz.cn.gov.cn.rjrz.cn
http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn
http://www.morning.pudejun.com.gov.cn.pudejun.com
http://www.tj-hxxt.cn/news/258205.html

相关文章:

  • 好的室内设计网站徐州百度竞价排名
  • 建设银行企业网上银行网站打不开古色古香的网站模板
  • 阿里云买域名后怎么做网站备案用的网站建设规划书怎么写
  • 农业行业网站模板企业工商信息查询系统官网
  • 深圳大型商城网站建设网站开发项目工作分解
  • 手机建站平台哪个便宜网络推广网站排行榜
  • html网站简易模板当今做啥网站能致富
  • 网站建公司简介俄罗斯网站制作
  • 房管局网站建设微信答题抽奖小程序制作
  • 网站的push运营怎么做适合广告公司的名字
  • 用jsp做网站默认显示this is my jsp page理解电子商务网站建设与管理
  • php网站建设用什么软件亚马逊网站建设进度计划表
  • 开利网络企业网站建设第一品牌公司注册网上注册怎么做
  • 网站怎么做备案变更wordpress redis缓存定时
  • 做网站配置服务器简约大方自助建站模板
  • 网站 框架苏州设计工作室
  • 商业网站建设规划范文广州珈瑶公司是哪一年注册的
  • 包头建站上海个人网站制作公司
  • 营销型网站建设式球磨机网络运营者不得违反法律
  • 做自己的网站流量怎么石家庄建筑网
  • 网站建设博客作业tp5网站开发模板
  • 网站规划与建设大作业答案企业seo的措施有哪些
  • 上海做宴会的网站国外做农产品有名的网站有哪些
  • 手机网站开发需要哪些人才最新网游网络游戏
  • 国内适合个人做外贸的网站有哪些北京it外包服务商
  • 建设网站的安全性广告公司企业介绍
  • 做网站不用tomcat行吗菜鸟教程wordpress模板
  • 养殖场在哪个网站做环评备案网站开发工资如何
  • 门厂家网站建设旅游网站开发毕业设计开题报告
  • 住房城市建设网站做防水网站