六、Flash Media Server3.5流传输实时视频

初学者系列教程的第六篇。此文告诉你如何组合使用Adobe Flash cs4 Professional和Adobe Flash Media Live Encoder3和Adobe Flash Media Server3.5创建来自网路摄影等的实施视频流。

作为一个乐于花费大量的时间在Flash上的Flash教师,我喜欢告诉我的学生如何在Flash中使用网络摄影。因为这是一个最易学习且立刻就能见到回报的内容。虽然如此,但不可避免的产生了另一个问题:我能把直播以流的方式传输出去吗?

回答这个相当棘手的难题取决于观众,如果我正面对的是一组深刻理解ActionScript的高级用户的话,答案就是"这是一个小麻烦,但并不是特别难完成"。对于其他的人群而言,答案是"你真的不想触及它".

直到Flash Media Server3.5的发布,同样还有一点灰色地带:Flash装配了一套可以被连在一起构成一个实时视频流程序的通信组件。然后伴随着Flash cs4和Flash Media Server3.5的发布这些组件消失了。你会想我可能会因为我的灰色地带离开了我而感到沮丧。现在当被问到流传输实时视频的时候,我的回答是"你能点击一下鼠标和输入一行代码吗?"

在这个练习中我们将做的工作如下:

***使用网络摄影和Flash Media Live Encoder3 创建一个流。注意到Flash Media Live Encoder(FME)仅有Windows版本,这也就意味着没有安装Windows的Mac用户是不能使用它的。

***使用FLVPlayback组件和一行ActionScript代码向浏览器提供流

使用FLASH MEDIA LIVE ENCODER 3

不时有神奇的软件问世。不可避免的是公司面向公众推出测试版,你禁不住在这个过沉重某个时刻思考"它真的很棒,希望我能买的起"。当我第一次尝试Flash Media Live Encoder(FME)的时候就有这种感觉。如果不是知道真相,我仍然很难相信如此强大的软件竟然是免费赠品。

它的定位很清晰:捕获音视频种子,或编码或实时流方式传输出去,在这部分练习中,我将带你了解FME界面,同时使用它生成一个FLV。谨记这是一个简单浅显的练习,我不会深入讲解使用FME。我的同事Greg Hamer已经在Webcasting live video with Flash Media Live Encoder对这一过程做了很好的概述.

设置FLASH MEDIA LIVE ENCODER

按照如下步骤对Flash Media Live Encoder做初始配置

1.确保你的电脑装配有一个摄像头(麦克风可选),然后启动Flash Media Live Encoder。打开后(见图1)你会看到界面被划分成两个截然不同的区域:左侧是输入右侧是输出。如果你不喜欢区分输入和输出的视图,取消选择Output Video选项。这样就可以移除右侧的预览,但对最终的文件没有任何影响。

图一.Flash Media Live Encoder界面(单击放大图片)

输入区域又被划分成音频和视频子区域,在此区域中你可以调整设置成优先捕获或有限广播。如果你对如何设置不确定,选择三个预置弹出菜单之一。这样并不会影响尝试此程序,因此让我们创建一个简单的捕获。

2.从弹出菜单中选择你的网络摄像头。我用的是带有内置摄像头的Mac笔记本,因此我只能选择USB Video Device。当我的电脑装有多余一个的摄像头的话,我就可以选择iSight或Logitech摄像头(见图2)

图2.连接到电脑的所有摄像头

注意:你可以使用多种摄像头甚至是数字视频录像机来捕获视频。正如FME支持文档中所阐述的那样:Flash Media Live Encoder被用来和微软遭人抱怨的视频流驱动设备协同工作。访问Flash Media Live Encoder Device Compatibility Matrix (PDF, 13K)获得Adobe已专门测试的设备清单。这个列表绝不是全位置的,它只是目前经过Adobe测试的设备清单。完成的第一条线索就是清单中缺失了iSight摄像头。

3.在format弹出菜单中选择VP6.这是压缩最终FLV文件所用到的多媒体数字信号编码器。另一个选项是H.264。如果你有一个可以拍摄高清的DV的话,选择这个选项。必须意识到最终生成的文件不会是QuickTime文件,它是一个F4V文件,这是与FLV等同的MP4文件。

4.从位率弹出菜单中选择350kbps。你需要在本地运行,所以350kbps是不会有问题的。

5.为该FLV文件大小设置为640*480,同时在帧率弹出菜单中设置为24fps

6.如果你使用一个外部的麦克风,例如我用的Rode Podcaster,那么从音频设备弹出菜单中选择它。

7.设置音频格式为单声道的MP3

8.最终从Sample rate弹出菜单中选择22050kHz,设置bit rate为48Kbps

9.使用音量滑块来调整麦克风的音量。

在窗口的底部可以看到音频位率和视频位率之和的总位率。这是一个非常重要的数字因为它直接影响了用户体验。如果你不确定使用什么数字的话,去向Robert Reinhardt的 Flash Video Bitrate Calculator寻求帮助。

在FLASH MEDIA LIVE ENCODER中创建FLV

已经为FLV设置好了,你可以把你的注意力转向到创建FLV文件:

1.在输出面板,取消选择Stream to Flash Media Server,因为捕获不会实时播放所以不需要这个选项。

2.单击浏览按钮打开另存为对话框。定位到你的vod文件夹(C:\Program Files\Adobe\Flash Media Server 3.5\applications\vod\media), 命名此文件然后点击保存按钮。

