【问题标题】:Load video file and select individual frames加载视频文件并选择单个帧
【发布时间】:2011-04-22 23:26:31
【问题描述】:

我们正在开发一个应用程序来获取各种格式的视频文件,对文件进行一些简单的编辑,然后将它们输出为特定格式。

我可以通过 FFMPEG 处理除编辑部分之外的所有内容,因为编辑需要用户指定某些内容。我需要用户指定需要修剪的任何帧范围(仅从开头或结尾,从不从中间)、淡入或淡出的开始/结束帧编号以及覆盖文本。

我已经看过 Splicer 和 Directshow.NET 包装器,但我不确定是否值得花时间将所有编辑都带入我们的应用程序,而不仅仅是使用 avisynth/ffmpeg/mencoder 来执行实际编辑在用户设置上述所有内容之后。

我真正需要的只是一个控件或包装器,这样我就可以创建一个控件来播放/暂停视频、在帧之间移动,并让我抓取视频的特定帧号。我可以从中生成 AVS 文件来完成剩下的工作。如果它会在某个级别使用 DirectShow 那就太好了,这样机器上安装的任何编解码器都可以使用,因为视频可以是 WMV、FLV、Divx、MP4 等格式,我们需要支持所有其中。

我们会考虑任何想法或建议,但我们会争取最快的(代码编写,而不是执行)实施。

【问题讨论】:

    标签: c# ffmpeg video-processing avisynth


    【解决方案1】:

    我们最终做了什么:

    我们使用 Windows Media Player ActiveX 控件让用户选择视频中的点来设置淡入淡出和修剪。然后我们从中生成一个 Avisynth 脚本并通过 mencoder 运行它以获得最终视频。

    我们决定使用 WMP 控件中的 double 属性来指定播放剪辑中的 currentPosition。这足以满足我们从剪辑的每秒帧数和 currentPosition 生成帧数以在 AviSynth 脚本中使用的需要。

    【讨论】:

    • 好吧,事实证明,有些东西并不像它需要的那样精确。我猜 WMP 控件的 currentPosition 属性并不完全准确,我们越深入文件,帧数就越偏离 AviSynth 报告的实际值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    相关资源
    最近更新 更多