影院平台搭建 - (1)FLV文件的编码

首先要说明,本平台搭建完全基于Windows平台,不考虑Linux平台及其他*nix平台的情况。

为了要实现跨平台跨浏览器的播放,播放器上只有两个选择,Flash和SilverLight。
对比Flash和SilverLight:Flash的优势在于高装机率,广泛的软件支持,更加完美的跨平台能力。SilverLight的优势在于对搜索引擎友好,支持DRM,通过Windows Media Service与Windows Server无缝集成。
针对我的需求分析,前者更加符合需要,因此选择Flash方案。

Flash目前支持FLV文件和MP4文件。但MP4是在最新的Flash Player 10中才获支持,而FLV根据编码方式的不同,分别可以在7,8,9,10中播放。详细信息请自行了解。

商业方法有很多,On2 Flix Pro,Sothink Video Encoder,Riva FLV Encoder,Moyea等。On2的方案目前是最好的,据说网易用的就是此方案。Sothink的压出来画质太惨不忍睹,Riva的勉强。Moyea压片速度太慢。

开源方案主要就是FFMpeg和MEncoder这两个。MEncoder对输入格式的支持更加丰富一些,但参数配置复杂。MPlayer/MEncoder的命令行参数帮助文件有数百K之大。FFMpeg只支持比较常见的几种非商业格式(不支持RM/RMVB,不支持WMV),但使用较简单。
但这两个都有一个共同的问题:在某些片源中会出现抽丝现象,可以参见下图。
注意图中红色方框的地方,可以很明显看到抽丝。用系统自带的播放器播放源文件无此问题,可以认为是开源方案解码的问题。
这个问题可以用AVISynth来解决。RM/RMVB和WMV文件通过DirectShowSource,AVI和MKV通过AVISource,编写相应的AVS文件,然后把这个AVS文件作为输入文件给MEncoder和FFMpeg编码即可。
AVISynth的用法可以参考中文FFMpeg小组这里
类别:影院平台搭建 查看评论
posted @ 2009-06-09 13:40  ayanamist  阅读(317)  评论(0编辑  收藏  举报