Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加载视频文件并选择单个帧_C#_Ffmpeg_Video Processing_Avisynth - Fatal编程技术网

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

C# 加载视频文件并选择单个帧,c#,ffmpeg,video-processing,avisynth,C#,Ffmpeg,Video Processing,Avisynth,我们正在开发一个应用程序,以获取各种格式的视频文件,对文件执行一些简单的编辑,并将其输出为特定格式 我可以通过FFMPEG处理除编辑部分之外的所有内容,因为编辑需要用户指定某些内容。我需要用户指定任何需要修剪的帧范围(仅从开始或结束,而不是中间),淡入或淡出的开始/结束帧编号,以及覆盖文本 我已经看到了拼接器和Directshow.NET包装器,但我不确定是否值得花时间将所有编辑都引入我们的应用程序,而不仅仅是在用户设置所有上述内容后使用avisynth/ffmpeg/mencoder执行实际编

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

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

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

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


任何想法或建议都会被考虑,但我们将以最快的速度(代码编写,而不是执行)实施。

我们最终做了什么:

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


我们决定使用WMP控件的double属性来指定剪辑播放中的当前位置。这足够精确,我们需要从剪辑的每秒帧数和当前位置生成帧数,以便在AviSynth脚本中使用。

我们最终要做的是:

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


我们决定使用WMP控件的double属性来指定剪辑播放中的当前位置。这已经足够精确,我们需要从剪辑的每秒帧数和当前位置生成一个帧数,以便在AviSynth脚本中使用。

事实证明,有些东西并不像需要的那样精确。我猜WMP控件的currentPosition属性并不完全准确,文件越深入,AVISynch报告的实际帧外数字就越多。事实证明,有些东西并不像需要的那样精确。我猜WMP控件的currentPosition属性并不完全准确,文件越深入,AVISynch报告的实际帧外数字就越多。