opencv支持多种流行视频格式文件的读取
写入应该是只支持avi,因为其他格式一般都是压缩格式,压缩格式一般都有帧间压缩,也就是不能只写一帧,可以保存为avi后,转码.
以AVI结尾的视频文件有以下几种:
1、非压缩格式的AVI文件(或是MPEG1格式的),这个不需要装任何插件就可以播放了。
2、DIVX格式的AVI,这也是MPEG4的一种,安装最新的DIVX 5.21(目前最新版),就可以播放了,不过缺点是在播放之初会有一个DIVX的标记显示几秒。
下载地址: http://gupin.fangdown.com/soft/138.htm
3、XVID格式的AVI,这也是MPEG4的一种,可以说是从DIVX变种而来的,据说是XVID原作者不满意DIVX商业化收费的行为,而开发的一个全Free的MPEG4编码核心,安装最新的XVID(1.02版)就可以播放。
下载地址: http://gupin.fangdown.com/soft/45.htm
4、ffdshow MPEG-4格式的AVI,现在越来越多的AVI都采用ffdshow MPEG-4来,集成了DIVX与XVID的一种东西(好象还支持WMV与AC3音频),因此如果你装了ffdshow MPEG-4,就可以不用装XVID与DIVX等编码核心了。另外ffdshow MPEG-4也提供丰富的滤镜功能比如增亮,增加锐度等,最新的ffdshow MPEG-4 Video Decoder 20041012。
下载地址:http://gupin.fangdown.com/soft/383.htm
5、WMV9格式的AVI,微软自己推出的MPEG4编码标准,使用Windows Media 9.0就可以播放,如果没有的话,也可以下载一个Windows Media Encoder 9.0,使你的系统支持WMV 9.0的格式。
下载地址:http://www.ogg.cn/Software/view-software-62.html
6、VP6格式的AVI,也是一种MPEG4的编码格式,On2 Technologies开发的编码器,VP6号称在同等码率下,视频质量超过了Windows Media 9、Real 9和H.264。VP6视频编码器目前被中国的EVD所采用。说真的,现在用这个不多。最新版本是VP6 vfw Codec 6.2.6.0。
下载地址:http://www.ogg.cn/Software/view-software-56.html
7、其它格式的AVI,现在看来还有一些如MKV、OGG等格式的视频编码文件也会使用AVI的结尾名。
其实AVI只是一个外壳。里面的东西可不一样的!
问题:为什么我的电脑支持AVI或者能够播出AVI,但为什么使用cvCreateFileCapture函数总返回NULL呢?
答案:尽管是AVI文件,但也可能使用了某种codec,例如:MJPEG Decompressor。需要把它转换OpenCV
支持的AVI文件. OpenCV支持的AVI如下:
Container
FourCC
Name
Description
AVI
'DIB '
RGB(A)
Uncompressed RGB, 24 or 32 bit
AVI
'I420'
RAW I420
Uncompressed YUV, 4:2:0 chroma subsampled
AVI
'IYUV'
RAW I420
identical to I420
转换格式解决方法:
解决方法1:下载mencoder.exe, 在window命令行下使用:
mencoder in.avi -ovc raw -vf format=i420 -o out.avi
(注:我测试了这个方法,没有成功,原因不详,希望有朋友们能够详细讨论一下。)
解决方法2:下载VitualDub, 我使用1.9.4版本
a. File->Open Video File;
b. Video->Filters->Add->Convert format; 选择4:2:0 Planar YCbCr (YV12)或者 32-Bit RGB。
c. Save as AVI. 保存完毕。
(注:成功使用。)
(1)cvCreateVideoWriter
创建视频文件写入器
typedef struct CvVideoWriter CvVideoWriter;
CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size,
int is_color=1 );
filename
输出视频文件名。
fourcc
四个字符用来表示压缩帧的codec 例如,CV_FOURCC('P','I','M','1')是MPEG-1 codec, CV_FOURCC
('M','J','P','G')是motion-jpeg codec等。 在Win32下,如果传入参数-1,可以从一个对话框中选择压缩方
法和压缩参数。 其它的编码器代号包括:
CV_FOURCC('P','I','M','1') = MPEG-1
codec CV_FOURCC('M','J','P','G') = motion-jpeg
codec (does not work well) CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2
codec CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3
常见的有1.0、2.0、3.0三种版本,当然是基于MPEG-4技术的,其中3.0并不能用于AVI的编码,只能用于生成支持“视频流”技术的ASF文件
codec CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4
codec CV_FOURCC('U', '2', '6', '3') = H263
H.263适用于局域网,不过一般机器上这种Codec是用来播放的,不能用于编码。H.263的编码速度快,其设计编码延时不超过150ms;码率低,在512 K 乃至 384K 带宽下仍可得到相当满意的图像效果,十分适用于需要双向编解码并传输的场合(如:可视电话)和网络条件不是很好的场合(如:远程监控)。
codec CV_FOURCC('I', '2', '6', '3') = H263I
codec CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec
FLV 是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等缺点。
若编码器代号为 -1,则运行时会弹出一个编码器选择框.
fps
被创建视频流的帧率。
frame_size
视频流的大小。
is_color
如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)。
函数cvCreateVideoWriter创建视频写入器结构。
(2) AVI到BMP
读入avi,提取每一帧,存成BMP
CvCapture* capture = cvCreateFileCapture("filename.avi");
int i;
CString str;
IplImage* frame;
for (i=0;i<30;i++)
{
frame = cvQueryFrame(capture);
str.Format("%d.bmp",i);
cvSaveImage(str,frame);
}
cvReleaseCapture(&capture);
BMP到AVI :依次读入BMP,写入avi
MPEG1:
是目前实时视频压缩的主流,可适用于不同带宽的设备,如CD-ROM、Video-CD、CD-I与M-JPEG技术相比较,在实时压缩、每帧数据量、处理速度上均有显著的提高。MPEG1可以满足多达16路以上25帧/秒的压缩速度,在500kbit/s的压缩码流和352像素×288行的清晰度下,每帧大小仅为2k。若从VCD到超级VCD到DVD的不同格式来看,MPEG1的352 ×288格式,MPEG2可有576×352、704 ×576等,用于CDROM上存储同步和彩色运动标视频信号,旨在达到VCR(模拟式磁带录放机Video Cassette Recorder;VCR)质量,其视频压缩率为26:1。MPEG1可使图像在空间轴上最多压缩1/38,在时间轴上对相对变化较小的数据最多压缩1/5。MPEG1压缩后的数据传输率为1.5Mbps,压缩后的源输入格式SIF(Source Input Format),分辨率为352像素×288行(PAL制),亮度信号的分辨率为360×240,色度信号的分辨率为180×120,每秒30帧。MPEG1对色差分量采用4:1:1的二次采样率。MPEG1、MPEG2是传送一张张不同动作的局部画面。在实现方式上,MPEG1可以借助于现有的解码芯片来完成,而不像M-JPEG那样过多依赖于主机的CPU。与软件压缩相比,硬件压缩可以节省计算机资源,降低系统成本。
M-JPEG:
MPEG压缩是根据运动图像相邻帧之间有一定的相似性原则,通过运动预测,参考前一帧图像与这一帧图像的相似情况,去掉与前一帧相似的冗余数据,而只记录这一帧与上一帧不同的数据,从而大大提高了视频数据的压缩效率,这种压缩方法也称为帧相关压缩。 MPEG压缩是以图像组(GOP)为一个单元的,由I帧B、P帧构成。一般情况下一个图像组(GOP)由15帧组成,第一帧为一个I帧,依次为1个P帧,2个B帧,由此构成I PBB PBB PBB……结构。I帧称为参考帧,所谓参考帧是其它帧都参考的起始帧,所以I帧是一个能够完全记载这一帧全部图像数据的帧。亦称作全帧。P帧是前向预测帧,是根据与前一帧图像的比较,去掉与前帧相似的数据而构成的帧。B帧是双向预测帧,是根据与前后一帧图像的比较而得到的帧。P、B帧是一个不完全帧,它需要依靠I帧而成立。可见MPEG有二大特点:
· 第一、 因为采用运动预 测帧压缩方式,针对视频压缩有很好的效果,在获得广播级数字视频质量的前提下,可以实现20:1的压缩效率,数据率可降至1M Byte/s(8M bit/s),一小时视频节目占用3.6GB空间。数据存储空间利用率高,网络传输效率是M-JPEG系统的5倍以上。
· 第二、 由于MPEG-II格式只有I帧是一个完整的帧。所以在电视需要帧精确 地进行剪接时会带来一的困难
opencv支持多种流行视频格式文件的读取相关推荐
- 支持avi mkv的html视频插件,PS4更新加入媒体播放器 支持多种音频视频格式
就在今天E3之后,PlayStation官方博客发表了公告称,新的媒体播放器功能已更新至PS4之中.这样使得你的PS4可以成为一个玩游戏之外的综合媒体播放设备,玩家可以通过Wifi或使用USB将电影和 ...
- [转载]流行视频格式讲解
*. MPEG/.MPG/.DAT MPEG也是Motion Picture Experts Group 的缩写.这类格式包括了 MPEG-1, MPEG-2 和 MPEG-4在内的多种视频格式.MP ...
- Windows 下令 OpenCV 支持 h.264 视频编码的方法
引言 OpenCV 和 ffmpeg 修改 opencv_ffmepgdll 的步骤 安装 MinGW 编译 x264 编译 ffmpeg 生成 opencv_ffmpegdll 准备 生成 测试 结 ...
- 企信下载的文件在哪里_第28期分享:PR如何剪辑MKV视频格式文件?
很多小伙伴在网上下载的MKV视频格式的文件无法正常编辑,如PR等对于封装格式不支持,为解决这一问题,小编教大家如何使用工具进行格式转换,然后使用PR进行剪辑. 软件简介:格式工厂是套万能的多媒体格式转 ...
- Android MediaPlayer支持的音视频格式和协议
Android MediaPlayer支持的音视频格式和协议 2018年04月18日 18:33:42 阅读数:11127 标签: MediaplayerIjkPlayerAndroid音视频Andr ...
- 动态html动画是什么格式,gif动态图片制作视频格式文件
有时我们在视频编辑中想要插入某个GIF动态图片素材,但一些非线性视频编辑软件如Premiere,是不支持直接导入gif格式文件的.这时要能把gif动态图片制作成视频格式文件那就好办多了.方法是有滴,看 ...
- 【githubshare】免费开源的视频编辑器,兼容 Windows、macOS、Linux 等主流操作系统。支持最新音视频格式与 4K 分辨率,可实现视频特效
GitHub 上一款免费开源的视频编辑器:Shotcut,兼容 Windows.macOS.Linux 等主流操作系统. 支持最新音视频格式与 4K 分辨率,可实现视频特效添加.内容剪切.时间轴校对. ...
- pydicom读取头文件_.dcm格式文件软件读取及python处理详解
要处理一些.dcm格式的焊接缺陷图像,需要读取和显示.dcm格式的图像.通过搜集资料收集到一些医学影像,并通过pydicom模块查看.dcm格式文件. 若要查看dcm格式文件,可下echo viewe ...
- 阿里云ECS云服务器Windows如何通过IIS配置网站支持flv、mp4等文件访问读取
阿里云ECS云服务器Windows 如何通过IIS配置网站支持flv,mp4等文件访问读取,通过IIS配置的网站,如果需要播放一些例如flv.mp4的特殊文件,需要在站点配置中添加自定义MIME类型, ...
最新文章
- 数据分析IJCAI 2020:录用率12.6%,华人占据半壁江山,表征学习、GNN成热点 | AI日报...
- LeetCode: 102. Binary Tree Level Order Traversal
- 年终盘点:2021年AI领域值得关注的十件事
- wps 选择 高亮_WPS的这些功能,竟然如此好用
- OC基础之访问修饰符
- Linux通过GPIO状态实现按键上报(按键功能)
- 算法笔记_036:预排序(Java)
- 数据可视化可视化营养含量
- Python学习之解释器的简单使用
- Chrome谷歌浏览器 强制跳转https解决方案
- Element-UI中el-input输入值不显示
- Yii2实现自定义独立验证器的方法
- promoter:启动子预测程序(PPPs)软件现状及分析
- 商品期货日内 Dual Thrust 交易策略
- 怎样用EXCEL对数值型字段进行分组?
- git init报错Reinitialized existing Git repository
- .asd文件如何恢复
- gtk之G_LIKELY(expr)和G_UNLIKELY(expr)
- 经典非局部均值滤波(NLM)算法python实现(2)
- 解决报错npm ERR request to https://registry.cnpmjs.org/wangeditor failed, reason: Hostname/