FFmpeg编码类似于必应的视频预览。

3
我想模仿bing视频预览功能,使用缩略图预览,然后在鼠标悬停时加载并播放视频文件。我计划使用VideoJS(html5 + flash)进行视频播放。我需要使用ffmpeg来生成这些视频文件。
如何使用php + ffmpeg命令行创建仅包含视频的mp4预览,其中包含完整剪辑每两分钟的1秒,并将分辨率缩小到固定宽度(保持纵横比,最好使用缩放裁剪)?
我假设可以沿着剪切1秒片段的线路进行某种操作,然后组合较小的片段,并重新编码为最终的调整大小输出。
*编辑:使用ffmpeg是设计要求。提取1秒片段应该相当容易,但是使用ffmpeg组合它们似乎有些复杂。我不想要循环缩略图,我想要一个包含多个1秒片段的视频预览。例如,运行时间为100-101秒和200-201秒的片段结合在一起形成一个高度压缩的剪辑。我请求以有效的方式提供如何执行此操作的命令行示例。
3个回答

0

在Windows(或Wine)中实现这一点的一种方法是使用Avisynth脚本。这将允许您在一个步骤中完成所有所需的转换。我已经有一段时间没有使用Avisynth了,但一个非常简单的脚本可能看起来像:

DirectShowSource("C:\file\to\encode.avi", audio=false) # Or another source filter
SelectRangeEvery(1440, 24) # outputs 24 frames every 1440 frames
BilinearResize(320,240) # resize to your desired resolution
Crop(...) # crop to reach desired aspect ratio

这可以扩展以支持各种帧速率和宽高比,而不是硬编码所有内容。生成的.avs文件可以作为输入文件提供给ffmpeg使用,前提是已经使用--enable-avisynth进行编译。


0

我有一个想法,我认为这会起作用...

使用ffmpeg,您可以在特定间隔内获取视频的缩略图。

因此,我将在2秒的间隔内拍摄大约5到10个缩略图,并以唯一名称存储它们在我的服务器上,以标识该视频。

所以当我鼠标悬停时,我调用函数,该函数将按顺序加载这些图像(这使用户感觉视频正在快进..)

但是,在这种格式下,我们无法在鼠标悬停时播放声音..

我不知道这是否好,但我知道这会起作用..

更新:

我认为最好使用ffmpeg使用提取的图像创建视频,并在我们鼠标悬停时播放它们.. 这比加载一系列图像要快得多。 ffmpeg可用于从图像列表创建新视频。


0

我现在已经成功完成了这个任务,方法是将视频分割成1秒的片段,并将它们转换成MPEG格式。然后将这些MPEG文件合并成一个文件,最后将这个MPEG文件转换成MP4格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接