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

标签 c# ffmpeg video-processing avisynth

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

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

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

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

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

最佳答案

我们最终做了什么:

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

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

关于c# - 加载视频文件并选择单个帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3892232/

相关文章:

c# - 使用 X509Certificate2 (JwtSecurityTokenHandler) 保护 JWT

c# - 获取随机词

linux - 如何使用 ffmpeg 从管道和磁盘连接视频文件?

audio - FFmpeg 输出不准确

python - 无法在 Python (Windows 10) 中使用 OpenCV 打开保存的视频

c# - 如何使 .NET COM 对象成为单元线程?

ffmpeg - 在 .ts 文件调整大小时维护 PTS

node.js - 在将它们与 FFmpeg 连接之前如何检查文件是否损坏?

matlab - 使用 MATLAB 同时播放多个视频

c# - 使用 MVC3 中的存储库模式和 Entity Framework 将域模型转换为 ViewModel 并再次返回