Mencoder有一个可爱的选项,可以将mjpeg文件转换为avi文件,并具有在VLC中播放的'MJPG'编解码器。
执行此操作的命令行是:
mencoder文件名。Mjpeg -oac copy -ovc copy -o outputfile。Avi -speed 0.3
其中0.3是期望的播放帧率与默认25帧/秒的比率。所有这些所做的就是复制mjpeg文件,在顶部放一个avi头,在最后,似乎是文件中帧位置的索引。
我想在我自己的代码中复制这一点,但是我找不到任何文档。索引部分的确切格式是什么?头有额外的填充字节在它的某些原因-这是关于什么?
谁知道我在哪里可以找到文档?mencoder和vlc似乎都内置了这个编解码器。
经过大量的工作,研究和摆弄HxD和RiffPad,我终于弄明白了。要用一篇很长的博文来解释这一切,但基本上没有真正的"MJPG"编解码器——MJPG只是使用了一些技巧和avi标准中不寻常的部分来生成索引文件。
关键是在每个Jpeg打开标记前面放置'00dc'和一个8字节的Int32长度标记。如果您希望avi是随机访问的,那么您需要在末尾添加一个索引,该索引指向每个'00dc'标签位置。VLC将本机播放此内容。如果您安装了ffmpeg,那么Windows Media Player将使用它来解码这些类型的mjpg文件。