`

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

 

 

 

 

分享到:
评论

相关推荐

    音视频直播技术的总结,音频直播技巧和方法

    音视频直播技术是现代互联网应用中的重要组成部分,广泛应用于在线教育、娱乐、会议等领域。本文将深入探讨音视频直播中的关键技术点,包括流媒体协议、关键参数以及RTMP和RTSP等协议的工作原理。 首先,流媒体协议...

    flash adobe air 采集音视频 软件

    描述中提到的“flash adobe air 开发的财经音视频,rtmp推送”,暗示了该软件可能被用于财经领域的实时音视频直播或录制。RTMP(Real-Time Messaging Protocol)是一种广泛应用于在线流媒体传输的协议,它允许将音...

    HTML5实现音视频播放器

    HTML5是现代网页开发的关键技术之一,特别是在实现音视频播放方面。这个项目专注于创建一个功能齐全的网页版音视频播放器,它集成了多种高级功能,以提供优秀的用户体验。以下是对这个项目中涉及的主要知识点的详细...

    android使用RTMP实现录屏直播推送音视频.zip

    在Android平台上,实现录屏直播并推送音视频到服务器,通常涉及到多个技术栈的整合,包括屏幕捕获、音视频编码、网络传输等。这里主要介绍如何使用RTMP(Real-Time Messaging Protocol)协议来实现这一功能,以及...

    Adobe Stratus 与 php + Mysql 实现p2p的语音视频聊天

    文件`library.swf`可能是包含Flash客户端代码的SWF文件,它实现了与Adobe Stratus的交互以及音视频的处理。而`catalog.xml`可能是描述Flash组件或库的文件,用于构建Flash客户端界面。 总之,通过Adobe Stratus、...

    Flash直播录播系统

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

    FLASH影音在线播放器

    【FLASH影音在线播放器设计与实现】\n\n在当今互联网时代,随着宽带网络的普及,用户对于在线观看音频和视频的需求日益增长。基于这一背景,"FLASH影音在线播放器"的设计与实现成为了一个重要的课题。这篇论文主要...

    android使用RTMP实现录屏直播推送音视频

    在Android平台上实现录屏直播并推送音视频,通常涉及到多个技术环节,包括屏幕录制、音频录制、RTMP协议以及服务器配置。以下是对这些知识点的详细解释: 1. **Android屏幕录制**: Android系统提供了`Media...

    flash 语音聊天思路

    1. **Flash Player**: Flash Player是Adobe开发的一个浏览器插件,曾经广泛用于播放网页上的多媒体内容,包括音频和视频。在本项目中,它是实现语音聊天的基础平台。 2. **ActionScript**: ActionScript是Flash的...

    万能音视频转换软件

    《万能音视频转换软件:全面解析与应用指南》 音视频转换软件是数字时代中极为重要的工具之一,尤其在多媒体文件的...无论你是普通用户还是专业工作者,都能从中受益,实现音视频文件在各种设备和平台之间的无缝对接。

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

    《FLASH影音在线播放器的设计与实现--功能实现》是一篇深度探讨如何构建一款基于Flash技术的在线媒体播放器的毕业论文。这篇论文结合了实际的设计与实现过程,旨在阐述如何利用Flash技术为用户提供流畅、便捷的影音...

    基于flash的.FLV格式网页视频播放器,可全屏播放和静音,兼容主流浏览器

    在互联网技术发展初期,Flash是实现网页多媒体内容展示的重要工具,特别是对于视频播放而言。本文将深入探讨基于Flash的.FLV格式网页视频播放器,它如何实现全屏播放、静音功能,以及如何确保与主流浏览器的兼容性。...

    客服FLASH视频直播功能需求分享.pdf

    - 直播员可切换聊天用户,检测网络连接,预览和设置音视频。 - 直播员可查看在线用户IP,断开或屏蔽特定用户,记录操作日志。 - 直播员可播放背景音乐,设置快捷回复,暂停或恢复直播。 - 网管员设置视频窗口...

    FLV Extract1.62分离音视频单文件

    - **格式转换**:通过分离后再转换,可以实现不同格式间的转换,如将FLV音视频转换成MP3或MP4。 6. **注意事项** - 软件仅支持FLV和F4V格式,对于其他格式的文件,需先进行格式转换。 - 分离过程中应确保源文件...

    Flash Media Live Encoder 3.2 简体中文版和一分钟搞定视频直播服务器搭建

    总的来说,Flash Media Live Encoder 3.2 简体中文版为中国的直播创作者提供了一个便捷、高效的工具,帮助他们轻松实现高质量的视频直播。配合压缩包内的基本配置文件和测试页面,用户可以快速搭建起自己的视频直播...

    基于Android的视频直播系统的设计与实现.pdf

    在Android平台上构建视频直播系统,首要任务是理解和适应手机直播的特性,包括硬件配置、平台架构以及音视频处理需求。关键在于采用FFmpeg这一强大的音视频编码软件,对原始的音频和视频数据进行压缩处理,以减少...

    公司晚会年会活动现场网络直播实时在线视频直播平台

    【公司晚会年会活动现场网络直播实时在线视频直播平台】是一种技术解决方案,用于将活动现场的视频内容实时传输到互联网上,让不能亲临现场的人也能观看。这种系统通常由四个核心部分构成: 1. **前端采集设备**:...

    音视频编码格式汇总

    ### 音视频编码格式汇总与技术解析 #### 一、音频编解码格式概述 音频编解码格式是指用于音频数据压缩与解压缩的技术标准。这些格式被广泛应用于各种应用场景中,例如网络传输、多媒体播放等。下面我们将详细介绍...

    通过FMS实现时时视频聊天(Flash|Flex)源码

    1. **Flash Media Server (FMS)**:FMS提供实时的流媒体服务,支持RTMP(Real Time Messaging Protocol)协议,使得Flash Player和Flex应用能够进行低延迟的音视频传输。它还支持HTTP直播和动态自适应流媒体,确保...

    flash类声音素材爆炸声

    首先,“Flash类声音素材”是指专门为Adobe Flash这种交互式矢量图形和富媒体播放平台设计的声音资源。Flash支持多种音频格式,如WAV、MP3、M4A等,这些格式的音频文件可以被嵌入到Flash项目中,用于背景音乐、音效...

Global site tag (gtag.js) - Google Analytics