本帖最后由 qiaoke_song 于 2023-9-27 22:26 编辑
使用ffmpeg(ffmpeg.exe、ffplay.exe、ffprobe.exe)进行封装,来处理视频中的帧,不用生成临时文件,通过管道读取。
这里图省事,将整个视频装入,所以测试时候找个短视频进行处理,5、6分钟以内长度的就可以,用太长的内存装不下。
读取视频帧方式很多,这里采用读取每秒的一帧进行选段,然后再将选择的段全部帧读取出来。
选取帧可已使用时间间隔、或使用命令行分段读取,在实际中,这样选偏差比较大,用精确选取指令也还是对不上,
所以就用了笨办法,速度较慢,以读取显示60帧为每个线程,开多个线程同时读取,帧总数/帧率=每秒帧数,记录帧序号,提取每秒第一帧作为标尺,详细帧则取选择范围的帧进行,这样就对上了。
播放是将选中的范围帧进行播放,使用ffplay.exe嵌入到WPF窗体中播放。这里注意一下,WPF的窗口不能设置为AllowsTransparency="True",否则不能正常显示。
代码很短,就是ffmpeg比较大100多M,附带一个测试的短视频。
一些代码中内存、进程关系等代码如有错误自行修正。
8月更新的放这里了,可以简单编辑视频添加文字,原理其实就是图像编辑,再写入视频,结合这个例子看看,比较简单
https://bbs.bccn.net/thread-512662-1-1.html
延伸的写了个转4K的,使用opencv训练的模型:
ESPCN_x2.pb
ESPCN_x3.pb
ESPCN_x4.pb
FSRCNN-small_x2.pb
FSRCNN-small_x3.pb
FSRCNN-small_x4.pb
FSRCNN_x2.pb
FSRCNN_x3.pb
FSRCNN_x4.pb,不过写的不怎么样,不满意
下载https://www.haolizi.net/example/view_314787.html
要是不好下载,说一下,我给网盘
|
-
v1.png
(997.53 KB, 下载次数: 119)
C# 视频处理 -- 帧处理 WPF.net6.0 demo
|