About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Mar

    17

    SWF 转视频方法 / 教程

    • 0 Comments
    • Miscellaneous

    为什么 SWF 转视频文件的软件这么少

    SWF 文件在播放时虽然它也有声音和画面,但严格意义上讲,它并不是视频文件,而是一种应用程序。因为它的声音和画面并不像普通的视频文件那样在输出时被渲染生成好的静态画面,它在输出的时画面、声音、资源、代码等等都是分离的,最终是在 Flash 播放器(包括控件和插件)正式播放 SWF 文件时被计算生成看到最终的画面和听到的声音。

    所以越是复杂的 SWF 文件被转换成为视频文件的成功率越低:比如一个复杂的网页游戏 SWF 文件,包含大量的 AS 代码,以及与外部 JS 交互的代码,以及与后台服务器程序通信才能生成的画面和声音等等,像这种 SWF 文件基本上是没有转换成为视频文件的可能性(当然除了屏幕录像类软件将整个屏幕画面录制下来之外,但屏幕录像类软件很容易丢失帧画面,它们按照自己的帧频进行录制,并不是按着 Flash 渲染的帧频进行录制)。

    当然大多数情况下,我们只是去转换一些非常简单的 SWF 文件成为视频文件,比如说不含任何代码,或只含少量代码(比如 play、stop 这样的代码)的纯时间轴动画的 SWF 文件,这样的文件转换成为视频的成功率和可能性都会较高。

    但很可惜的是,既便只是想转换一个很简单的纯动画 SWF 成为普通的 AVI、MP4、FLV、VOB、MPG、WMV、ASF、RMVB、TS 等视频格式,网络上也是找不出一款真正好用的 SWF 转视频类的软件。不要相信网络上那些流传的什么ffmpeg、格式工厂、万能转换器、视频转换大师、视频转换王、窝狸、绘声绘影等等软件,因为这类软件它们都是针对已经渲染好的静态画面和声音进行再次编解码处理的。正如前面所介绍的,SWF 的画面和声音它并不是已经渲染好的静态存在,它们只有在 Flash 播放器中运行时才会被确定下来(被动态的渲染输出画面)。既便是 Flash 开发工具在发布 SWF 文件时,让 SWF 不包含任何代码,所有可视素材都被放至在舞台上,它们仍然是动态存在的,并不是渲染好的静态画面,因为 SWF 是一种允许被动态加载和运行的,即一个 SWF 文件完全可以加载另一个 SWF 文件,并控制另一个 SWF 文件中的动画和声音,所以不是已经被渲染生成的静态画面和声音。

    所以像上面那些越是声称自己能支持的格式越多,编解码器越多,就越是不行。如果在百度或谷歌上看到有人在推荐这样“万能型”的软件,就不用去尝试了。因为它们的万能型是针对“视频”文件的,并不是针对“应用”文件的(当然这些软件官方网站并没有声称自己行,只是不了解 Flash 文件的用户的猜测)。

    为什么网络上没有真正好用的 SWF 转视频软件

    那有没有纯粹的将动态的 SWF 渲染成为静态画面的软件呢?答案是肯定的。但事实上这些软件它们都不会好用,有些转换出来的文件只有画面,没有声音;有些转换出来是只有声音没有画面;或者有些转换出来的画面质量非常差;有些甚至根本无法转换等等。特别是一些国内的软件,更是以"骗"为主,让用户花费十几元或几十元购买一个注册码,然后是无法转换的。 原因就在于 SWF 是一种应用格式,它并不是真正的视频文件,是应用格式就意味着会遇到各种不可能遇见的情况,比如非法代码、主时间线只有一帧、影片剪辑嵌套、动态的生成的显示对象等等等。

    所以,像这类软件如果没有试用版本,或试用版本不能够转换到 50% 的长度,最好就不要购买。因为软件属于数字产品,它不同于实物产品,在软件的试用期或试用版中就表示了用户确认了软件的功能,购买之后是无法退货的。至少到现在为止,我和我的同事没有发现任何一款国产软件能真正实现完美转换的,转换出来的情况大多如上一段所述的那样糟糕。

    那是什么原因导致没有人或没有公司去开发真正好用的 SWF 转视频软件?原因很简单:开发一个专业性的软件成本是非常大的(一旦开发就意味着后期的技术支持和软件的长期维护),而使用转换类工具的大多只是个人,在国内一般个人软件消费能力往往非常有限,十几元或几十元;另一方面这种软件需求量很小,所以也无法通过广告收益。所以开发这类软件的往往是个人或小型工作室,没有大型公司参与(Adobe 官方也未参与)。

    另一方面,公司性质或商业项目,专业的视频文件或视频素材大多采用专业的软件来生成,如 Adobe Premiere、Adobe Effects、绘声绘影、3DMAX、MAYA 等等,而不会采用 Flash  创建素材或影片再转换得到。所以想要通过 SWF 转换得到高质量的 AVI、MP4 等视频文件就需要一定的技巧和方法。下面提供两种:

    高质量视 频文件生成(难度较大)

    Flash 开发者使用位图编程逐帧 draw() 舞台,然后使用屏幕无损的 png 编码输出每一个静态画面成为序列图,并利用 SWF 反编译软件提取音频文件,最后将所有序列图和音频文件导入到专业的视频软件(如 Adobe 公司的 AE)中进行合并渲染输出。当然这些专业性的软件本身也是非常大的,每个软件好几 G 的大小(既便是压缩版的也有1-2G)。而且像 Flash 和 AE 这些专业性的软件,普通用户如果没有相应的知识,就无法操作了。

    普通质量文件生成(难度适中低)

    可以使用 Free SWF Converter、iWisoft Flash SWF to Video Converter 以及 Moyea SWF to Video Pro 等等(之所以推荐国外的软件是因为国内同类型的软件基本比较坑爹型,没试出一个好的来)。

    重点推荐:Moyea SWF to Video Converter Pro,它的优点是文件容量比较小(只有几十M),生成的画面质量很不错,支持多种格式和多种编解码方式,并且它有一个非常大的优点就是支持包含代码的 SWF 文件的渲染输出成视频文件,因为它是通过捕获 SWF 运行时的舞台画面得到最终静态画面的,所以既便包复杂的 AS 代码和运行时需要加载外部的资源文件也没有关系。但它有一个缺点如前面所述的,虽然它包含了声音选项,但实际上它最终渲染输出的文件是没有声音的(前面提到的其它两个软件也一样,Free SWF Converter、iWisoft Flash SWF to Video Converter 录制以后也是没有声音的,是通病)。可以通过一个 SWF 反编译软件(硕思闪客精灵)提取音频文件,然后与视频合并。

    音频与视频合并时意味着需要对画面和声音文件重新进行编码,如果挑选的合并软件不恰当,既便 Moyea SWF to Video Converter Pro 输出了较好质量的视频文件,在重新编码后也会变的较差,所以本人也是尝试了很多种合并软件,最后发现国产免费软件“QQ影音”的工具菜单(或工具按扭)中就有这个视频与音频合并的功能,生成的画质也是非常好。