.Net下使用 Geb.Video.FFMPEG 操作视频文件
来源:互联网 发布:数据库课后答案 编辑:程序博客网 时间:2024/06/06 03:28
作者:xiaotie
转自:http://www.cnblogs.com/xiaotie/archive/2013/01/05/2845576.html
.Net 下默认没有读写视频的类,要进行视频操作很麻烦,之前用过网上的代码,用的很不爽。AForge.Net 对ffmpeg 进行了封装,不过它引用的dll有点多,且没提供seek方法,无法跳到指定帧,也有点不爽,俺在 AForge.Net 对FFMPEG 封装的基础上,进行了修改,得到 Geb.Video.FFMPEG 库,现分享出来。
主要功能如下:
l 读取视频文件,获取视频参数;
l 读取帧;
l 查找帧;
l 写入视频文件。
有了这些功能,可以写一个简单的视频播放器了,当然,视频转码之类的也不在话下。在此基础上,视频分析,视频合成,视频编辑等等,都可以进行。
License: LGPL v3 license (AFoege.Net 的 license,毕竟是从它修改的). 源码:https://github.com/xiaotie/GebVideoFFMPEG
演示:
代码下载:Geb.Video.FFMPEG.Demo
读取视频文件,获取视频参数
_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()。
0 0
- .Net下使用 Geb.Video.FFMPEG 操作视频文件
- 使用 ffmpeg 截取视频文件图片
- 使用ffmpeg播放视频文件的过程
- 使用ffmpeg命令对视频文件进行截图
- 使用 FFmpeg 开发播放器基础--使用 ffmpeg 解码视频文件
- Android Video播放Raw目录下的视频文件
- 使用ffmpeg转换YUV raw video
- AForge.Video.FFMPEG库使用注意事项
- wamp下配置ffmpeg-php 以及处理音乐视频文件方法
- wamp下配置ffmpeg-php 以及处理音乐视频文件方法
- Centos7系统下安装opencv2.4.9+ffmpeg读取视频文件
- 使用ffmpeg进行视频文件转换成FLV整理
- 使用ffmpeg进行视频文件转换成FLV整理
- 使用ffmpeg合并视频文件的三种方法
- 使用ffmpeg合并视频文件的三种方法
- 使用ffmpeg合并视频文件的三种方法
- 使用ffmpeg合并视频文件的三种方法
- 使用ffmpeg合并视频文件的三种方法
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- C# 下写入视频的简单实现
- apache ftp配置
- hdu 3488 Tour KM
- 地产公司新建商业中心调研-调查对象及内容
- .Net下使用 Geb.Video.FFMPEG 操作视频文件
- Maximal Rectangle
- 线段树的实现求解格子操作
- 我的C++第二周作业(第一章)
- 关于spec2006的调研
- 部署项目到tomcat容器下
- 时间
- Linux数据类型大小--->int,char,long int,long long int
- iOS objective-c 获取mac地址