ffmpeg编码像视频预览一样

时间:2011-04-17 10:26:17

标签: php ffmpeg video-streaming

我想模仿bing视频预览功能,使用缩略图预览,然后onMouseOver,加载并播放视频文件。我计划使用VideoJS(html5 + flash)进行视频播放。我需要使用ffmpeg来制作这些视频文件。

如何使用php + ffmpeg命令行创建仅包含视频的mp4预览,其中包含完整剪辑的每隔一分钟的1s,并将分辨率缩小到固定宽度(保持纵横比,最好使用缩放裁剪)?

我假设它可以按照切割1s剪辑的方式完成,然后合并较小的剪辑,并重新编码以获得最终重新缩放的输出。

* 编辑:使用ffmpeg是一项设计要求。拉出1s剪辑应该相当容易,但是将它们组合起来似乎与ffmpeg有些复杂。我不想骑自行车缩略图,我想要一个包含多个1s剪辑的视频预览。例如。运行时间以秒为单位:100-101和200-201组合在一个压缩严重的剪辑中。我要求一个命令行示例,说明如何以有效的方式执行此操作。

3 个答案:

答案 0 :(得分: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编译。

答案 1 :(得分:0)

我有一种方法,我认为这样可行......

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

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

因此,当我鼠标悬停时,我会调用将按顺序加载这些图像的功能(这会让用户感觉视频正在快速转发..)

但是在这种格式中,当鼠标移动时我们无法发出声音..

我不知道这是否好,但我知道这会有效..

<强>更新

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

答案 2 :(得分:0)

我现在设法做了这个,拔出1s剪辑,并将它们转换为mpeg。然后将这些mpeg文件合并到一个文件中。然后将til mpeg文件转换为mp4

相关问题