关于闪存:在Linux CLI上将常见视频格式转换为FLV的最佳工具是什么

关于闪存:在Linux CLI上将常见视频格式转换为FLV的最佳工具是什么

What is the best tool to convert common video formats to FLV on a Linux CLI

我已分配工作的一部分新产品涉及服务器端将"通用"视频格式转换为Flash可以播放的格式。

据我所知,我唯一的选择是转换为FLV。 我一直在给ffmpeg试一试,但是我发现有一些WMV文件带有乱码(我试过以音频速率播放)。

还有其他适用于Linux的"良好" CLI转换器吗? 还是Flash可以播放其他视频格式?


Flash可以播放以下格式:

1
2
FLV with AAC or MP3 audio, and FLV1 (Sorenson Spark H.263), VP6, or H.264 video.
MP4 with AAC or MP3 audio, and H.264 video (mp4s must be hinted with qt-faststart or mp4box).

ffmpeg是一个整体良好的转换实用程序; mencoder在晦涩的专有格式下效果更好(由于w32codecs二进制解码器软件包),但其混合效果不是最理想的(阅读:经常被完全打破)。一种解决方案可能是通过Mencoder使用x264对H.264进行编码,然后与mp4box分别进行多路复用。

作为x264的开发人员(以及在线视频播放的Flash的狂热用户),我在这类工作中已有相当的经验,因此,如果您需要更多帮助,我也可以在#x264的Freenode IRC上找到我, #ffmpeg和#mplayer。


默认情况下,大多数编码器(包括ffmpeg)将mp4的标头原子(" moov原子")放在视频末尾,因为它们只有在完成编码后才能放置标头。但是,为了使文件在完成下载之前开始播放,必须将moov原子移到最前面。

为此,您必须使用mp4box(默认情况下做到)来(重新)混合或使用qt-faststart,这是ffmpeg的脚本,它只是将原子移到最前面。它很简单。

请注意,对于FLV,默认情况下,ffmpeg将使用FLV1视频格式,这非常糟糕。到现在为止,它已有十多年的历史了,考虑到现代标准,它的效率相当糟糕。使用H.264等更现代的格式会更好。


推荐阅读