视频原理和FFmpeg

本文导读

阅读本文你将获得一下知识:

了解视频的基本原理。

了解FFmpeg是什么,和一些常用的用法。

用FFmpeg搭建简单的视频直播推流。

FFmpeg在nodeJs中的一些用法。

1.背景

短视频大行其道的年代,作为程序员势必需要了解:视频编辑背后的原理和技术。本文简略的描述了视频的组成原理,和常用的视频编辑工具,顺便提及了 NodeJs 中的用法。

想要了解视频原理,首先应该从图像原理开始说起。

2.图像基础

2.1 像素

图像画面由一个数字序列表示的图像中的一个最小单位色块,被称之像素(pixel/px)。

注意:像素只有位图才会有,是用来记录位图图像的。

img

我们所说的图像大小为1920*1080,指的就是长宽各有1920和1080的像素点,那么一张1920*1080的图片总共有的像素点为:1920*1080 = 2073600个像素点。

图像的大小如何计算?

图像的大小:像素数量 * 像素大小 = 图片大小,而像素大小像素深度 有关系。RGB表示的真彩色能表示256×256×256=16,777,216,就是我们常见的1600万色,是人眼可见的全部色彩,超出没有意义。RGB的像素深度有1bit、4bit、8bit、16bit、24bit、32bit,如在ps中下图在新建一张画布选择8bit(指rgb每种颜色占8bit),那这样1 px = 3 * 8bit = 24bit,俗称24位图。根据以上公式就能算出如下图图像的大小:500 * 378 * 24 / 8 = 567000Byte = 567000Byte / 1024 = 553.7109375 Kb,和ps显示的图像大小一样。

img

但往往真实的图片大小远比以上计算的结果小很多, 这是因为导出的图片都经过压缩的,关于图片压缩技术可自行搜索学习。

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

3.视频基础

3.1 视频和图像的关系?

img

视频就是图片一帧一帧连起来的产物,连起来的越快看着越流畅,用帧率(就是每秒播放图片的数量FPS)来衡量视频的流畅度。那么根据图片大小的算法就能算出视频的大小。

视频的大小 = 时长(秒) * 帧率(FPS)* 图片大小

那么1920×1280分辨率, 30FPS,时长1秒的视频的大小就是:1920 * 1280 * 24 / 8 * 30 / 1024 / 1024 = 210.9375 M,那么1小时的影片需要:210.9 * 60 * 60 / 1024 = 741.4453125 G,不禁一句我x,为啥我下载的大片才1G多,莫慌,视频要是这么简单,那我们太天真了,所以就有了下文「视频编码」

3.2 视频是怎么来的?

img

几个概念

  • 帧(Frame):就是一张静止的画面, 是视频的最小单位。

  • 帧速率(FPS):每秒播放图片的数量。

  • 码率(Bit Rate):视频文件在单位时间内使用的数据流量,决定视频的质量和大小,单位是kb/s或者Mb/s。一般来说同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。码流越大,说明单位时间内取样率越大,数据流,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。

    码率的常见三种模式:
    - CBR
      - 全程码率恒定
      - 文件大小可预测
      - 编码压力小,直播常用
    - VBR
      - 码率可变
      - 简单场景码率低,复杂场景码率高
    - CRF
      - 固定质量模式
      - CRF值越低,视频看起来质量越高
    复制代码

4.视频构成

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值