`
阿尔萨斯
  • 浏览: 4268007 次
社区版块
存档分类
最新评论

Flash 平台音视频直播的实现

 
阅读更多
开发环境及工具准备:
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





分享到:
评论

相关推荐

    音视频-编解码-P2P流媒体系统能力研究.pdf

    "音视频-编解码-P2P流...本文对P2P流媒体系统的能力研究进行了详细的总结和说明,涵盖了音视频技术、编解码技术、P2P流媒体系统、媒体块传输能力研究、Flash Crowd研究、流媒体速度突然增加的能力研究等方面的知识点。

    Flash直播录播系统

    1、支持标准的Flash音视频编码,客户端接收无需下载播放器 2、友好的操作界面,无需专业培训即可快速实现网络直播 3、支持智能录像,录像文件直接发布供网络点播 4、支持插入字幕、台标,支持电脑、手机、机顶盒等...

    HTML5时代下RTMP等直播秒开实践.pdf

    HTML5技术支持多种音视频格式,具有更好的跨平台兼容性和安全性,而Flash技术主要用于桌面应用和Web应用等领域。 七、RTMP和HLS比较 RTMP和HLS都是直播流媒体协议,但它们有着不同的设计理念和应用领域。RTMP协议...

    FLASH影音在线播放器的设计与实现--功能实现[毕业论文+设计]

    绝对原创的毕业设计+毕业论文 这是其中一部分 还有一部是 FLASH影音在线播放器的设计与实现--界面实现.rar 设计部分每个都是完整的

    Flash P2P流媒体服务器系统

    在它被打开后将会自动连接到P2P服务器,而后将会通过P2P技术与同时观看视频的用户进行音视频数据交互,实现P2P串流。  点播或者伪直播可使用PHP SDK将音视频文件直接转化为可供P2P使用的数据,供观众端观看。  ...

    VC播放视频 声音 flash 串口 Scoket 托盘图标等工具类

    用VC6开发的一个工具类 可以在窗口上播放视频、播放声音(两者都是基于DirectShow)、播放flash(基于shockwaveflash控件)、串口收发数据(基于mscomm控件)、Socket收发数据(包括TCP UDP协议 服务端客户端)、托盘图标。...

    RTMP发布播放下载采集到的H264 FAAC编码音视频数据

    采用自封装RtmpLiveSDK实现音视频数据的采集、编码、发布、播放、下载一体化程序 1. 采用DirectShow实现摄像头视频数据和音频数据的采集 2. 采用x264/faac实现音视频的编码 3. 采用librtmp实现编码后音视频数据到...

    运营级视频集中管理平台功能概述.pdf

    客户端组件:CU(Client Unit)为客户端单元,采用 Flash 工具开发,负责为客户呈现系统所提供的服务,包括实现实时、历史音视频的解码播放和控制、实现用户管理、实现业务开通和管理面、实现系统维护等功能。...

    H264 FAAC音视频采集编码,并经由Rtmp发布测试代码

    2. 采用x264/faac实现音视频的编码 3. 采用librtmp实现编码后音视频数据到Rtmp流媒体服务器的发布 4. 实际上经由本机Rtmp流媒体服务器转发的延迟大概在0.5~2秒左右 可采用Adobe简单Flash播放器进行测试 ...

    足球比赛运动比赛体育赛事网络直播设备在线实时视频方案

    2. 中现 FLASH 网络视频直播机:用于将采集到的视频信号转换为网络视频流,并将其传输到流媒体管理服务器。 3. 流媒体管理软件:安装在网站中心服务器,用于管理和处理视频流。 4. 观看页面:用于观看视频直播的网页...

    FlashMediaEncoder2

    我用VC实现了FlashMediaEncoder的功能: ...2,音视频数据封装成RTMP包,并向FMS3发送直播流. 3,可录制,保存为MP4格式的文件存放在服务端, 用来点播. 4,使用FlashPlayer可观看直播内容,或点播录制内容.

    HTML5实现音频和视频嵌入的方法

    HTML5未出来之前,在线的音频和视频都是借助Flash或者第三方工具实现的,现在HTML5也支持了这方面的功能。在一个支持HTML5的浏览器中,不需要安装任何插件就能播放音频和视频。原生的支持音频和视频,为HTML5注入了...

    晨风Flash音乐播放器CMP4 b101108.rar

    MP3可视化效果(声音频谱),同步歌词(默认支持lrc歌词以及kmc卡拉ok歌词),高清视频和在线直播(h264/rtmp),自定义皮肤,加载各种插件等等,CMP4支持api的调用,可让用户实现更多自定义功能。 -b101108 1,修正如果...

    视频在线技术实现方案

    由于 流媒体技术的优越性,该技术广泛应用于视频点播、视频会议、远程教育、远程医疗和在线 直播系统中。 国内的服务器软件有 PPS(使用 PPS 协议)、AVServer(使用 HTTP 协议)、Vatata(使 用了 P2P 技术),国外...

    flash二维动画实验指导

    在计算机二维动画中,二维动画是指使用计算机生成的二维图形动画,通常使用矢量图形或 raster 图形来实现。二维动画的基本概念包括帧率、关键帧、补间动画等。 知识点 2:FLASH 二维动画软件 FLASH 是一款流行的...

    MP3听歌房,在线Flash音乐播放器 v1.0.rar

    MP3听歌房是一款免费的...MP3可视化效果(声音频谱),同步歌词(默认支持lrc歌词以及kmc卡拉ok歌词),高清视频和在线直播(h264/rtmp),自定义皮肤,加载各种插件等等,CMP4支持api的调用,可让用户实现更多自定义功能。

    flash毕业设计论文(摘要+参考文献)

    Flash 可以包含简单的动画、视频内容、复杂演示文稿和应用程序以及介于它们之间的任何内容。它不仅能够制作出许多眩目多彩的效果,只要你肯赋予它一定的情景,它也会模拟出现实生活中的场景。 Flash制作品非常小,...

    基于HTML实现影音娱乐网站_新易Flash播放系统 v1.0_flash10(HTML源码+数据集+项目使用说明).rar

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...

Global site tag (gtag.js) - Google Analytics