视频基础知识——编码时,帧率、码率、分辨率之间的联系

news2024/10/6 18:30:17

本文主要补充基础概念,在设置编码器的时候,参数设置不对,录制的屏幕就会出现花屏。所以梳理了基础知识,就知道哪里设置不对了。
如下是ffmpeg自带的sample,encode_video的例子,选取H264的编码器,进行编码。

const AVCodec *codec;
AVCodecContext *c= NULL;
 
/* find the mpeg1video encoder */
codec = avcodec_find_encoder_by_name(codec_name);
c = avcodec_alloc_context3(codec);
 
/* put sample parameters */
c->bit_rate = 400000;
/* resolution must be a multiple of two */
c->width = 352;
c->height = 288;
/* frames per second */
c->time_base = (AVRational){1, 25};
c->framerate = (AVRational){25, 1};
 
    /* emit one intra frame every ten frames
     * check frame pict_type before passing frame
     * to encoder, if frame->pict_type is AV_PICTURE_TYPE_I
     * then gop_size is ignored and the output of encoder
     * will always be I frame irrespective to gop_size
     */
c->gop_size = 10;
c->max_b_frames = 1;
c->pix_fmt = AV_PIX_FMT_YUV420P;
 
if (codec->id == AV_CODEC_ID_H264)
        av_opt_set(c->priv_data, "preset", "slow", 0);
 
/ * open it */
ret = avcodec_open2(c, codec, NULL);

其中,c->bit_rate = 400 000; 一直不知道怎么来的,导致录制屏幕花屏。下面整理了基础知识,才知道这个东西是怎么来的,以及如何设置。

一、像素
通常说的像素,一般指图像含有多少个像素点。

720P: 实际像素是1280x720,相乘结果921600, 即有921600个像素点,也就是常说的100万像素
1080P:实际像素是1920x1080,相乘结果2073600,即有2073600个像素点,也就是常说的200万像素
二、图像占用空间大小计算
公式:图像像素数 * 图像位深 / 8 = 占用字节。一个像素点占用8位。

比如:一张图片像素为:1024x1024,位深32位,则图像大小为:1024102432/8=4194304byte = 4KB 1024102432/8=4MB
三、分辨率
分辨率是指设备输出分辨率或叫屏幕 分辨率,即屏幕上横竖有多少个容器点,每个容器点用于容纳一个像素。说人话就是:屏幕的像素点总和。比如某手机分辨率为720*640, 给它播放1080P的视频,根本不能发挥1080P的优势。

常见的视像分辨率有352×288,176×144,640×480,1024×768
四、密度
每英寸包含多少个像素点,单位PPI(pixel per inch).
在这里插入图片描述
根据公式,就可以计算出,这个5.8寸的手机的PPI是多少。PPI超过300就可以算是视网膜屏了,肉眼已经分辨不出像素点来。
四、码流(data rate):
是指视频文件在单位时间内使用的数据流量,也叫码率,经过视频压缩后每秒产生的数据量,而压缩是去掉图像的空间冗余和视频的时间冗余,是视频编码中画面质量控制中最重要的部分。同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。

码流越大,说明单位时间内取样率越大,数据流的精度就越高,处理出来的文件就越接近原始文件,画面质量越好,画质越清晰,要求播放设备的解码能力也越高。

对应ffmpeg中的就是 c->bit_rate。单位kb/s 或Mb/s。

在开发过程中,如果一帧图像的尺寸设置成:352388,20帧/秒, 35238820=2 731 520b/s(压缩前), 所以压缩后 bit_rate = 400 000, 则画面清晰,且录制的视频也比较小。如果尺寸设置成1280720,则bit_rate需要设置大一些,比如设置成800 000, 此时画面才会清晰,如果依然设置成400000,则画面非常模糊,像打马赛克一样。 当尺寸改大,且bit_rate设置大时,录制的视频文件也会偏大。
六、视频文件大小的计算
视频文件大小:(音频码率+视频码率)*时长/8 。 前面单位是kbit, 体积单位也是kb

