【发布时间】:2013-09-03 07:07:46
【问题描述】:
我有一个网页,它(除其他外)需要从用户上传的视频中提取特定帧。用户在播放器中寻找 .mp4 的特定部分,然后单击一个按钮,然后一个 ajax 调用被触发到一个 php 脚本,该脚本获取 .mp4 和来自视频的确切时间,并使用它来提取“缩略图”框架。
我目前的解决方案是使用 php exec 命令:
exec("ffmpeg -i $videoPath -ss $timeOffset -vframes 1 $jpgOutputPath");
...效果很好,只是它像糖蜜一样慢。我的猜测是 ffmpeg 对这项工作来说有点太多了,我也许可以通过利用底层库或其他东西做得更好......但是我不知道如何做到这一点。
理想情况下,我不想安装任何需要真正“安装过程”的东西......即,将可执行文件放入我的网络应用程序的文件夹中很好,但我宁愿不必实际运行安装程序。另外,解决方案应该可以在mac、linux和windows上运行(虽然linux是最优先的)。
我可以做些什么来加快这个过程?
谢谢。
【问题讨论】:
-
您可以将缩略图生成作业放在一个队列中,让用户继续处理其他内容,同时它是由他们不必等待的其他脚本生成的。
-
好吧尝试玩ffmpeg c:\ffmpeg.exe -ic:\video\hello.mov – ss 10 – t 4 -f image2 – sameq -vcodec mjpeg img-%03d.jpg 它可能非常棘手,如果您只使用一些不同的属性,您可能会获得很大的性能提升......
-
@DusanPlavak
-sameqdoes not mean "same quality" 并已从 ffmpeg 中删除。对于 jpg 输出,使用-qscale:v,有效范围为 2(最高质量)到 31(最低质量)。 -
@GordonM:用户不必等待,缩略图出现只需要一段时间,特别是如果同时生成一些缩略图。这是我想要加速的实际缩略图生成工作。
-
@DusanPlavak 我很确定我设置它的方式应该是尽可能少地进行处理......不转换格式或任何东西。
标签: php video ffmpeg mp4 video-processing