开发环境及工具准备:
Adobe Flex Builder 3
FlashMeidaServer 2 及以上(简称:FMS 本人有一个FMS2破解版,需要的话联系我)
技能准备:
ActionScript 3 (简称:AS,本文中代码为AS)
本功能的实现方式基于FMS为主,ActionScript为辅,双方交互的原则,示意图如下:
描述:教师端采集本地摄像头视频及MIC音频通过AS发布到FMS,学生端通过AS连接FMS服务器或者教师传输的音视频数据进行播放。至此为止,即可实现教师的音视频数据共享(即直播效果)。
具体实现(教师端):
STEP1:在Flex Application 的creationComplete事件调用init方法
private var conn:NetConnection = new NetConnection();//用来连接FMS
private var stream:NetStream = null;//盛放音视频数据
//FMS连接串(例如:rtmp://192.168.1.101/fmsapp)
//其中需要在FMS_HOME/applications/新建一个fmsapp的文件夹
private var fms:String = "";
private function init():void {
//轨道通信,必须要设置
conn.objectEncoding = ObjectEncoding.AMF0 ;
//共享对象轨道通信设置
SharedObject.defaultObjectEncoding = ObjectEncoding.AMF0;
//连接FMS服务器
conn.connect(fms) ;
//连接FMS结果事件处理器
conn.addEventListener(NetStatusEvent.NET_STATUS,connectFMS) ;
}
STEP2:连接FMS成功后,发布音视频数据到FMS服务端
private function connectFMS(e:NetStatusEvent):void {
var result:String = e.info.code ;//连接FMS的返回代码
switch(result) {
case "NetConnection.Connect.Success"://连接FMS成功
playStream();//开发传送音视频数据
break;
case "NetStream.Play.StreamNotFound":
Alert.show( "视频流没有找到");
break;
default :
Alert.show( "连接服务器失败,检查网络环境");
break ;
}
}
public var cam1:Camera = null;//摄像头对象
private var mir:Microphone = null;//麦克对象
private function playStream():void {
stream = new NetStream(conn);//创建于FMS连接相关的音视频数据流对象
cam1 = Camera.getCamera("0");//获得默认摄像头
cam1.setMode(320,240,15); //经试验:320*240效果较佳而占用网络流量较小 15为keyFrame
cam1.setQuality(100 * 1000,90); //100*1000为上传带宽 90为图像质量
mir = Microphone.getMicrophone();//获得麦克对象
mir.setUseEchoSuppression(true);//抑制回声
stream.attachAudio(mir);//将音频加入到流中
stream.attachCamera(cam1);//将视频加入到流中
vd.attachCamera(cam1);//在Flex Application中放一个VideoDisplay对象,用来本地观看图像
stream.publish("conf","live");//将音视频数据发布到FMS服务器上,流名称为:conf 发布类型为:live(实时)
}
至此:教师已将音视频数据发布到FMS。
需要注意的点:摄像头对象的分辨率设置,这样会直接影响到图像的清晰度和传送数据量的大小。
接下来将由学生端对此数据进行读取
STEP1:如教师端STEP1进行相关设置
STEP2:成功连接FMS服务器后,进行音视频数据播放(学生端playStream方法的实现)
stream = new NetStream(conn);//学生端的流对象 conn为NetConnection对象
//学生端的缓冲时间。此参数很重要,很多朋友反应:播放视频不流畅。
//要明确一个观点:没有绝对的实时直播,所谓的直播其实就是在不断的播放缓冲区的数据
stream.bufferTime = 15;
//按照道理来说这里应该是检测缓冲区的代码
//但本程序为展示直播的核心将此代码略掉,有兴趣的朋友可以问我
v = new Video();
v.attachNetStream(stream); //将音视频流附加到video对象中
v.width = vd.width;
v.height = vd.height;
v.smoothing = true;
vd.addChildAt(v,1);//VideoDisplay通过对Video的添加来播放音视频流
stream.play("conf");//播放教师发布的conf流
至此,学生将实现音视频流的播放。
需要注意的点:缓冲区的设置,实际应用中应根据实际客户带宽来设置缓冲区大小
大家最好找个局域网环境测试下,最好不要在本机测试,这会隐藏很多问题,有什么疑问大家尽管留言!
原文地址:http://mhqawjh.iteye.com/blog/726913
分享到:
相关推荐
1、支持标准的Flash音视频编码,客户端接收无需下载播放器 2、友好的操作界面,无需专业培训即可快速实现网络直播 3、支持智能录像,录像文件直接发布供网络点播 4、支持插入字幕、台标,支持电脑、手机、机顶盒等...
绝对原创的毕业设计+毕业论文 这是其中一部分 还有一部是 FLASH影音在线播放器的设计与实现--界面实现.rar 设计部分每个都是完整的
在它被打开后将会自动连接到P2P服务器,而后将会通过P2P技术与同时观看视频的用户进行音视频数据交互,实现P2P串流。 点播或者伪直播可使用PHP SDK将音视频文件直接转化为可供P2P使用的数据,供观众端观看。 ...
用VC6开发的一个工具类 可以在窗口上播放视频、播放声音(两者都是基于DirectShow)、播放flash(基于shockwaveflash控件)、串口收发数据(基于mscomm控件)、Socket收发数据(包括TCP UDP协议 服务端客户端)、托盘图标。...
采用自封装RtmpLiveSDK实现音视频数据的采集、编码、发布、播放、下载一体化程序 1. 采用DirectShow实现摄像头视频数据和音频数据的采集 2. 采用x264/faac实现音视频的编码 3. 采用librtmp实现编码后音视频数据到...
2. 采用x264/faac实现音视频的编码 3. 采用librtmp实现编码后音视频数据到Rtmp流媒体服务器的发布 4. 实际上经由本机Rtmp流媒体服务器转发的延迟大概在0.5~2秒左右 可采用Adobe简单Flash播放器进行测试 ...
我用VC实现了FlashMediaEncoder的功能: ...2,音视频数据封装成RTMP包,并向FMS3发送直播流. 3,可录制,保存为MP4格式的文件存放在服务端, 用来点播. 4,使用FlashPlayer可观看直播内容,或点播录制内容.
HTML5未出来之前,在线的音频和视频都是借助Flash或者第三方工具实现的,现在HTML5也支持了这方面的功能。在一个支持HTML5的浏览器中,不需要安装任何插件就能播放音频和视频。原生的支持音频和视频,为HTML5注入了...
MP3可视化效果(声音频谱),同步歌词(默认支持lrc歌词以及kmc卡拉ok歌词),高清视频和在线直播(h264/rtmp),自定义皮肤,加载各种插件等等,CMP4支持api的调用,可让用户实现更多自定义功能。 -b101108 1,修正如果...
由于 流媒体技术的优越性,该技术广泛应用于视频点播、视频会议、远程教育、远程医疗和在线 直播系统中。 国内的服务器软件有 PPS(使用 PPS 协议)、AVServer(使用 HTTP 协议)、Vatata(使 用了 P2P 技术),国外...
MP3听歌房是一款免费的...MP3可视化效果(声音频谱),同步歌词(默认支持lrc歌词以及kmc卡拉ok歌词),高清视频和在线直播(h264/rtmp),自定义皮肤,加载各种插件等等,CMP4支持api的调用,可让用户实现更多自定义功能。
Flash网站之所以如此受到欢迎,究其原因是它所生成的.swf文件相对较小,采用的是矢量图,于网上传播速度快,而且还能够制作出优美的动画效果和超强的交互式的图形用户界面应用程序,还可以添加声音和视频等等。...
CMP4是一款免费的在线...MP3可视化效果(声音频谱),同步歌词(默认支持lrc歌词以及kmc卡拉ok歌词),高清视频和在线直播(h264/rtmp),自定义皮肤,加载各种插件等等,CMP4支持api的调用,可让用户实现更多自定义功能。
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...
flash_魔法表情 实现qq 魔法表情功能
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...
采用自封装RtmpLiveSDK实现视频聊天室演示功能 ...2. 采用x264/faac实现音视频的编码 3. 采用librtmp实现编码后音视频数据到Rtmp流媒体服务器的发布 4. 采用Flash技术实现Rtmp流媒体数据的实时播放
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...