【OpenCV(4)】使用opencv编写mp4格式和avi格式

您所在的位置:网站首页 AVI是一种什么格式文件 【OpenCV(4)】使用opencv编写mp4格式和avi格式

【OpenCV(4)】使用opencv编写mp4格式和avi格式

2024-07-16 19:59| 来源: 网络整理| 查看: 265

在之前的文章《【摄影与图像】444,422,420,10bit,8bit,RGB,YCrCb,场序,h264编码,封装,码率,PR常用配置》 说到了视频:

1、一个视频里面包含了什么? 图像音频媒体配置信息封装格式 在这里插入图片描述 2、封装格式

文件的后缀

mp4 最佳,来自动态图像专家组研发 mov 优秀,来自苹果qiucktime avi 不支持新编码

2.1 MP4格式

MP4是一种数字多媒体格式,最初由MPEG(Moving Picture Experts Group)开发,目的是让音频和视频文件更容易分享。MP4文件通常包含视频、音频和字幕等内容。 MP4支持许多不同的视频编码格式,包括H.264、H.265(HEVC)、MPEG-4、DivX、VP9等。这些格式中,H.264是最常用的,它可以提供高质量视频,可以在各种设备上流畅播放。

MP4通常支持多种音频格式,包括AAC、MP3、FLAC、WMA等。AAC是最常用的音频编码格式,因为它可以提供高质量的音频。通过将音频和视频文件打包在一起,MP4文件可以在各种设备上以高质量播放。

2.4 avi 格式

AVI是英语Audio Video Interleave(“音频视频交织”或译为“音频视频交错”)的首字母缩写,由微软在1992年11月推出的一种多媒体文件格式,用于对抗苹果Quicktime的技术。现在所说的AVI多是指一种封装格式。

尽管AVI已经属于老旧的技术,但是由于Windows的通用性,和简单易懂的开发API,仍被广泛使用。

AVI的文件结构分为“头部”,“主体”和“索引”三部分。主体中图像数据和声音数据是交互存放的。从尾部的索引可以索引跳到自己想放的位置。

AVI能使用的编码

影像文件种类(括号内表示的是此视频的FourCC) MPEG-4(MP4V/XVID/DX50/DIVX/DIV5/3IVX/3IV2/RMP4) H.264(AVC1/DAVC/H264/X264) H.263(H263/S263) 3、优秀的编码

优秀的编码在低码率下保留更多的信息,在减小文件的同时,仍然保留鲜艳的颜色信息与清晰的图像。未压缩的1080p视频1小时500GB数据,机械硬盘无法承载该数据量。编码格式应运而生:无损压缩、有损压缩。 我们如果使用 H.264 帧间压缩。还有MPEG2、MPEG4等编码器

优秀的编码在低码率下保留更多的信息,在减小文件的同时,仍然保留鲜艳的颜色信息与清晰的图像

MPEG2、MPEG4、H264的区别:

为了更好地了解MPEG2、MPEG4和H264标准,它们的特性比较如下:

MPEG4 格式使用具有 16 x 16 DCT(离散余弦变换)的算法,允许更高的压缩率,这是 MPEG2 和 MPEG4 之间的显著差异。MPEG4 和 MPEG2 都提供比 H264 更高的高清视频质量,但是MPEG2 在视频质量方面是最好的。MPEG2 具有比 MPEG4 和 H264 更大的文件大小,这使得它难以与便携式设备以及互联网视频流兼容。另一方面,MPEG4 在较小的文件中具有较高的压缩率,可以在移动网络上工作而不会损失其高质量。如果想对 DVD 上的数字数据进行编码,最理想的使用方法是 MPEG2。如果想在线和在便携式设备上对数字数据进行编码,MPEG4 是首选的编码标准。对于蓝光光盘上的视频编码,建议将 H264 作为最常用的格式。与 MPEG4 相比,MPEG2 格式更容易用作视频压缩格式。H264 是开放的,它有一个已发布的规范,基本上任何人都可以实施。MPEG4 包含更多交互功能,可以实时操作视频中的不同元素。H264 具有最大的灵活性,使其可以应用于各种系统和网络上的许多不同应用程序。 3.1 H.264 应用到MP4格式

H.264 到mp4 (1.5mpbs) ,建议码率在5-10mbps,得到较高画质的原片

4 使用 opencv 编码 avi 视频 import numpy as np import cv2 cap = cv2.VideoCapture(0) # Define the codec and create VideoWriter object fourcc = cv2.cv.CV_FOURCC(*'XVID') out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480)) while(cap.isOpened()): ret, frame = cap.read() if ret==True: frame = cv2.flip(frame,0) # write the flipped frame out.write(frame) cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break else: break # Release everything if job is finished cap.release() out.release() cv2.destroyAllWindows() 4 使用 opencv 编码 mp4 视频

视频编解码器与输出文件名不匹配。如果使用mp4v,则输出文件必须以.mp4结尾。 XVID输出文件名的相同方法应以.avi结尾

参考

https://www.codenong.com/30509573/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3