如果一个视频码率为3Mbps, 音频码率为512Kbps,时长是90分钟(5400秒),那么整个文件大小就是: (3+512/1024)* 5400/8=2362.5MB=2.307G
一个视频文件的大小为5.86M,播放时长为3分7秒: 则该文件对应的码流就是:5.86 * 1024 * 1024 * 8 / (3 * 60 + 7) =262872.95657754bps=262.873Kbps=0.263Mbps
通过上面的分析,可以看出,码率对视频文件的大小,影响很关键呀!
七、帧速率
帧速率(画面的实时性、流畅性),指每秒钟刷新的图片的帧数。也可以理解为图形处理器每秒钟能够刷新几次。对视频内容而言,帧速率指每秒所显示的静止帧格数。要生成平滑连贯的动画效果,帧速率一般不小于8;而电影的帧速率为24fps。捕捉动态视频内容时,此数字愈高愈好。

八、比特率
比特率是指每秒钟传送的比特(bite)数。单位为bps(Bit Per Second)。比特率越高,单位时间传送的数据量越大。比特率表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示。

九、例子
不同参数,导致的巨大差异,主要是文件大小的差异,太大了。我们都希望高清且体积小的文件,但是参数调节不好,就不能得到理想的效果。可以看到,录屏的话,帧率不用很大,这时候,需要的码率也就不大,然后文件体积就小了。前提是,这种录制的效果,是自己可以接受的。
在这里插入图片描述
在这里插入图片描述
以上内容,是在处理音视频过程中遇到的基础知识,整理学习用。

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

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

相关文章

基于SpringBoot和协同过滤算法的体育商城系统的实现

最近帮小伙伴做了个基于SpringBoot和协同过滤算法的体育商城系统。 文章目录 一,SpingBoot介绍二,协同过滤算法介绍三,系统功能需求四,系统功能演示五,系统核心代码演示 一,SpingBoot介绍 现如今后台开源框…

企业寻求最大化投资回报率的24个社交媒体技巧

社交媒体营销不是银弹。它不会解决您所有的业务问题,也不会让您一夜成名。但是,如果您愿意投入时间和精力,社交媒体可以成为建立关系、建立信誉和发展业务的强大工具。 在这篇文章中,我们将分享24个社交媒体技巧,以帮…

React 演示Hook中发送网络请求

我这里本地用java写了个接口 当我访问 http://localhost:8080/books 就会发出一个无惨的 get请求 返回内容如下 这里 我返回了一个 json对象 然后 我们在react项目的src目录下创建setupProxy.js 参考代码如下 const proxy require(http-proxy-middleware)module.exports f…

您的Android密钥安全吗?一招教你安全加固

您的Android密钥安全吗?一招教你安全加固 你是否担心你的Android应用中的敏感数据会被披露出去?如果是的话,别担心,你并不是唯一一个有这样担忧的人。在今天的世界里,保护你的应用的URL和密钥免受逆向工程的风险变得比…

前端Vue图片上传组件支持单个文件多个文件上传 自定义上传数量 预览删除图片 图片压缩

前端Vue图片上传组件支持单个文件多个文件上传 自定义上传数量 预览删除图片 图片压缩, 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id13099 效果图如下: ## 1.0.0(2023-06-18) 组件初始化 #### …

三、多层感知机及模型优化

文章目录 前言一、多层感知机1.1 隐藏层1.1.1 什么叫隐藏层1.1.2 为什么需要隐藏层 1.2 激活函数1.2.1 ReLU函数1.2.2 Sigmoid函数1.2.3 tanh函数 1.3 多层感知机的代码实现 二、模型选择、欠拟合和过拟合2.1 训练误差和泛化误差2.2 模型选择2.2.1 模型复杂性2.2.2 验证集2.2.3…

机器学习强基计划9-1:图解匹配追踪(MP)与正交匹配追踪(OMP)算法

目录 0 写在前面1 字典学习2 稀疏表示与稀疏编码3 匹配追踪MP算法4 正交匹配追踪OMP算法 0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型&#xff…

CSS小技巧之悬停3D发光效果

