我正在使用 ffmpeg 从 flv 视频生成图像预览。操作系统是 Debian 5,它是 ffmpeg 的 apt 版本。flv 文件位于作为 NFS 安装的 NAS 共享上。从 flv 的开头获取缩略图非常快,但在视频中搜索 10 分钟以上时速度非常慢。我从 python 调用 ffmpeg,如下所示:
os.system('ffmpeg -ss "%d" -i %s -an -r 1 -vframes 1 -bufsize 1835k -s 360x288 -f image2 -vcodec mjpeg -y "%s"'%(offset_seconds, video_file_path, image_path))
有没有办法加快 flv 末尾的搜索过程?是什么原因导致它这么慢?
我已经在本地机器上尝试了同样的事情(Mac OS X snow leopard,从源代码编译了 ffmpeg),在从视频开头和视频 50 分钟后捕获图像时,我感觉不到速度有任何差异。
编辑:提到的 Debian 服务器比我的本地机器有更快的硬件配置。
答案1
您已将问题缩小到 NFS 挂载。ffmpeg 本身不会在输入视频 10 分钟后改变其行为 - 如果确实如此,您会在尝试读取本地磁盘上的视频时注意到。
我敢打赌,在 NFS 服务器上安装并运行 ffmpeg(因此它再次是本地磁盘)不会在 10 分钟内出现速度减慢的情况。
可能有一些方法可以调整 NFS 配置(缓存?),但更简单的方法是将整个视频复制到本地磁盘,然后让 ffmpeg 读取它。这不会更慢:无论如何都需要移动数据,因为尽管 ffmpeg 只需要每秒一帧的像素来制作缩略图,但它需要在中间(关键帧)读取更多内容才能到达并解码这几帧。