加载视频文件并选择单个帧

时间:2010-10-08 15:52:40

标签: c# ffmpeg video-processing avisynth

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

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

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

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

我们会考虑任何想法或建议,但我们会尽快(代码编写,而非执行)实施。

1 个答案:

答案 0 :(得分:1)

我们最终做了什么:

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

我们决定使用WMP控件中的double属性来指定播放剪辑中的currentPosition。这足够精确,我们需要从每秒剪辑的帧数生成一个帧编号,并在AviSynth脚本中使用currentPosition。