2011-04-17 84 views
2

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

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

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

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

回答

0

我设法做到这一点,通过拉出1s剪辑,并将它们转换为MPEG。然后将这些mpeg文件合并成一个文件。然后将直接mpeg文件转换为mp4

0

在Windows(或葡萄酒)中执行此操作的一种方法是使用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可用于从图像列表中创建新视频。