今天要实现的效果如图所示,鼠标悬停是图片卡片会有3D翻转的效果,且动画过程中还带有发光的效果。类似这种3D悬停效果日常看到的比较多,但是今天实现的这个效果有以下几个亮点: 核心CSS代码不超过10行没有额外的元素(只…

STM32 MCO+SPI获取24位模数转换(24bit ADC)高速芯片ADS1271采样数据

STM32 MCOSPI获取24位模数转换(24bit ADC)高速芯片ADS1271采样数据 STM32大部分芯片只有12位的ADC采样性能,如果要实现更高精度的模数转换如24位ADC采样,则需要连接外部ADC实现。ADS1271是 TI公司一款高速24位Σ-Δ型模数转换器(…

[每周一更]-(第50期):Go的垃圾回收GC

参考文章: https://juejin.cn/post/7111515970669117447https://draveness.me/golang/docs/part3-runtime/ch07-memory/golang-garbage-collector/https://colobu.com/2022/07/16/A-Guide-to-the-Go-Garbage-Collector/https://liangyaopei.github.io/2021/01/02/g…

【前端布局篇】浮动、定位、弹性布局,固比固、双飞翼、圣杯布局

一、布局方式介绍 布局模型是基于盒模型基础上进行的拓展,关于布局有流式布局(标准的布局),浮动布局、定位布局、flex布局等。 1.1 标准流(流动模型) 描述:元素按照自己默认的元素类型在页面…

社区问答精选——长安链开发知多少?(6月)

此次整理的内容为5-6月社群内的问答供更多开发者参考(社群中部分优质问题连贯性不足未能收录,欢迎点击公众号菜单栏加入社群共同交流)。有更多问答在社区issue中描述更为细致,开发者提问前可以先按照关键词进行搜索。欢迎各位开发…

Doris FE启动流程源码解读

FE启动流程分析 Doris中FE主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成等工作。 本文主要看一下Doris的fe在启动时做了什么。 启动流程分析 启动流程图: 代码路径: doris/fe/fe-core/src/main/java/org/apache/doris/DorisFE.j…

华为云CodeArts Build快速上手编译构建-进阶玩家体验

华为云CodeArts Build编译构建为开发者提供配置简单的混合语言构建平台,实现编译构建云端化,支撑企业实现持续交付,缩短交付周期,提升交付效率。支持编译构建任务一键创建、配置和执行,实现获取代码、构建、打包等活动…

react+antd实现表格封装,可动态控制列显示隐藏。

实现效果 import { Table, Pagination, Button, Dropdown, Checkbox, message } from antd; import { useState, useEffect } from react; import { PicRightOutlined } from ant-design/icons;import ./index.less;const TableComponent (props) > {const powerList JSON…

【方法】Excel表格的“打开密码”不想要了,如何取消?

对于重要的Excel表格,很多小伙伴都会设置“打开密码”,这样就无法随意打开表格,只有输入正确的密码才可以打开。 如果后续表格不再需要保护,每次打开都要输一次密码,这样操作也是很麻烦。 那不想要“打开密码”&…

(5)(5.8) 保存微调和自动微调

文章目录 前言 1 保存微调 2 自动微调 3 保存微调和自动微调的视频演示 4 桌面方法 前言 当然,风对你的旋翼飞机有很大的影响,会把它推来推去。然而,你可能也会发现,在自稳模式下飞行时,即使在无风的环境中&#xff0…

chatgpt赋能python:Python重新编辑引擎优化(SEO)文章

Python重新编辑引擎优化(SEO)文章 介绍 Python是一种多用途的高级编程语言,用于开发网络应用程序,算法,科学计算和数据分析等。 随着越来越多的网站和应用程序采用Python编写,优化Python代码以提高搜索引擎优化(SEO)变得越来越重…

基于html+css的图展示133

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

科技孵化制造蝶变:国际智造节上,群硕获评2023杰出数字化创新企业

论起2023年的热点有哪些?由ChatGPT掀起的智能科技浪潮,绝对是逃不开的话题。 6月16日,以“科技驱动,智造未来”为主题的2023国际智造节,在北京隆重举行。通过此次活动,在数字化领域深耕二十年的群硕软件&a…