本文译者:egoldy
文章出处: http://www.ultrashock.com
文章性质:翻译
众所周知,FLASHMX加入了视频功能,而FLASH2004又加入了几项视频的新功能。最引人注目的是当前的FLASH PLAYER7能够以高的帧速率播放视频。实际上它可能以比正常FLASH影片帧速度还高的速度来播放。
在本文中你将了解如果使用新的技术来改善你的项目流程,特别是此文中包括以下内容:
1。新的导入影片向导。
2。如何使用FLASHMX2004提供的专业导出视频工具直接从第三方软件中导出视频。
3。如何使你的视频与你的主程序分开以用于不断增加的下载。
4。如何使用FLASH 2004的MEDIA COMPONENT来控制影片的回放。
我们要使用什么样的方法
我们有两种方法来使用视频,一种是将视频导入到FLASH并与FLASH一同压缩输出,另一种使用外部软件导出为FLV格式影片就象载入外部MP3一样载入并播放。如你的视频文件中只有音乐那么你就可以将它直接导入到FLASH,然后在FLASH进行压缩即可。在许多时候我们可以使用FLASH或其它的外部工具对影片进行压缩。首先我们将要看一下如何使用FLASH来进行压缩,其次我们要看一下在FLASH中回放的情况。
向导就是你的朋友
向导有许多实用的功能对初学者来说,你需要按照它的逻辑过程去做除此之外它还增加了一些新的功能。
1。可以截取你想要影片将其导入,而不用完全导入。
2。可以指定播放的带宽。
3。设置影片属性时你只需要设置一次就可以。
4。新增了许多对视频的调节效果,如裁切等。
最好的了解新功能的方法是我们亲自动手试一下:
1。新建一个影片选择导入,导入到舞台,选择任意一个影片,例如我们现在用的是安装QICKTIME后自带的一个影片sample.mov。
2。第一个对话框会询问是将影片嵌入到FLASH内部还是以链接的形式导入,如果选择后者那么你只能将你的影片导出为quicktime格式也就是.mov格式的文件,这里我们选择第一项。
screen.width-300)this.width=screen.width-300" border=0 twffan="done"3。下一步后它会询问是导入整个视频还是要先编辑再导入,在此时你可能并不想编辑它,但我们想要研究它的编辑设置,稍后你可以通过上一步返回,所以这时我们选第二项编辑。点取下一步。
screen.width-300)this.width=screen.width-300" border=0 twffan="done"4.如下图所示,你看到的大多是标准的视频编辑方法,它对你来说应是很容易的.可在这里有两个重点的地方要说明.你至少要加入一个影片剪辑在左边,你可以通过移动影片下边的小三角来确定你的剪辑的范围,然后点击创新剪辑即可,可以创建多个,你还可以通过在左边的剪辑列表重新对你所创建的剪辑进行编辑,同时你还要注间下方的一个复选框,如果选中它会将你的多个剪辑合为一个导入库中,反之则会在你的库中出现多个剪辑片断.你可能要在影片导入之前想对它进行一些裁切我们在后面将会用到,此时我们点击上一步不对这个影片进行编辑,以继续我们下面的内容.
screen.width-300)this.width=screen.width-300" border=0 twffan="done"5.在上一步我返回了.这次我点击导入整个影片.你会看到下面的基本编码对话框.
screen.width-300)this.width=screen.width-300" border=0 twffan="done"6.在上一步我知所以称为基本编码对话框是因为在这一步你可通过上面的两项对你将要导入的影片进行转换.不管你是编辑压缩比还是进行高级设置,在你导出影片之前你都要回来这个界面.在压缩配置文件的下拉选项中已预置了多个选项,你可能对它会有兴趣,那么你可以点击编辑按钮查看它的具体设置,现在我们保持默认的设置,点击编辑按钮.进入查看.
7.压缩配置对话框如下图所示:这里的新特性是你可以决定是以带宽优先还是以质量为优先,当前默认的是以带宽为优先,在样质量就会以带宽为准为带宽提供所需的质量级别,在里面有一个小的技巧,如果你以质量为优先,并且想要达到你想要的好的质量,那么你也不要将其设为100%,就是我们的压缩图格式JPEG一样,97%会在文件大小上缩小,而在表面上我们却看不出什么变化.
screen.width-300)this.width=screen.width-300" border=0 twffan="done"8.在快要结束这一节时我们注意一下它的细节,右边是影片剪辑的预览视图,使用它可以用来查看当你在调节带宽或质量时对影片剪辑的影响.关键帧选项只有当你选择以质量为优先进才可以进行编辑,它是指每秒钟生成的帧数.最下方的同步选项是用来控制影片剪辑的位置,当你导入的影片的实际播放速度与你当前的FLASH帧速度不同时,就需要使用这个选项.例如有一个10秒钟的影片剪辑以每秒30帧的速率播放总共要有300帧, 在一帧速率只有12帧每秒的FALSH影片中,10秒中却只有120帧,所以通常情况下你应先设置好你的FLASH的帧速率,然后在导入影片的这个步骤中计算出两者的比例,以使影片剪辑的速率与你的FLASH影片同步,尽管它可能会在导入过程中有删除一些帧的情况出现.如果你的影片剪辑的实际播放速率高出你的FLASH影片速率很多,那么将导致的结果将是出现一些跳帧的现象.注意如你的影片剪辑不能很好的与你的FLASH影片帧速率同步,那么结果将是你的声音也就无法正常播放.(不过不要紧,稍后我们研究播放FLV文件,无论你的影片剪辑的速率有多高都不会出现上面的问题),现在我们只是在研究问题,点击上一步返回,不保存任何设置,如果你想知高级配置文件的设置,在下一步能看到.
9.你将回到上面第五步的界面,下面我们快速进入高级设置,点取高级设置的下接菜单,选择创建配置文件.如下图所示:
screen.width-300)this.width=screen.width-300" border=0 twffan="done"10.高级设置窗口包括颜色效果,缩放,裁切和轨道的设置,颜色效果下面有细致的选项,不过注意在修改时注意观看影片剪辑的预视,缩放是必不可少的,因为你总是需要小的文件的,对于轨道的设置,实际上它是一个产品级别的帮助,你可以从外部导入音频到你的库中,而不使用自带音频.最后我们点击返回,如果你真的想要保存设置,可以点击下一步,为你的配置文件取名.在这里我们只是研究它的选项.
11.最后,我们返回到第五步的窗口状态,到现在为止我们已研究了关于压缩和高级设置,你可以考虑在你的项目中使用它.
注意,你可能注意到,自始至终没有说到关于音频的压缩,你可以在发布设置中进行相关的设置.
导入向导结合了以前的视频功能和新的视频功能.视频文件一旦导入对于它的应用就没有什么新的说法了.它做象是一个图形符号,只要提供给影片足够的帧数量就可以了.
下一步我们将要看一下如何创建和播放本地的.flv视频,你可以使用FLASHMX2004PRO(配合支持的视频编辑器)或是第三方视频编辑器创建.flvs.除此之外使用communication server 可能通过WEBCAM摄像头生成.flv.如果你对上面的方法不太了解,你可以使用我们刚才刚导入的影片剪辑生成.flv.在库中找到导入的影片剪辑,右击属性.选择导出,这时就可以导出.flv文件.
配合第三方视频编辑软件使用Flash Video Explore导出视频
使用Sorenson Squeeze 软件你可以最终导出质量软高的视频FLV。然后一个软大的改进是现在你可使用专业的视频软件如,Adobe AfterEffect.Apple Final Cutpro.Discreet Cleaner等导出FLV视频,最基本的是你要学会在FLASHMX Professional中导出视频的方法如下所示。
screen.width-300)this.width=screen.width-300" border=0 twffan="done"这一点在上一步最后结束时我们已经提到了它的使用方法。在使用第三方软件如AfterEffect导出视频时大多数的设置与在FLASH中压缩影片是相同的,有一点要注意的是VBR (variable bit rate)编码方式,这种方可以依据原始视频内容来调节帧的速率。可以保证影片质量的同时而尽量使你的影片文件变小。当然这些设置只有你在使用第三方软件导出来才能看到这样的窗口。如下图:
screen.width-300)this.width=screen.width-300" border=0 twffan="done"实际上你可以很容易的实现FLV文件的播放,不管你是否已将其导入你的FLASH文件中,只要视频的舞台准备了,那么此时视频就准备开始显示了。你只需要为这个视频文件命名,并把它上传到你的项目中去显示。如果你使用了工具软件如sorensn squeeze,那么你要按照它的基本流程去做。其中最重要的一步是你必须将你的影片渲染并压缩成.flv文件。这种方式比直接导出.flv文件要好的多,只是有两项要注意的是sorense squeeze软件用的编码格式是2 pass VBR.(它的好处是一次对影片分析另一次是对影片压缩,所以不同于上图中的1 pass VBR),另一个要注意的是可能对音频进行压缩(当然包括MP3)。尽管好处很多,当然最简单的方法仍是直接在FLASH中导出FLV。
在我们将要展示如何播放视频FLV之前,还有一个要提及的是你可以直接将你的FLV文件导入到FLASH中,这是你获得的额外的好处,对于FLV的导入速度是很快的,因为FLASH不会压缩它。但有一点要注意的是由于声音是在发布过程中进行压缩的。所以你在导入FLV视频时尽量导入没有声音的文件。然后在发布时单独调节声音的压缩。
播放外部的FLVs
你可以使用脚本或是使用mediaback组件来播放FLV.在播放时FLV会保持自向的播放速度而不会受你当前FLASH帧的速度的影响.在FLASHMX中也可以播放FLV,只不过有一点就是必须通过FLASH COMMUNICATION SERVER MX来播放.
如果你会使用FLASHCOM你会发现播放FLV的代码与在FLASHMX2004中播放的代码几乎是一样的.下面我们来快速学习怎么样用代码来播放FLV.
1.先使用FLASH EXPLORER创建一个FLV文件,当然你也可以使用其它软件来创建军FLV,命名为:my_movie.flv
2.创建一个FLASH文档并将它保存在my_movie.flv同一文件夹下.
3.因为我们要在FLASH运行载入一个FLV文件.我们需要在舞台建立一个VIDEO对象用于贴加video实例.从库面板上选择NEW VIDEO.如下图所示:
screen.width-300)this.width=screen.width-300" border=0 twffan="done"4.将VIDEO对象拖动至舞台上,并在属性面板上命名为my_video.
5.最后取消对VIDEO对象的选择.在ACTION面板上加入如下代码.
my_nc = new NetConnection();
my_nc.connect(null);
my_ns = new NetStream(my_nc);
my_video.attachVideo(my_ns);
my_ns.play("my_movie.flv");
其中第一行中的my_nc是NetConnection类的一个实例,当在第三行创建NetStream类进需要使用到它,我们可以理解为所有的NetStream类都是NetConnetion类的通道.my_ns需要通过NetStream与NetConnection取得联系.第二行中的connect(null)中的null表示为空.这句一般在FLASHCOM中是用于输入地址的,所以在这里为空.第四行是将my_video与my_ns联系起来.第五句用来播放flv文件.
也许你还发现了NetStream类的其它许多方.但一般都用在FlashCom中,如果你想使用NetStream类的其它更多方法.你必须确保FLV文件已完全下载到你的计算机上.否则会出现问题.
使用媒体播放组件
媒体组件提供了图形化和代码两种方式用于设置播放flv和mp3.你可以手动设置它的参数或通过脚本进行更高级的媒体控制.除了这些,它还提供了很经典的时间显示,下载进度等等.
screen.width-300)this.width=screen.width-300" border=0 twffan="done"flashmx2004这三个媒体组件实际上是一个组件被分成了三部分.在你的不同应用中可以分开使用.MediaPlayback是最完整的.比如你可以只显示视频.而不使用视频控制等.下面我们将示范使用组件如何播放FLV.以及一些高级的控制.
1.创建一个fla文件与上边我们使用过的my_video.flv位于同一个文件目录下.
2.将media component组件拖放到场景中.
3.要设置它的参数你需要打开它的参数检视面板而不是属性面板.如下图.
screen.width-300)this.width=screen.width-300" border=0 twffan="done"4.你只需要在面板的URL中输入我们的FLV名称即可.在下面的长度中只有FLASHCOM可以自识别出长度.如果你知道它的长度可以输入长.如我知道影片的长度为5秒.则输入0050.
5.测试你的影片.
媒体组件的高级设置
视频线索点.
1.另存一个新的文件,同时你也使用了一较长的FLV.
2.拖动媒体组件medicplayback至场景中.并使用属性面板为其命名为:myMedia
3.在视频参数面上输入FLV文件名.同时输入视频的长度.你可以在场影中播放一次来查看它的长度.
4.收集同步时间.将如下代码放在影片的第一帧上.使用如下代码:
_root.onMouseDown=function(){
trace(myMedia.playheadTime);
}
使用这种方来收集视频同布线索的点的好处是我们可以看着视频的同点找到想要同步的点,当按下光标时就会在输出面板上输出时间.
5.将你收集的信息写入到组件面板中不要忘记给线索点命名,如本例为one,two...,如下所示:
screen.width-300)this.width=screen.width-300" border=0 twffan="done"6.删除刚才收集信息的代码,将下面的代码加入
myObj=new Object();
myObj.cuePoint=function(p){
trace("接收到同步线索点名为: "+ p.target.name);
}
myMedia.addEventListener("cuePoint", myObj);