视频分辨率、码率、帧率、采样率

前言

所谓“清晰”,是指画面十分细腻,没有马赛克。当然视频文件不是单独的图片文件,而是由一帧帧连续图片构成的,所以还与播放时的流畅性有关。故视频文件的清晰度通常与视频文件的分辨率、帧率、码率有关,采样率是类归于音频方面的随便在这里讲解一下,因为在封装时通常会涉及到,除非外挂音频。

视频分辨率

指每一帧画面的大小,宽乘高等于若干像素。例如某一液晶显示屏的最大分辨率为1440 × 900,而视频文件的分辨率为1024 × 567,那么此视频文件在播放时每个像素点就得经过放大处理,如果放大倍数过多则出现马赛克。

目前主流的高清格式通常为:720p(1280×720)和1080p(1920×1080)还有一种为非主流格式的1080i(1920×1080),1080i和720p对电脑硬件的要求差不多。

实际上720p(1280×720)在分辨率为1440 × 900的显示器的播放时,横向像素的放大人眼根本就看不出来的。所以在选择格式时要视自己终端显示器的最大分辨率到底支持为多高。

码率

也就是比特率,指单位时间传输的或解码的位数,当然也可以换算成字节,数值越大越好,但是体积会变大的。

码率越高,影像的质量越高,对电脑硬件的要求也越高。蓝光的码率能达到30多M/秒,有的极端的场面达到60M/秒(75930.83 kbs) 。而有的BDre的1080P的码率和720P的码率一样才10多M左右/秒(E.G: 14445.04 kbs)甚至更低。你就发觉质量反而不如720P的(大屏幕上一目了然)。

压制时得在质量与速度两者之间找到一个平衡点,要不配置低的机器播放高码率时就会来不及解析而卡住从而使播放不流畅甚至出现卡死现象。

帧率

指播放时每秒移动多少帧。一般NTSC①是30,PAL②是25,帧速太低则画面不连续播放的流畅性就差.所以要恰到好处才行。
1. NTSC制式,又简称为N制,是1952年12月由美国国家电视标准委员会(National Television System Committee,缩写为NTSC)制定的彩色电视广播标准,两大主要分支是NTSC-J与NTSC-US(又名NTSC-U/C)。
2. PAL制式是电视广播中色彩调频的一种方法,全名为逐行倒相 (Phase Alternating Line)。除了北美,东亚部分地区使用 NTSC制式 ,中东、法国及东欧采用 SECAM制式 以外,世界上大部份地区都是采用 PAL。

采样率

指每秒采集的次数,这个是指音频的,采的越多,声音质量越好,当然体积也会大。

小结

从上面的参数可以看出:
1. 码率影响体积,与体积成正比;码率越大,体积越大;码率越小,体积越小。
2. 帧率影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。
3. 分辨率影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。

总结

在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。

在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。

但是,事实情况却不是这么简单。可以这么说:在码率一定的情况下,分辨率在一定范围内取值都将是清晰的;同样地,在分辨率一定的情况下,码率在一定范围内取值都将是清晰的。

所以总体来说在已经封装完成的视频文件中分辨率与码率真越高清晰度便越好。

前端无法直接获取视频的相关信息,需要借助一些第三方库或者后端接口来实现。以下是一种基本的思路: 1. 获取视频地址,可以使用 HTML5 的 video 标签来实现。 ```html <video src="your-video-url"></video> ``` 2. 创建一个新的 video 元素,将视频地址赋值给它,并监听它的 loadedmetadata 事件。在事件回调中可以获取到视频的基本信息,如时长等。同时,还可以通过 video 元素的 videoWidth 和 videoHeight 属性获取视频分辨率。 ```javascript const video = document.createElement('video'); video.src = 'your-video-url'; video.addEventListener('loadedmetadata', () => { console.log('视频时长:', video.duration); console.log('视频分辨率:', video.videoWidth, 'x', video.videoHeight); }); ``` 3. 获取视频码率帧率、总帧数等信息,需要使用一些第三方库,如 ffprobe.js。该库提供了一个 JavaScript 封装,可以在浏览器中轻松地获取视频的详细信息。使用方法如下: ```javascript const probe = require('ffprobe.js'); probe('your-video-url').then((info) => { console.log('视频码率:', info.format.bit_rate); console.log('视频编码格式:', info.streams[0].codec_long_name); console.log('音频编码格式:', info.streams[1].codec_long_name); console.log('音频采样率:', info.streams[1].sample_rate); console.log('音频采样位率:', info.streams[1].bits_per_raw_sample); console.log('总帧数:', info.streams[0].nb_frames); console.log('帧率:', info.streams[0].r_frame_rate); console.log('幅面:', info.streams[0].display_aspect_ratio); }).catch((error) => { console.log('获取视频信息失败:', error); }); ``` 需要注意的是,ffprobe.js 库需要在服务器端运行,无法在前端直接使用。因此,在前端获取视频信息时,需要将请求发送到服务器端,由服务器端调用 ffprobe.js 库来获取视频信息,然后将结果返回给前端。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值