使用C#Windows窗体进行基本视频编辑



我正在构建一个C#应用程序(Windows Forms和.Net framework 4.8(。我使用Accord.Net框架在计算机上录制.mp4格式的视频。录制后,我将使用Windows Media Player控件播放录制的视频。

string applicationFolder = Application.StartupPath;
if (File.Exists(applicationFolder + @"tempvideoTemp.mp4"))
{
axWindowsMediaPlayer1.URL = applicationFolder + @"tempvideoTemp.mp4";
}

我需要通过在底部添加特定时间的文本来编辑此视频。在录制过程中,我可以使用下面的命令添加文本,然后将帧保存在.mp4文件中:

using (Graphics g = Graphics.FromImage(currentFrame))
{
//g.DrawString("test"...);
}

我想对Windows Media Player控件播放的视频也做同样的处理。为此,我寻找了一些播放器的事件,在那里我可以获得播放视频的每个新帧的指针,但没有成功。

创建Windows Media Player图形时,文本会在视频中再现,但只有当应用程序正在运行时,保存的视频才不会受到影响。

using (Graphics g = axWindowsMediaPlayer1.CreateGraphics())
{
//g.DrawString("test"...); //it's show only when application is running
}

问题是:Windows Media Player是否有任何功能可以捕捉正在播放的视频的当前帧?如果没有,是否有任何方法可以恢复保存在计算机上的视频,逐帧编辑,然后使用C#覆盖旧视频进行保存?

对不起我的英语。谢谢大家。

Windows Media Player是否有任何功能可以捕获正在播放的视频的当前帧?

不,是玩家。即使它写了,它也肯定写不出结果。因为这是一个球员和所有人。

如果没有,是否有任何方法可以恢复保存在计算机上的视频,逐帧编辑,然后使用C#覆盖旧视频进行保存?

我通常使用ffmpeg,这并不太难,而且它内置了解码和重新编码的硬件加速功能。

最新更新