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

这篇具有很好参考价值的文章主要介绍了视频基础知识——编码时,帧率、码率、分辨率之间的联系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要补充基础概念,在设置编码器的时候,参数设置不对,录制的屏幕就会出现花屏。所以梳理了基础知识,就知道哪里设置不对了。
如下是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)。比特率越高,单位时间传送的数据量越大。比特率表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示。

九、例子
不同参数,导致的巨大差异,主要是文件大小的差异,太大了。我们都希望高清且体积小的文件,但是参数调节不好,就不能得到理想的效果。可以看到,录屏的话,帧率不用很大,这时候,需要的码率也就不大,然后文件体积就小了。前提是,这种录制的效果,是自己可以接受的。
视频基础知识——编码时,帧率、码率、分辨率之间的联系
视频基础知识——编码时,帧率、码率、分辨率之间的联系
以上内容,是在处理音视频过程中遇到的基础知识,整理学习用。文章来源地址https://www.toymoban.com/news/detail-495495.html

到了这里,关于视频基础知识——编码时,帧率、码率、分辨率之间的联系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )

    音视频 文件 从 采样 - 处理 - 得到原始数据帧队列 - 音视频编码 - 音视频包队列 - 格式封装 的过程如下 : 封装格式 参考 【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装

    2024年04月17日
    浏览(63)
  • H.264视频编码推荐的分辨率和码率配置表

    Video Encoding Settings for H.264 Excellence 针对H.264编码格式,根据不同分辨率,推荐其对应的码率配置关系如下图所示: 如下为上限,超过这个上限再增加码率基本无太大意义!根据业务场景、帧率,建议码率为此表格的1/1、1/2、1/4、1/8 宽屏:  非宽屏: 经验值:定码率 经验值:定

    2024年02月09日
    浏览(28)
  • 视频编码及图像基础知识

    参考学习资料:https://blog.csdn.net/qq_28258885/article/details/116192244 视频编码基础 图像 像素 在消费级别,每个像素使用8bit来表示–0~255,其中,0:黑色;255:白色 在工业级别,使用10bit来表达一个像素–0~1023,精度高,颜色细腻,细节更丰富 事实是:几乎没有硬件芯片、移动设

    2024年02月13日
    浏览(33)
  • FFMPEG视频编码的基础知识

    抛砖引玉 首先我们先计算以下  1080P   60fps  的视频文件大小: 假设是RGB每色8位(也就是一个像素24位) 一帧画面像素数量:1920 * 1080  ~ 200万 一个像素: 3 字节 一帧画面 :  1920 * 1080 * 24(位像素)/8(1字节8位)/1024(1KB=1024B)/1024(1MB=1024KB)~ 5.9MB 一秒视频:    5.9MB * 60

    2024年02月16日
    浏览(35)
  • 视频的专业基础知识(一)常用的编码格式和参数

    编码格式: 一个视频文件本身,通常由音频和视频两部分组成。例如视频文件,就是由avc视频编码+AAC音频编码组成的,常见的视频编码格式有Xvid,AVC/H.264,MPEG1,MPEG2 等,常见的音频编码有MP3、AAC等。 编解码格式: 是数据按那种方式编码压缩,便于网络传输和降低带宽的需

    2024年02月13日
    浏览(34)
  • 视频基础知识(一) 视频编码 | H.26X 系列 | MPEG 系列 | H.265

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【音视频基础知识】 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪   这里的编码和之前音频知识中提到的编码(数字化编码)不是一个编码

    2024年04月09日
    浏览(36)
  • 【音视频原理】图像相关概念 ② ( 帧率 | 常见帧率标准 | 码率 | 码率单位 )

    帧率 Frame Rate , 帧 指的是 是 画面帧 , 帧率 是 画面帧 的 速率 ; 帧率 的 单位是 FPS , Frames Per Second , 是 每秒钟 的 画面帧 个数 ; 帧率 是 动画 / 电影 / 游戏 的 每秒钟 的 画面数 , 用于 测量 视频 的 信息数量 ; 帧率 越高 , 视频 信息数量越多 ; 帧率 与 流畅度 相关 , 帧率越高

    2024年01月20日
    浏览(84)
  • 爬虫基本的编码基础知识

    爬虫的编码基础知识包括以下几个方面: 网络请求:使用Python中的requests库或urllib库发送HTTP请求,获取网页内容。 解析网页:使用Python中的BeautifulSoup库或lxml库解析HTML或XML格式的网页内容,提取所需的数据。 数据存储:将爬取到的数据存储到本地文件或数据库中,常用的数

    2024年02月09日
    浏览(56)
  • 使用ffmpeg调整视频分辨率/帧率并保持高清晰度

    通过ffmpeg -i命令查看视频基本信息 通过命令查看,原始视频信息 分辨率为4096x2160,码率214092k, 帧率50 -qscale value:使用固定的视频量化标度(VBR),以value质量为基础的VBR,取值0.01-255,越小质量越好 -q:v:表示存储jpeg的图像质量 -b:v:设置输出文件的视频比特率(码率) -c:a:

    2024年02月02日
    浏览(61)
  • 【基础知识】【模块介绍】电机编码器

    目录 概述  测速原理 波形分析 解码 单相计数 A相 B相 双相计数 转速计算 电机编码器常见的是AB相电机编码器,和旋转编码器类似,传送门 常见的有光电和霍尔等,属于非接触测转速的方法 不管是光电还是霍尔的编码器本质上都是在电机的旋转轴上放上一个码盘, 不同的是

    2023年04月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包