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

山东电子商务网站建设重庆宣传片制作

山东电子商务网站建设,重庆宣传片制作,wordpress 政企,福州网站建设加推广前言 最近在开发一款即时通讯(IM)的聊天App#xff0c;在实现语音消息功能模块后#xff0c;写下该文章以做记录。 注#xff1a;本文不提供相关图片资源以及IM聊天中具体实现代码#xff0c;单论语音功能实现思路 需求分析 比起上来直接贴代码#xff0c;我们先来逐步…前言 最近在开发一款即时通讯(IM)的聊天App在实现语音消息功能模块后写下该文章以做记录。 注本文不提供相关图片资源以及IM聊天中具体实现代码单论语音功能实现思路 需求分析 比起上来直接贴代码我们先来逐步分析一下一个正常语音消息的需求是如何的 长按语音按钮录制用户语音内容 松开按钮后发送语音消息至目标 从上可得我们需要针对于用户的语音 录制 播放 方面下手 Flutter_sound 目标地址https://pub.dev/packages/flutter_sound 简介Flutter_sound 是一款可以处理用户声音库 通过该插件的GitHub示例中可以了解到实现录制语音和播放的相关API为 FlutterSoundPlayer下的startRecorder方法 (录制) FlutterSoundPlayer下的startPlayer方法 (播放) 实现思路 初始化Flutter_Sound配置 定义相关变量 FlutterSoundPlayer flutterSoundPlayer FlutterSoundPlayer(); //声音播放器 FlutterSoundRecorder recordSound FlutterSoundRecorder(); //声音录制器 Timer? recordTimer // 计时器用来控制录音时长; String timeString “” // 用来做回显时长 List voicePlayList []; //用来控制语音播放列表 String voicePath “”; //临时储存语音文件路径 初始化声音配置方法 /** author Marinda* date 2023/6/26 15:25* description 初始化声音设置*/initSoundSetting() async{await flutterSoundPlayer.openPlayer();await recordSound.openRecorder();}录制用户语音 /** author Marinda* date 2023/6/26 15:31* description 录音*/recordSound() async{PermissionStatus status await Permission.microphone.request();int time 0;//权限校验if (status ! PermissionStatus.granted) throw RecordingPermissionException(麦克风权限未授权);var dir await getExternalStorageDirectory();Uuid uuid Uuid();String filePath p.join(dir?.path ?? ,uuid.v4().mp4);File file File(filePath);file.openWrite();state.voicePath.value filePath;Log.i(录音保存的位置${filePath});await state.recordSound.startRecorder(//目标文件位置toFile: filePath,//这里可以认为是那种源codec: Codec.aacMP4,//采样率bitRate: 8000,//为1即可numChannels: 1);recordTimer Timer.periodic(Duration(seconds: 1), (_) {time;timeString time.toString();});}播放实现 /** author Marinda* date 2023/10/7 14:28* description 播放语音信息 目前先做本地语音缓存处理*/playVoice(String voiceUrl) async{Uint8List uint8list Uint8List(0);//视为网络httpif(voiceUrl.startsWith(http)){uint8list ...获取MP4文件二进;}else{File voiceFile File(voiceUrl);//如果不存在if(!voiceFile.existsSync()){BotToast.showText(text: 语音播放失败);return;}uint8list await voiceFile.readAsBytes();}//如果存在则进行移除播放if(voicePlayList.contains(tag)){voicePlayList.remove(tag);await flutterSoundPlayer.stopPlayer();return;}//加入语音信息队列voicePlayList.add(tag);await flutterSoundPlayer.startPlayer(fromURI: data.expandAddress,fromDataBuffer: uint8list,codec: Codec.aacMP4,sampleRate: 8000,numChannels: 1,whenFinished: (){// 播放完毕state.voicePlayList.remove(tag);});} 结束录制 /** author Marinda* date 2023/6/26 15:33* description*/stopRecordSound() async{await recordSound.stopRecorder();if(recordTimer!.isActive){recordTimer!.cancel();recordTimer null;}// 这里实现你的语音消息发送逻辑Log.i(停止录制);timeString.value ;voicePath.value ;}结束语 难度不大主要是围绕着录音文件进行处理 值得注意的点是在播放录音文件时 记得获取目标的二进制流一并携带至startPlayer方法fromDataBuffer字段中 否则可能会出现无法播放或程序未响应等危险情况 感谢你的观看
http://www.sczhlp.com/news/172548/

相关文章:

  • 中文单页面网站模板免费下载源码网站git
  • 江门网站制作专业开一个做网站的公司赚钱吗
  • 网站移动端权重怎么做个人网站推广 公司
  • 网站设计哪家更好惠州网站建设哪里有
  • 廊坊网站关键词排名注释网站开发
  • 做我姓什么的网站查网站备案名称
  • 邢台提供网站设计公司哪家专业淮北发布
  • 做网站seo优化网站建设咨询服务
  • 免费奖励代码网站如何接做网站编程的生意
  • 如何做医疗网站的专题页江西新农村建设权威网站
  • 网站建设对信息公开的作用购物商城外贸网站建设
  • 广州百度网站搭建深圳福永
  • 凡科2网站需要备案吗姑苏区网络推广服务
  • 天津网站建设的公司哪家好dz还是wordpress
  • 贵阳网站制作朝阳网站
  • 不规则网站模板东莞市企业名录
  • 一般制作一个网站要多久微信推广平台哪家好
  • 四川网站建设seo优化制作论文招聘网站的
  • 正规网站建设哪家好共创福州网站建设
  • 苏州网站建设找哪家做公司网站报价
  • 四川网站设计成功柚米科技公司网站修改 优帮云
  • 沂南网站设计做微网站哪家好
  • 网络营销导向网站建设的基础是什么上海外贸出口代理公司
  • 天空人体网站怎么做上海关键词排名搜索
  • 完整教程:Excel to JSON 插件 2.4.0 版本更新
  • Ai元人文:人文逻辑与规则逻辑的统一
  • 视频网站建设wordpress媒体文档
  • 柳州网站seoui设计就业方向
  • 做网站需要什么专业方向的员工直播网站开发步骤
  • 陕西企业网站建设网站建设如何实现检索功能