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

时间:2020-03-06 14:23:55  来源:igfitidea点击:

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

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

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

解决方案

Flash可以播放以下格式:

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等更现代的格式会更好。