加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex视频\声音录制及播放

发布时间:2020-12-15 04:56:30 所属栏目:百科 来源:网络整理
导读:va代码 ? ?xml?version= "1.0" ?encoding= "utf-8" ??? mx:Application?xmlns:mx= "http://www.adobe.com/2006/mxml" ?layout= "absolute" ?height= "312" ?width= "328" ?creationComplete= "init()" ?? mx:Script?? ?![CDATA[?? ?? //预定义声明 ?? ?? imp
va代码 ?

收藏代码

  1. <?xml?version="1.0"?encoding="utf-8"?>??
  2. <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"?layout="absolute"?height="312"?width="328"?creationComplete="init()">??
  3. <mx:Script>??
  4. ?<![CDATA[??
  5. ??//预定义声明??
  6. ??import?mx.controls.Alert;??
  7. ??import?mx.events.SliderEvent;??
  8. ????
  9. ??//创建一个基本的网络连接对象??
  10. ??private?var?vi:Video;??
  11. ??private?var?cam:Camera;??????//定义一个摄像头??
  12. ??private?var?inNs:NetStream;??
  13. ??private?var?outNs:NetStream;???
  14. ??private?var?nc:NetConnection;??
  15. ??//private?var?mic:Microphone;?//定义一个麦克风??
  16. ???
  17. ??private?var?_duration:Number;????????????//视频播放时间??
  18. ??private?var?playPosition:Number;?????????//定义播放进度位置??
  19. ??//private?var?soundPosition:Number;????//定义声音大小控制条的位置??
  20. ??private?var?flag:Boolean?=?false;??????????
  21. ??private?var?lastVideoName:String?=?"";???//视频录制后保存的名字??
  22. ??private?var?_url:String?=?"rtmp://127.0.0.1:1935/videoRec";??
  23. ????
  24. ??public?function?init():void{??
  25. ???setupCamera();????//初始化摄像头信息??
  26. ??}??
  27. ??//开始录制按扭点击??
  28. ??public?function?clickConnect():void{??
  29. ????nc?=?new?NetConnection();??
  30. ????nc.addEventListener(NetStatusEvent.NET_STATUS,nsHandler);??
  31. ?????????????nc.connect(_url);?????????//连接red5服务器??
  32. ??}????
  33. ??public?function?nsHandler(evt:NetStatusEvent):void{??
  34. ???if?(evt.info.code?==?"NetConnection.Connect.Success"){???????????//如果连接成功??
  35. ????playClick();??
  36. ????}else{??
  37. ?????Alert.show("连接失败");??????
  38. ????}??????
  39. ??}??
  40. ??//开始录制??
  41. ??public?function?playClick():void{?????
  42. ???if(vi?!=?null){??
  43. ????vi.clear();??
  44. ????vdisplay.removeChild(vi);??
  45. ????vi?=?new?Video();??
  46. ????vi.width?=?320;??
  47. ????vi.height?=?240;??
  48. ????vi.attachCamera(cam);??
  49. ???????vdisplay.addChild(vi);??
  50. ???}??
  51. ???outNs?=?new?NetStream(nc);?????????
  52. ???outNs.attachCamera(cam);???//把摄像头存入outNs??
  53. ???//outNs.attachAudio(mic);??????????//把麦克风存入outNs??
  54. ???lastVideoName?=?"red5RecordDemo_"?+?Math.random()+getTimer();??
  55. ???outNs.publish(lastVideoName,?"record");??
  56. ????????
  57. ???startRec.enabled?=?false;??
  58. ???stopRec.enabled?=?true;?????
  59. ??}????
  60. ??//停止录制??
  61. ??public?function?stopClick():void{??
  62. ???//关闭ns与red5的连接??
  63. ???outNs.close();???
  64. ???vi.clear();??
  65. ???vdisplay.removeChild(vi);????
  66. ???//锁定开始按键使其生效??
  67. ???startRec.enabled?=?true;??
  68. ???//锁定停止按键使其失效??
  69. ???stopRec.enabled?=?false;??
  70. ??}????
  71. ??//录制完以后播放??
  72. ??public?function?playLastVideo():void{??
  73. ?????if(nc!=null){??
  74. ??????//addEventListener(Event.ENTER_FRAME,onEnterFrame);??
  75. ???????inNs?=?new?NetStream(nc);??
  76. ????//定义onMetaData,获取视频相关数据??
  77. ????var?customClient:Object?=?new?Object();??
  78. ????customClient.onMetaData?=?function(metadata:Object):void{??
  79. ?????_duration?=?metadata.duration;?//获取视频持续时间??
  80. ?????t_sh.maximum?=?_duration;??
  81. ????}??
  82. ????inNs.client?=?customClient;??
  83. ????//删除原_localVideo,便于在录制和播放视频之间切换??
  84. ????vi?=?new?Video();??
  85. ????vi.width?=?320;??
  86. ????vi.height?=?240;??
  87. ????vi.attachNetStream(inNs);??
  88. ????vdisplay.addChild(vi);???
  89. ????inNs.play(lastVideoName+".flv");??
  90. ????addEventListener(Event.ENTER_FRAME,onEnterFrame);???
  91. ?????}??
  92. ??}??
  93. ????
  94. ??//初始化摄像头??
  95. ??public?function?setupCamera():void{??
  96. ???//启动摄像头??
  97. ???cam?=?Camera.getCamera();???
  98. ???if(cam?!=?null){??
  99. ????cam.addEventListener(StatusEvent.STATUS,onStatusHandler);??
  100. ????cam.setMode(320,240,30);??
  101. ????cam.setQuality(0,70);??//设置清晰度??
  102. ????vi?=?new?Video();??
  103. ????vi.width?=?320;??
  104. ????vi.height?=?240;??
  105. ????vi.attachCamera(cam);??
  106. ????vdisplay.addChild(vi);??
  107. ??
  108. ???}??
  109. //???mic?=?Microphone.getMicrophone();??
  110. //???if(mic?!=?null){??
  111. //????mic.setSilenceLevel(0,-1);?//设置麦克风保持活动状态并持续接收集音频数据??
  112. //????mic.gain?=?80;?//设置麦克风声音大小??
  113. //???}??
  114. ??}??
  115. ????
  116. ??private?function?onStatusHandler(event:StatusEvent):void{??
  117. ???if(!cam.muted){???//判断摄像头存不存在??
  118. ????startRec.enabled?=?true;??
  119. ???}else{??
  120. ????Alert.show("错误:无法链接到活动摄像头!")??
  121. ???}??
  122. ???cam.removeEventListener(StatusEvent.STATUS,onStatusHandler);??
  123. ??}??
  124. ????
  125. ??public?function?thumbPress(event:SliderEvent):void{??
  126. ??????inNs.togglePause();??
  127. ???removeEventListener(Event.ENTER_FRAME,onEnterFrame);??
  128. ??}??
  129. ??private?function?thumbChanges(event:SliderEvent):void{??
  130. ????playPosition?=?t_sh.value;????????//当前播放视频进度的位置=当前播放进度条的位置??
  131. ????inNs.seek(playPosition);???
  132. ????addEventListener(Event.ENTER_FRAME,onEnterFrame);??
  133. ??}??
  134. ??private?function?thumbRelease(event:SliderEvent):void{??????//释放mouse后执行??
  135. ???inNs.seek(playPosition);?????????????????????????????//查找当前进度条位置??
  136. ???inNs.togglePause();??
  137. ??????addEventListener(Event.ENTER_FRAME,onEnterFrame);??
  138. ??}??
  139. ??public?function?onEnterFrame(event:Event):void{??
  140. ???if(_duration?>?0?&&?inNs.time?>?0){?//如果视频时间和正在播放视频的时间大于0??
  141. ????t_sh.value?=inNs.time;??
  142. ????lbtime.text?=?formatTimes(inNs.time)?+?"?/?"+?formatTimes(_duration);??
  143. ???}?????
  144. ???if(formatTimes(inNs.time)==formatTimes(_duration)){????//如果播放完毕,则关毕流,初始化摆放时间的label??
  145. ??????if(flag==true){????????//如果是加载,就不执行?||false代表是加载,true代表是播放结束??
  146. ?????removeEventListener(Event.ENTER_FRAME,onEnterFrame);??
  147. ?????inNs.close();??????
  148. ?????lbtime.text?=?"0:00?/?"+?formatTimes(_duration);??
  149. ????}??
  150. ???????setTimeout(function():void{flag?=?true;},1000);??
  151. ???}??
  152. ???}??
  153. ??//时间格式操作??
  154. ??private?function?formatTimes(value:int):String{??
  155. ???var?result:String?=?(value?%?60).toString();??
  156. ???if?(result.length?==?1){??
  157. ????result?=?Math.floor(value?/?60).toString()?+?":0"?+?result;??
  158. ???}?else?{??
  159. ????result?=?Math.floor(value?/?60).toString()?+?":"?+?result;??
  160. ???}??
  161. ???return?result;??
  162. ??}????
  163. ??//声音音量控制??
  164. //??private?function?sound_thumbChanges(event:SliderEvent):void{??
  165. //???soundPosition?=?th_sound.value;??
  166. //??}??
  167. //??private?function?sound_thumbRelease(event:SliderEvent):void{??
  168. //???vdisplay.volume?=?soundPosition;??
  169. //??}??
  170. ??
  171. ?]]>??
  172. </mx:Script>??
  173. ?<mx:VideoDisplay?x="0"?y="0"?width="324.5"?height="240"?id="vdisplay"/>??
  174. ?<mx:Button?x="10"?y="250"?label="开始录制"?id="startRec"?click="clickConnect()"?enabled="false"?/>??
  175. ?<mx:Button?x="10"?y="280"?label="停止录制"?width="70"?id="stopRec"?click="stopClick()"?enabled="false"?/>??
  176. ?<mx:Button?x="253"?y="268"?label="播放"?click="playLastVideo()"??/>??
  177. ?<mx:HSlider?x="98"?y="248"?width="143"?id="t_sh"?thumbPress="thumbPress(event)"?thumbRelease="thumbRelease(event)"?change="thumbChanges(event)"/>??
  178. ?<mx:Label?x="237"?y="242"?text="0:00/0:00"?width="89"?textAlign="center"?height="18"?id="lbtime"/>??
  179. ?<!--mx:HSlider?x="98"?y="278"?width="91"?id="th_sound"?minimum="0"?maximum="1"?value="{vdisplay.volume}"?change="sound_thumbChanges(event)"?thumbRelease="sound_thumbRelease(event)"/>??
  180. ?<mx:Label?x="187"?y="270"?text="sound"?height="20"?width="44"?textAlign="center"/-->???
  181. </mx:Application>??
  182. ??
  183. 注:??
  184. ??
  185. 1.red5做服务器,后面代码其实什么也没有,最关键的还是前端flex代码,当然还有些配置问题,相信做过red5??simple???demo的朋友应该知道,在这就不一一细说了.??
  186. ??
  187. 2.文章中注释地方是音频的录制,因为本机上无麦克风所以就屏掉了。如果要加上些功能,去掉注释即可。??
  188. ??
  189. 3.以下是前端显示图??




  • 描述: 前端显示图

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读