flash air 不使用FMS(flash media server)麦克风语音录制并保存录音文件到本地

  • flash 桌面应用程序

  • Flex SDK 使用 Apache Flex 1.14.1

  • 语音录制用 wav 格式转成 mp3格式

  • 参考:

    • 声音保存为 wav 格式: https://www.adobe.com/devnet/air/flex/articles/using_mic_api.html
    • wav数据转mp3: https://github.com/kikko/Shine-MP3-Encoder-on-AS3-Alchemy

主程序代码:

详细代码已上传至:https://github.com/Mr-hongji/VoiceRecording

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"creationComplete="windowedapplication1_creationCompleteHandler(event)"><fx:Script><![CDATA[import com.adobe.audio.format.WAVWriter;import flash.utils.getTimer;import mx.core.UIComponent;import mx.events.FlexEvent;import fr.kikko.lab.ShineMP3Encoder;private var _myFile:FileReference;private var _voice:ByteArray;private var mic:Microphone;protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void{trace(Microphone.isSupported + "");trace(Microphone.names.length);_myFile = new FileReference();mic =  Microphone.getEnhancedMicrophone();//mic = Microphone.getMicrophone();mic.rate = 44;Security.showSettings("2");mic.setLoopBack(false);if (mic != null) {mic.setUseEchoSuppression(true);mic.addEventListener(ActivityEvent.ACTIVITY, activityHandler);mic.addEventListener(StatusEvent.STATUS, statusHandler);}}private function startRecoder():void{_voice = new ByteArray();mic.addEventListener(SampleDataEvent.SAMPLE_DATA, sampleDataHandler);}private function sampleDataHandler(e:SampleDataEvent):void{_voice.writeBytes( e.data );}private function activityHandler(event:ActivityEvent):void {trace("activityHandler: " + event);}private function statusHandler(event:StatusEvent):void{trace("statusHandler: " + event);}private function stopRecoder():void{mic.removeEventListener(SampleDataEvent.SAMPLE_DATA, startRecoder);_voice.position = 0 ;//saveFile();convertToMP3();}protected function saveFile():void { var outputFile:File = File.desktopDirectory.resolvePath("123.wav"); var outputStream:FileStream = new FileStream(); var wavWriter:WAVWriter = new WAVWriter(); _voice.position = 0;  // rewind to the beginning of the sample wavWriter.numOfChannels = 1; // set the inital properties of the Wave Writer wavWriter.sampleBitRate = 16; wavWriter.samplingRate = 44100; outputStream.open(outputFile, FileMode.WRITE);  //write out our file to disk. wavWriter.processSamples(outputStream, _voice, 44100, 1); // convert our ByteArray to a WAV file. outputStream.close();} private var _mp3Encoder:ShineMP3Encoder;private var _timer: int ;private function convertToMP3(): void{var wavWrite:WAVWriter = new WAVWriter();wavWrite.numOfChannels = 1 ;wavWrite.sampleBitRate = 16 ;wavWrite.samplingRate = 44100 ;var wav:ByteArray = new ByteArray();_timer = getTimer();wavWrite.processSamples(wav, _voice, 44100 , 1 );trace( 'convert to a WAV used: ' + (getTimer() - _timer) + 'ms' );wav.position = 0 ;trace( 'WAV size:' + wav.bytesAvailable + ' bytes' );trace( 'Asynchronous convert to MP3 now' );_timer = getTimer();_mp3Encoder = new ShineMP3Encoder( wav );_mp3Encoder.addEventListener(Event.COMPLETE, onEncoded);_mp3Encoder.addEventListener(ProgressEvent.PROGRESS, onEncoding);_mp3Encoder.addEventListener(ErrorEvent.ERROR, onEncodeError);_mp3Encoder.start();}private function onEncoded(e:Event): void{trace( 'encode MP3 complete used: ' + (getTimer() - _timer) + 'ms' );_mp3Encoder.mp3Data.position = 0 ;trace( 'MP3 size:' + _mp3Encoder.mp3Data.bytesAvailable + ' bytes' );trace( 'press <key>: <s>ave to MP3 or <r>ecord again' );_mp3Encoder.saveAs(new Date().getTime() + ".mp3");}private function onEncoding(e:ProgressEvent): void{trace( 'encoding MP3... ' + Number (e.bytesLoaded / e.bytesTotal * 100 ).toFixed( 2 ) + '%' , true );}private function onEncodeError(e:ErrorEvent): void{trace( 'encode MP3 error ' + e.text);}]]></fx:Script><s:Button click="startRecoder()" label="开始录制"/><s:Button click="stopRecoder()" label="停止录制" x="200"/>
</s:WindowedApplication>

