·您当前的位置:首页 > 技术教程 > RED5教程 >

[RED5]Red5在线录制音视频源代码示例

时间:2013-07-31 17:08CuPlayer.com
[RED5]Red5在线录制音视频源代码示例,Red5录视频,Red5视频播放器

环境:RED5 0.8 WIN 安装版 ECLIPSE GALILEO 版 ACTIONSCRIPT 3.0

项目名称:webcam

----------------------------------------------------------------------------------------------

一、配置文件

1、red5-web.properties

配置内容:

webapp.contextPath=/webcam
webapp.virtualHosts=localhost, 127.0.0.1

2、red5-web.xml

配置内容:

默认的配置内容只需要改动一处即可:
<bean id="web.handler"
     class="red5.Application"
   singleton="true" />

注意:red5.Application 是我定义的应用类包路径,要与JAVA代码对应

3、web.xml

默认的配置内容只需要改动一下上下文名称即可

<context-param>
   <param-name>webAppRootKey</param-name>
   <param-value>/webcam</param-value>
</context-param>

注意:上下文名称是你的项目名也是发布路径

二、JAVA应用代码:

  1. package red5; 
  2.  
  3. import org.red5.server.adapter.MultiThreadedApplicationAdapter; 
  4. import org.red5.server.api.IConnection; 
  5. import org.red5.server.api.IScope; 
  6. import org.red5.server.api.Red5; 
  7.  
  8. import org.red5.server.stream.ClientBroadcastStream; 
  9.  
  10. public class Application extends MultiThreadedApplicationAdapter { 
  11.         
  12.         //create a instance for application 
  13.         public Application app; 
  14.         public IConnection conn; 
  15.         public IScope scope; 
  16.         public ClientBroadcastStream stream;//用来接受flash上传的stream的类 
  17.  
  18.         //start the recording 
  19.  
  20.         //客户端call这个function要传入流的名字 
  21.         public String startRecord(String streamName){ 
  22.            //start a new recording 
  23.            String fileName = String.valueOf(System.currentTimeMillis()); 
  24.                 app = new Application(); 
  25.                 conn = Red5.getConnectionLocal();//得到当前的连接 
  26.                 scope = conn.getScope();//一组连入服务器的客户 
  27.                 app.connect(conn,scope,null); 
  28.                 System.out.println("connection Established!"); 
  29.                 //注意stream name,在flash端也需要匹配 
  30.                 stream = (ClientBroadcastStream)app.getBroadcastStream(scope,streamName); 
  31.                 System.out.println("The publisher's name is: "+stream.getPublishedName()+", created at: "+stream.getCreationTime()); 
  32.                 System.out.println("the stream Name is: "+fileName); 
  33.                 try{ 
  34.                         stream.saveAs(fileName, false); 
  35.                 }catch (Exception e){ 
  36.                         System.out.println(e.toString()); 
  37.                 } 
  38.                 return fileName; 
  39.         } 
  40.         
  41.         //stop the recording 
  42.         public String stopRecord(){ 
  43.                 stream.stopRecording();//CuPlayer.com停止记录 
  44.  
  45.                 System.out.println("byte Recieved: "+stream.getBytesReceived()); 
  46.                 System.out.println("Recording Stopped!"); 
  47.                 return "Server stop recording!"; 
  48.         } 
  49.  

三、Actionscript 3.0 代码

  1. import flash.display.MovieClip; 
  2. import flash.events.*; 
  3. import flash.media.Camera; 
  4. import flash.media.Microphone; 
  5.  
  6. import flash.media.Video; 
  7. import flash.media.SoundCodec; 
  8. import flash.net.NetStream; 
  9. import flash.net.NetConnection; 
  10. import flash.display.StageAlign; 
  11. import flash.display.StageScaleMode; 
  12.  
  13. var resp:Responder=new Responder(onResult); 
  14. var _video:Video; 
  15. var _cam:Camera; 
  16. var _mic:Microphone; 
  17. var _nc:NetConnection; 
  18. var _ns:NetStream; 
  19.  
  20.  
  21. stage.align = StageAlign.TOP_LEFT; 
  22. stage.scaleMode = StageScaleMode.NO_SCALE; 
  23. createChildren(); 
  24. initConn(); 
  25.  
  26.  
  27. function createChildren():void { 
  28. _cam=Camera.getCamera(); 
  29. _cam.setQuality(144000, 85); 
  30. _cam.setMode(320, 240, 15); 
  31. _cam.setKeyFrameInterval(60); 
  32. _video=new Video(); 
  33. _video.attachCamera(_cam); 
  34. addChild(_video); 
  35. _mic=Microphone.getMicrophone(); 
  36. if(_mic != null){   
  37. _mic.setSilenceLevel(0,-1);   
  38. _mic.gain = 80
  39. _mic.setLoopBack(true); 
  40.  
  41. function initConn():void{ 
  42. _nc=new NetConnection(); 
  43. _nc.objectEncoding = ObjectEncoding.AMF3; 
  44. _nc.client=this
  45. _nc.addEventListener(NetStatusEvent.NET_STATUS , netStatus); 
  46. _nc.connect("rtmp://localhost/webcam/",true); 
  47.  
  48. function publish():void { 
  49. if(_nc.connected){ 
  50. _ns=new NetStream(_nc); 
  51. _ns.addEventListener(NetStatusEvent.NET_STATUS , netStatus); 
  52. _ns.attachCamera(_cam); 
  53. _ns.attachAudio(_mic); 
  54. _ns.publish("mystream", "live"); 
  55.  
  56. function netStatus (event:NetStatusEvent):void{ 
  57. if ( event.info.code == "NetConnection.Connect.Success"){ 
  58.    publish(); 
  59. function onResult(obj:Object):void{ 
  60.    ; 
  61.  
  62. b_start.addEventListener(MouseEvent.CLICK,btStart); 
  63. function btStart(Event:MouseEvent){ 
  64. _nc.call("startRecord",new Responder(getInfor,onState),"mystream"); 
  65.  
  66. function getInfor(reobj:Object):void { 
  67. trace("Server returning Infor: "+reobj); 
  68. function onState(err:Object):void { 
  69. trace("Connection result error: "+err); 
  70. b_stop.addEventListener(MouseEvent.CLICK,btStop); 
  71. function btStop(Event:MouseEvent){ 
  72. _nc.call("stopRecord",new Responder(getInfor,onState)); 

注意:FLASH只有一桢,b_start 与b_stop是我用MC做的一个按钮的实例名称。一个开始录制一个停止录制.

以上,即是全部的在线录制音\视频代码。

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器