开发环境及工具准备:
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为keyFramecam1.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

Flash 平台音视频直播的实现相关推荐

  1. 音视频开发(23)---音视频直播技术--10分钟搭建好直播平台

    音视频直播技术--10分钟搭建好直播平台 前言 今天给大家讲一下如何搭建最简单的音视频直播平台.在之前的文章中我已经给大家介绍过音视频直播技术架构,没看过的同学可以看一下.了解了直播的技术架构,我们就 ...

  2. 详解音视频直播平台搭建中的低延时

    详解音视频直播平台搭建中的低延时 音视频实时通讯的应用场景已经随处可见,从"吃鸡"的语音对讲.直播连麦.直播答题组队开黑,再到银行视频开户等.对于开发者来讲,除了关注如何能快速实现 ...

  3. 音视频直播流程及常见视频流协议介绍

    音视频直播流程介绍 常见视频流协议介绍 HLS HLS是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可支持流媒体的直播和点播,主要应用在 iOS 系统 ...

  4. 实时音视频直播带货中影响用户体验的Bug根因

    VOL 131 05 2020-06 今天距2021年209天 这是ITester软件测试小栈第131次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  5. linux视频应用程序开发,Linux平台音视频开发和音视频SDK应用

    Linux平台音视频开发和音视频SDK应用 下面介绍一款强大的音视频即时通讯平台给大家,它就是--云智真音视频SDK. 云智真提供一套跨平台的音.视频即时通讯解决方案,基于先进的H.264视频编码标准 ...

  6. 移动端实时音视频直播技术详解(一):开篇

    移动端实时音视频直播技术详解(一):开篇 1.引言 随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革.手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域 ...

  7. 百度云音视频直播服务(LSS)的使用流程

    音视频直播LSS(Live Streaming Service)是一个直播PaaS服务平台,旨在帮助企业及个人开发者快速搭建自己的直播平台及应用,关于LSS的相关介绍请采参考百度云官网指导文档:htt ...

  8. 数美科技创始人、CEO唐会军受邀出席2020音视频直播行业绿色内容生态共建峰会

    由南方报业传媒集团主办,南方都市报社承办的"清朗网络空间 践行时代担当-2020音视频直播行业绿色内容生态共建峰会"在京举行.数美科技创始人.CEO唐会军受邀出席峰会并参加了&qu ...

  9. 音视频---直播云厂商架构分析和选型研究完整版

    目录 ucloud(优刻得) qiniu(七牛) 3ttech(三体云) baishan(白山云) wangsu(网宿) chinacache(蓝汛) aliyun(阿里云) 腾讯云 百度云 其他 直 ...

最新文章

  1. Java 对象和类 的理解
  2. Web前端开发最佳实践(8):还没有给CSS样式排序?其实你可以更专业一些
  3. C# 错误!!容量超出了最大容量。参数名: capacity 这个是什么问题呢?
  4. 用Django开发Web应用程序异常
  5. 用电梯服务器怎样解电梯显示E34,默纳克品牌电梯故障代码e41怎么处理
  6. boost::statechart模块实现状态转换测试
  7. java servlet 多线程_java – 多线程GAE servlet来处理并发用户
  8. 网关 Kong 折腾笔记 - 相关技术清单
  9. 启动NameNode和DataNode
  10. 第二章密码学基础与应用备考要点及真题分布
  11. Spring核心组件的理解
  12. java cache组件_组件之Cache篇
  13. Bjui框架--日期选择器
  14. POJO类中属性必须使用包装数据类型
  15. NetKeeper720,能上QQ不能上网
  16. 【Cocos 3d】粒子特效的制作与使用
  17. contest18 CF788 div1 ooxxx oooox oooox
  18. IDT7206简明资料
  19. 解读《移动5G OpenUPF N4解耦设备规范》- 待更新
  20. git 知:贮藏与清理

热门文章

  1. UVA485 Pascal‘s Triangle of Death【大数】
  2. UVA12148 LA4214 Electricity【日期计算】
  3. Aizu0189 Convenient Location【Floyd算法】
  4. UVA10192 Vacation【LCS+DP+记忆化递归】
  5. Go语言结构应用实例
  6. UVA1585 UVALive3354 Score【水题】
  7. 认识服务器与web服务器
  8. utilities(matlab)—— minFunc
  9. Python 数据结构与算法——侏儒排序
  10. Trick(四)——翻转字符串的实现