3.点击绿色Start按钮开始记录并并创建FLV文件。当你单击这个按钮的时候,界面转向开始显示日志,日志提示你视频记录过程已经开始(见图3)。见到视频预览时就可以移动和谈话了。

4单击Stop按钮完成记录。进而返回到FME界面。

5.如果你愿意,可以退出FME。

图3。摄像头记录行为。

在FLASH中播放此FLV

现在已经创建了一个FLV文件,是时候该播放它了:

1.启动Flash cs4(或CS3)创建一个新的ActionScript3.0 文档。

2.设置舞台大小为640*520匹配刚刚创建好的FLV大小以及给FLVPlayback皮肤留有空间。

3.拖动一个FLVPlayback组件副本到舞台上,设置其大小为640*480.选中此组件,在Flash cs4中选择窗口>组件检查器,在Flash CS3中单击属性检查器的参数选项卡。

4.双击skin参数选择SkinUnderAllNoFullNoCaption.swf.单击ok。

5.单击source参数输入rtmp://localhost/vod/YourFLVName.谨记你只需输入FLV的名字而不需要扩展名。

6。保存并测试影片。见图4,你的网络摄像头和其他设备已经从一个有趣好笑的工具转变成了一个真正实用和非常重要的东西。

图4.播放视频捕获

创建一个实时广播

既然你已经知道了如何使用Flash Media Live Encoder创建一个FLV文件,是时候将知识付诸实践创建一个实时广播了。一下就是有趣的地方:工作流程和之前的练习基本一样。区别在于不再是创建一个文件而是你通过Flash Media Live Encoder直接将流广播到网页中。具体步骤如下:

1.打开Flash Media Live Encoder。但不要更改音视频编码选项。

2.在输出领域,选中Stream to Flash Media Server选项。一旦你选中它就会注意到URL自动设置为Flash Media Server3.5的vod文件夹。

3.选择stream输入文本框中的文本。这就是你将输出的文件名称。默认名称是livestream但你可以随意更改。

4.Flash Media Live Encoder的一个简洁方面是它具备保存广播副本的能力。选中Save to File,单击Browse按钮,保存捕获的内容到你的vod文件夹或其他位置。这是创建广播文档的轻便方法。

5.现在,你已经准备好开始你的广播了(见图5)。先不要退出Flash Media Live Encoder。

图5.实时广播的输出设置

在FLASH中创建一个实时广播接受者

在内容的前面我慎重的使用"几乎"这个词。你需要创建Flash文档接受来自Flash Media Server的live文件夹的种子。

1.打开Flash cs4,创建一个640*480大小的ActionScript3.0文件。

2.拖动一个FLVPlayback组件到舞台上,设置大小为640*480.

3.选择舞台上的组建,打开Flash cs4中的属性面板

4.双击source参数输入 rtmp://localhost/live/livestream。单击ok关闭对话框。即使你已经告诉Flash去哪里找实时视频流,但你还没有告诉Flash去哪里播放实时视频流。

5.选择舞台上的组件。在属性检查器中输入实例名称myVideo.

6.添加新图层,命名为actions(见图6)。

图6.为实时视频流做准备

7.选择actions图层的第一帧按下F9打开动作面板。

8.单击脚本窗格输入:

myVideo.isLive = true;
FLVPlayback组件的isLive属性只能取两个值:TRUE或False。只有当种子正从Flash Media Server
中流出来的时候属性才会工作。如果你使用的不是Flash Media Server,而是从一个HTTP地址以渐进
方式下载视频,同时isLive又被设置成了true,那么Flash就会简单忽略了ActionScript,任何事情都
不会发生。
9.关闭动作面板,选择文件>发布设置.打开发布设置对话框后在类型列表中选中Flash(.swf)和HTML
(.html).
10.单击发布,完成后关闭地画框,保存文件并退出Flash。
广播网络摄像内容
已经创建了使用Flash Media Live Encoder的"种子"以及用Flash cs4创建了接收种子的SWF文件,
那么你就可以使你的网络摄像头开始工作并创建广播:
1.返回到Flash Media Live Encoder单击Stream输入之下Connect 按钮。这就创建了FME和本地
Flash Media Server的live文件夹之间的连接。连接创建好之后,button名字就变成了Disconnect.
2.单击Start按钮。
3.在浏览器中打开Flash中创建的HTML页面。会有稍许的延迟但那就是你,活生生缤纷多彩的你。
4.完成后,返回到Flash Media Live Encoder单击红色的Stop按钮,退出浏览器并关闭Flash Media
Live Encoder.

图7.真实的来自街头的我

接下来

此文告诉你Flash Media Server3.5 和Flash Media Live Encoder是如何协同工作向你提供由易到难的实时因视频流能力。如果你对这一话题感兴趣,以下的两篇文章是你应该阅读的:

****Learning Flash Media Server 3 excerpts: Nonpersistent shared objects and two-way A/V communications:摘自William B Saunders的Learning Flash Media Server3的这两张告诉你在不采用Flash Media LiveEncoder的情况下如何使用FMS和实时消息协议记录和流传输媒体。

****Working with metadata for live Flash video streaming: Jens Loeffler撰写的此文告诉你如何创建一个将元数据整合到实时视频流中的Flash视频程序。

posted @ 2009-05-15 16:17  Andy  阅读(1357)  评论(0编辑  收藏  举报