flash air 声音录制相关推荐

  1. html5调用系统声音1s响一次_HTML5声音录制/播放功能的实现代码

    html代码: 火星黑洞 var recorder; var audio = document.querySelector('audio'); function startRecording() { ...

  2. 为什么苹果录屏没有声音_苹果手机自带录屏功能,打开声音录制方法

    有时候我们会用苹果的自带录屏功能,可是录制出来的视频,只有视频没有声音,其实这并不是说苹果不能录制带声音的视频,只是没有打开声音录制的开关. 1,首先从屏幕上面下滑(iphone x及以上机型,其他机 ...

  3. 游戏创业团队的技术选型之Flash AIR

    文/德义 相信大家应该对Flash比较了解,但对于Flash AIR可能就不是那么熟悉了,尤其前阵子Adobe宣布将移动版Flash Player停止维护及开发,就让大家误认为Adobe Flash将 ...

  4. Ubuntu系统腾讯会议使用ffmpeg屏幕录制+声音录制

    1.腾讯会议for Linux简介 经过一段时间的开发,腾讯终于搞定了Linux系统下的腾讯会议,腾讯会议目前可以进行远程视频对话,桌面远程展示等等功能,与Windows差异并无两样.但是也存在着一些 ...

  5. 【转】Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系

    标签: Actionscript AS3 MXML Flex Flex Builder Flash Builder Flash AIR Flash Player   ActionScript Acti ...

  6. linux火狐网页无声音,解决Firefox在Ubuntu下播放Flash无声音的问题

    安装了Ubuntu Linux系统,在使用Firefox打开Flash是,光有图像没有声音,但播放MP3.视频等均正常,通过网上查找相关方法,一直无效,后来找到下面方法有效,留此作为存档. 打开&qu ...

  7. 手机游戏最新技术选型之Flash AIR

    文章不错,自己留着慢慢看. 相信大家应该对Flash比较了解,但对于Flash AIR可能就不是那么熟悉了,尤其前阵子Adobe宣布将移动版Flash Player停止维护及开发,就让大家误认为Ado ...

  8. Flash AIR App在苹果上发布的经验总结

    Flash AIR 编写的应用,能够在多平台发布, 前景还是很不错的. 这几天研究了一下发布成苹果版,有几个坑记录一下,方便以后其他人. 一. 在苹果上尽然不全屏 我的游戏需要全屏显示,在Androi ...

  9. flash AIR开发的IOS app上传APP Store报错:ERROR ITMS-90086:missing 64-bit support.

    在一次上传APP到  App Store的时候,突然遇到里这个问题,通过网络搜索发现相关的连接很多,所描述主要是XCODE中的设置问题,但是我们是用flash AIR 开发的,除了ANE扩展之外,没有 ...

最新文章

  1. ATS无法缓存QQ音乐的音频文件问题
  2. C语言作业界面,c语言作业20191011121223
  3. JS中的Replace方法
  4. 深度学习(四十)优化求解系列(2)简单理解神经网络求解过程-未完待续
  5. 关于JFace中的向导式对话框(WizardDialog类)
  6. 一个非常标准的Java连接Oracle数据库的示例代码
  7. Docker容器commit安装kali工具集
  8. 微信支付相关开发问题解决方案收集汇总
  9. linux reader使用方法,Linux Reader
  10. Linux网络服务-LAMP之Php基于Apache的模块实现
  11. java爬虫新闻网站_java爬虫 之 搜狐新闻爬虫(一)
  12. 编写第一个Windows Mobile程序
  13. 手把手教你 VSCode搭建STM32开发环境
  14. 亚马逊多账号操作如何判断关联
  15. 宾州州立大学帕克分校计算机科学,宾夕法尼亚州立大学帕克分校计算机专业好吗?...
  16. Xmarks被GFW屏蔽后,怎么同步?
  17. opencv 双目标定操作完整版
  18. zblog php 调用缩略图,zblog调用文章缩略图的方法
  19. 【Unity3D Shader编程】之九 深入理解Unity5中的Standard Shader (一)屏幕水幕特效的实现
  20. 花卉识别--五个类别的检测

热门文章

  1. 【软件推荐】电脑屏幕录制软件Bandicam(班迪录屏)
  2. WebRtc学习资料整理
  3. 光伏逆变器防逆流及汇流采集装置
  4. 丰收互联蓝牙key怎么开机_丰收互联商户服务操作手册
  5. Adobe的视频剪辑软件Premiere Pro (PR)2023版本下载与安装教程
  6. Zach Nelson(NetSuite CEO) is comming to beijing today,netsuite中国
  7. (附源码)springboot基于web儿童教育网站 毕业设计111123
  8. 内置MCU H323协议的会议录播一体机集成中控音频处理器
  9. 虚拟机实现服务器冗余,不使用VMware HA或VMotion保证VMware ESX虚拟机冗余
  10. Google Adwords API