博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net下使用 Geb.Video.FFMPEG 操作视频文件
阅读量:6631 次
发布时间:2019-06-25

本文共 1270 字,大约阅读时间需要 4 分钟。

.Net 下默认没有读写视频的类,要进行视频操作很麻烦,之前用过网上的代码,用的很不爽。 对  进行了封装,不过它引用的dll有点多,且没提供seek方法,无法跳到指定帧,也有点不爽,俺在 AForge.Net 对FFMPEG 封装的基础上,进行了修改,得到 Geb.Video.FFMPEG 库,现分享出来。

主要功能如下:

l 读取视频文件,获取视频参数;

l 读取帧;

l 查找帧;

l 写入视频文件。

有了这些功能,可以写一个简单的视频播放器了,当然,视频转码之类的也不在话下。在此基础上,视频分析,视频合成,视频编辑等等,都可以进行。

License:  (AFoege.Net 的 license,毕竟是从它修改的). 源码:

演示:

代码下载:

读取视频文件,获取视频参数

_reader = new VideoFileReader();_reader.Open(path);String info = String.Format("Video info:\r\n\r\n Width-{0}\r\n Height-{1}\r\n FrameCount-{2}\r\n FrameRate-{3}\r\n Codec-{4}",_reader.Width,_reader.Height,_reader.FrameCount, _reader.FrameRate, _reader.CodecName);tbInfo.Text = info;

读取下一帧:

ImageRgb24 img = _reader.ReadVideoFrame();

查找帧:

// 指定帧的编号Int64 idx = _reader.FrameCount * 2 / 3;// 跳到指定帧附近的关键帧处,true 为跳到关键帧,false 为跳到任意帧_reader.Seek(idx, true);

写入视频文件

VideoFileWriter _writer = new VideoFileWriter();_writer.Open("output.avi", _reader.Width, _reader.Height, _reader.FrameRate, VideoCodec.MPEG4);// demo 代码,之处理 100 帧for (int i = 0; i < 100; i++){    ImageRgb24 img = _reader.ReadVideoFrame();    if (img == null) break;    _writer.WriteVideoFrame(img);    img.Dispose();}_writer.Close();

不用时别忘记 Close()。

本文转自xiaotie博客园博客,原文链接http://www.cnblogs.com/xiaotie/archive/2013/01/05/2845576.html如需转载请自行联系原作者

xiaotie 集异璧实验室(GEBLAB)

你可能感兴趣的文章
如何去除My97 DatePicker控件上右键弹出官网的链接 - 如何debug混淆过的代码
查看>>
输入5个学生的信息(包括学号,姓名,英语成绩,计算机语言成绩和数据库成绩), 统计各学生的总分,然后将学生信息和统计结果存入test.txt文件中...
查看>>
BZOJ2337 [HNOI2011]XOR和路径
查看>>
C# 该行已经属于另一个表 ...
查看>>
android 避免线程的重复创建(HandlerThread、线程池)
查看>>
SQL Lazy Spool Eager Spool
查看>>
type的解释
查看>>
从自动驾驶到学习机器学习:解读2017科技发展的15大趋势
查看>>
在Linux中永久并安全删除文件和目录的方法
查看>>
全民直播时代 内容监管还得靠技术
查看>>
c++ 类的对象与指针
查看>>
java-JDBC
查看>>
对.NET跨平台的随想
查看>>
Nginx Rewrite规则初探(转)
查看>>
黑魔法NSURLProtocol 可拦截网络加载
查看>>
Integration Services创建ETL包
查看>>
IE浏览器开发中遇到的问题
查看>>
php实现按utf8编码对字符串进行分割
查看>>
Ftp的断点下载实现
查看>>
[转载] ubuntu Authentication failure
查看>>