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

news2025/1/12 4:01:51

在之前的文章《【摄影与图像】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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1203522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过百度翻译API完成Java中的中英文翻译

因为要做英文文献索引分词,所以对于索引词汇必须得是英文,将表中的中文都转换成英文 这里用到百度的翻译API 首先需要注册成为百度翻译开发者:百度翻译开放平台 注册成为个人开发者就可以, 这里可以完善相关信息,要记…

关于C++链接的一些理解

无论是.h还是.cpp,都可以写声明或者实体,而且.h和.cpp的前面的名字相同不相同没有任何的影响 最终一系列要连接的程序中,必须有且只有一个源文件有main函数,然后从这个main函数开始运行 include的作用其实是跟define一样的&#x…

高效筛选的秘密武器:JVS智能BI的‘and’与‘or’逻辑

在这个信息爆炸的时代,数据被誉为新时代的黄金和石油,蕴含着无尽的价值和潜力。然而,随着数据的爆炸式增长,如何高效、准确地从海量数据中提取出真正有价值的信息,成为摆在我们面前的一大挑战。我们需要用数据筛选工具…

app软件开发多少钱?功能会影响价格吗?

随着智能手机的普及,app开发市场日益繁荣,很多人都有开发app的梦想,但开发一款app需要多少钱呢?功能是否会影响价格?本文将为你揭开这个谜团。 一、app开发费用的影响因素 app开发费用受到多种因素的影响,例如开发难度、功能复…

垂直领域对话系统架构

垂直领域对话系统是指针对特定领域或行业的需求而构建的对话系统。这种系统通常需要具备高度的专业知识和对特定领域的知识库进行深入的学习和训练,以便能够提供准确、高效、实用的服务。 垂直领域对话系统的构建通常包括以下步骤: 确定目标领域或行业…

OpenCV:图像噪点消除与滤波算法

人工智能的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心,我为大家整理了一份600多G的学习资源,基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

飞天使-template模版相关知识

遇到报错django.template.exceptions.TemplateSyntaxError: ‘staticfiles’ is not a registered tag library. Must ROOT_URLCONF TEMPLATES [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR, templates)],APP_DIRS: True,OPTI…

css实现进度条

预期样式 方法一 <script setup> import { ref } from "vue"; // import ScreenLeft from "./ScreenLeft/index.vue"; const width ref("76.5%"); </script><template>Screen<div class"progress-contain">…

RT-DETR算法优化改进: 一种新颖的可扩张残差(DWR)注意力模块,加强不同尺度特征提取能力

💡💡💡本文全网首发独家改进:一种新颖的可扩张残差(DWR)注意力模块,加强不同尺度特征提取能力,创新十足,独家首发适合科研 1)代替RepC3进行使用; 2)DWR直接作为注意力进行使用; 推荐指数:五星 RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_63774211/…

Mysql-库的操作

1.创建数据库 CREATE DATABASE [IF NOT EXISTS] name name后可以加 CHARACTER SET 或者是 charsetname COLLATE collation_name &#xff08;mysql数据库不区分大小写&#xff09; 说明&#xff1a; name表示想创建的库的名字大写的表示关键字 [] 是可选项 CHARACTER SET…

linux openlab搭建web网站

网站需求&#xff1a; 1.基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c; 1、基于 www.openlab.com/student 网站访问学生信息&#xff0c; 2、基于 www.openlab…

Chrome版本对应Selenium版本

1.获得浏览器版本号和驱动 访问 https://vikyd.github.io/download-chromium-history-version/ 2. 安装selenium pip install selenium3.141.0 -i http://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn 3.解压chromedriver到python目录下 4.设…

通讯协议学习之路(实践部分):SPI开发实践

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 本文…

xinput1_3.dll丢失的详细解决步骤办法和比较,五种有效的解决办法

今天想和大家分享一个电脑中经常出现的问题——xinput1_3.dll丢失。这个文件丢失是一件常见的问题。不知道小伙伴们有没有遇到过这样的问题&#xff0c;如果你遇到这样的问题今天就教大家xinput1_3.dll丢失的详细解决步骤办法和比较&#xff0c;五种有效的解决办法。 一.xinput…

本地跑项目解决跨域问题

跨域问题&#xff1a; 指的是浏览器不能执行其他网站的脚本&#xff0c;它是由浏览器的同源策略造成的&#xff0c;是浏览器对 javascript 施加的安全限制。 同源策略&#xff1a; 是指协议&#xff08;protocol&#xff09;、域名&#xff08;host&#xff09;、端口号&…

开源7合一万能DIY小程序源码系统 一个后台整合7端 轻松搭建小程序 带完整搭建教程

随着移动互联网的快速发展&#xff0c;小程序已经成为了一个炙手可热的领域。但是&#xff0c;对于很多开发者来说&#xff0c;搭建一个小程序并不容易。为了解决这个问题&#xff0c;罗峰来给大家介绍一款开源的7合一万能DIY小程序源码系统&#xff0c;它可以将7个端整合到一个…

如何利用大模型蒸馏出小模型实现降本

如何让小模型的推理效果在某些领域比 ChatGPT 这样的大模型还要更强&#xff1f;这篇论文提供了一个思路&#xff1a;https://arxiv.org/abs/2212.10071&#xff0c;借助思维链&#xff08;CoT&#xff09;逐步解决复杂推理任务的能力&#xff0c;可以使用大模型作为推理教师&a…

虚拟专用网络

目录 数据安全三要素 加密技术 对称加密 非对称加密 VPN介绍 VPN类型 VPN隧道技术 案例使用 传输模式 隧道模式 IPsecVPN IPsecVPN两阶段 管理连接 命令 数据连接 命令 将IPsecVPN两阶段应用在外网端口 创建map映射表 将map表应用到外网端口 VPN连接查看命…

JOSEF约瑟 反时限过流继电器JGL-115板前接线5A速断保护

系列型号 JGL-111反时限过流继电器&#xff1b;JGL-112反时限过流继电器&#xff1b; JGL-113反时限过流继电器&#xff1b;JGL-114反时限过流继电器&#xff1b; JGL-115反时限过流继电器&#xff1b;JGL-116反时限过流继电器&#xff1b; JGL-117反时限过流继电器&#xff1b…

Docker学习——⑦

文章目录 1、Docker 为什么需要网络管理2、Docker 网络架构简介2.1 CNM2.2 Libnetwork2.3 驱动 3、常见网络类型4、docker 网络管理命令5、网络详解5.2 docker Bridge 网络5.2 docker Host 网络5.3 docker Container 网络5.4 docker none 网络 1、Docker 为什么需要网络管理 容…