注册 登录
编程论坛 C# 论坛

C# 视频编辑 WPF.net6.0 demo 8.13更新

qq2889577966 发布于 2023-07-19 15:53, 923 次点击
程序为WPF .Net6.0,全部源码。封装了ffmpeg、ffplay、ffprobe.exe,播放嵌入到了WPF窗体中。编辑、生成均通过管道读写,byte操作,不生成临时文件。
程序旨在说明读取、编辑操作的代码,界面没设计,逻辑限制也没写。功能也只有读取,写入图像和文字,但是基础的读写有了,其他的扩展功能也很方便了啊。

这里图省事,将整个视频装入,所以测试时候找个短视频进行处理,5、6分钟以内长度的就可以,用太长的内存装不下。读取视频帧方式很多,这里采用读取每秒的一帧进行选段,然后再将选择的段全部帧读取出来。
选取帧可以使用时间间隔、或使用命令行分段读取,在实际中,这样选偏差比较大,用精确选取指令也还是对不上,所以就用了笨办法,速度较慢,以读取显示60帧为每个线程,开多个线程同时读取,帧总数/帧率=每秒帧数,记录帧序号,提取每秒第一帧作为标尺,详细帧则取选择范围的帧进行,这样就对上了。

播放是将选中的范围帧进行播放,使用ffplay.exe嵌入到WPF窗体中播放。这里注意一下,WPF的窗口不能设置为AllowsTransparency="True",否则不能正常显示。
代码很短,就是ffmpeg比较大100多M。
一些代码中内存、进程关系等代码如有错误自行修正。

首先点击“打开mp4文件”,装入视频,再拖动选择范围框,选择编辑的范围,
再点击“装入选择的帧”,在点击“编辑选择的视频”
在打开的窗口中,菜单里可选择图像或文字,放置到编辑框中,设置组件的属性,点击“应用”。
最后点击“写入到视频”,这里忘了写进度提示了,写入时就等着,写入完毕后,弹出完毕窗口。

这里注意:
1、生成后在当前目录中生成一个output.mp4,如果已存在该文件,则生时成会提示错误,生成完毕后,自行改个文件名。
2、程序因为图省事,将视频全部装入内存,编辑使用时,找个短点的视频,4、5分钟的就可以,太大了内存装不下。
3、编辑时放置组件,组件属性的颜色设置为空,即为透明。
4、装入、选择、调入、编辑的次序别搞乱,因为程序写的匆忙没有校验,别出故障了。

视频生成的效果,这里提供原视频和编辑生成的视频2个视频,可以下载比对效果。
链接:https://pan.baidu.com/s/1MjM8K8iu-uWgfMrnLTOdWA
提取码:255q

编辑程序
代码下载
链接:https://pan.baidu.com/s/1zW3B9p85622WvGdAYhwrsQ
提取码:v2az

[此贴子已经被作者于2023-8-13 13:37编辑过]

2 回复
#2
qq28895779662023-08-02 14:41
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-8-13 13:38编辑过]

#3
qq28895779662023-08-13 13:43
8.13 更新
1