【问题标题】:ffmpeg encode bing like video previewffmpeg 像视频预览一样编码 bing
【发布时间】:2011-08-07 06:30:11
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php ffmpeg video-streaming


    【解决方案1】:

    在 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 编译。

    【讨论】:

      【解决方案2】:

      我有一个方法,我认为这会奏效......

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

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

      因此,当我将鼠标悬停时,我会调用将顺序加载这些图像的函数(这让用户觉得视频正在快进......)

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

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

      更新:

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

      【讨论】:

        【解决方案3】:

        我现在设法做到了,通过提取 1s 剪辑并将它们转换为 mpeg。然后通过将这些 mpeg 文件附加到单个文件中来组合它们。然后将til mpeg文件转换为mp4

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-07-27
          • 2012-05-13
          • 1970-01-01
          • 1970-01-01
          • 2015-02-23
          • 2011-04-15
          • 1970-01-01
          相关资源
          最近更新 更多