短视频技术轮廓

目录

1、技术基础

1.1、视频采集

1.2、视频压缩

1.3、视频编码

1.4、视频存储

1.5、视频播放

1.5.1、本地视频播放四个阶段。

1.5.2、在线视频播放四个阶段:

2、核心技术

2.1、GPU

2.2、OpenGL & OpenGL ES

2.3、OpenCV

2.4、DirectX

2.5、CUDA

2.6、OpenCL

2.7、Metal

3、短视频SDK技术

3.1、国内SDK现状

3.2、美摄SDK

4、外延技术

4.1、HTTP

4.2、CDN

4.3、推流拉流

4.4、RTMP

4.5、RTSP

4.6、HLS

4.7、负载均衡

4.8、WebRTC

4.9、OBS

4.10、客户端

5、总结


       时光变换,短视频从出现到发展,经历了渐进的过程。与传统视频相比,是文化与社会属性不同,即消费人群、生产成本、生产工具、丰富性、分发关系不同。

 

       技术为短视频发展带来巨大活力。视频本身而言,短视频技术和视频技术是一样的,今天谈一下(短)视频的技术范畴。

 

1、技术基础

       短视频技术首先是视频采集、压缩、编码、存储、播放等。与相关硬件关联,这属于短视频的技术基础。

 

1.1、视频采集

       视频采集是硬件范畴,把模拟视频转换成数字视频,按数字视频文件的格式保存。视频采集是将模拟摄像机、录像机、LD视盘机、电视机输出的视频信号,通过模拟、数字转换设备,转换为二进制数字信息的过程。视频采集中,目前视频采集卡是主要设备。

1.2、视频压缩

       视频采集后获取大量的模拟数据,直接处理和传输是不现实的,必须对数据进行压缩。视频压缩分为硬件级压缩和软件级压缩,压缩标准与编码关联,编码与具体的文件格式照应。

       视频数据存在着空间冗余、时间冗余、结构冗余、知识冗余、视觉冗余,这些冗余为视频压缩提供了前提。下图是一个典型的视频压缩过程。

 

1.3、视频编码

       视频编码是通过压缩技术,将原始视频文件的格式转换成另一种视频文件。目前重要的编解码标准有,国际电联的H.261、H.263、H.264,运动静止图像专家组的M-JPEG运动图像专家组的MPEG系列,Real-Networks的RealVideo、微软公司的WMV,Apple公司的QuickTime等。

       视频压缩和视频编码是一体的,每一种视频编码对应一种视频压缩算法。香农信息论对视频编码有着广泛的指导意义,以集合论为基础,概率与数理模型描述信源展开。视频编码发展历程以香农信息论为出发点,不断完善和发展。 

       编码方法可分为两代:第一代基于数据统计,去掉数据冗余,低层压缩编码方法;第二代是基于内容,去掉内容冗余。基于对象的方法称为中层压缩编码方法,基于语义的方法称为高层压缩编码方法。

       基于内容压缩编码方法是新一代压缩方法,是最活跃的领域,最早由瑞典的Forchheimer提出的,随后日本的Harashima等人跟进研究。

 

1.4、视频存储

       视频存储与硬件关联不大,一般在操作系统下进行,有完善的编程接口,采用传统的IO技术来进行处理。存储的概念今天也有巨大的发展,从传统的单机存储、服务器存储、再到云存储。近两年有一个热点概念,区块链存储。目前用的最多的是单机存储和云存储。区块链存储是云存储的加强版,对于真正视频数据的区块链存储,未来10年仅仅存在书籍上。

1.5、视频播放

       视频播放分为本地播放和在线播放。本地播放随着计算机的出现发展起来,在线播放随着互联网技术的发展而来。

 

1.5.1、本地视频播放四个阶段。

       A、acess访问,接收、获取、得到

       B、demux解复用,合在一起的音频和视频分离(还有可能的字幕)   

       C、decode解码,音频和视频解码

       D、output输出,音频和视频的输出(aoutvout)

       播放核心单元是多媒体引擎管理,负责音视频数据的加载、处理和展现。以FFmpeg为例,它的基本运作流程如下图所示:

 

1.5.2、在线视频播放四个阶段:

 

       A、解协议:从原始的流媒体协议数据中去掉信令数据只保留音视频数据,如采用RTMP协议传输的数据,经过解协议后输出flv格式数据。

       B、解封装:分离音频压缩编码数据和视频压缩编码数据,常见的封装格式mp4、mkv、rmvb、ts、flv、avi等。这些格式的作用是将已经压缩编码的视频数据和音频数据放到一起,例如FLV格式的数据经过解封装后输出H.264编码的视频码流和AAC编码的音频码流。

       C、解码:将视频、音频压缩编码数据,还原成非压缩的视频、音频原始数据。音频的压缩编码标准包括AAC,MP3,AC-3等。视频压缩编码标准包含H.264,MPEG2,VC-1等。经过解码得到非压缩的视频颜色数据,如YUV420P,RGB和非压缩的音频数据如PCM等。

       D、音视频同步:将同步解码出来的音频和视频数据分别送至系统声卡和显卡播放。

       篇幅有限,本主题对播放不做详细解释。相关内容参考后续专题。

2、核心技术

       视频本质是图像的合集,深度处理是对图像进行处理。GPU、OpenGL&Opengl ES、DirectX、OpenCV、DirectX、CUDA、OpenCL、Metal等技术是对图像进行专业级二次处理。这属于短视频的核心技术。

 

2.1、GPU

       GPU又称显示核心、视觉处理器、显示芯片,在个人电脑、工作站、游戏机和一些移动设备上做图形图像运算的微处理器。 GPU技术是图像视频编程的硬件技术,对GPU硬件、指令的了解对视频编程具有重要的意义。

 

       GPU使显卡减少了对CPU的依赖,进行部分CPU的工作,尤其在3D图形处理时GPU必不可少,例如硬件T&L(几何转换和光照处理)、立方环境材质贴图、顶点混合、纹理压缩、凹凸映射贴图、双重纹理等,硬件T&L技术是GPU的技术标志。GPU的生产商主要有NVIDIA和ATI。

2.2、OpenGL & OpenGL ES

       OpenGL是渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口。由近350个不同的函数调用组成,可以对简单的图形到复杂的三维景象进行绘制。OpenGL应用平台有:Windows、UNIX、Mac OS。实现由显示设备厂商提供,依赖于该厂商提供的硬件。

 

       OpenGL ES是 OpenGL的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。由Khronos定义推广,Khronos是一个图形软硬件行业协会,关注图形和多媒体方面的开放标准,OpenGL ES是互联网终端图形图像视频处理的核心技术之一。

2.3、OpenCV

       OpenCV是一个基于BSD许可发行的跨平台计算机视觉和机器学习库,运行在Linux、Windows、Android和Mac OS操作系统上。轻量高效——由一系列C函数和少量C++类构成,提供了主流编程语言的接口,包含了图像处理和计算机视觉方面的很多算法,OpenCV利用MMX和SSE指令,倾向于实时视觉应用。

 

2.4、DirectX

       DirectX是微软公司的图形图像视频引擎,让Windows平台的游戏或多媒体程序获得更高的3D图形、图像和音视频效果,提供给设计人员共同的硬件驱动标准。

 

       DirectX使基于Windows的计算机运行和显示更丰富的多媒体元素,包括全色图形、视频、3D 动画和丰富音频的应用程序的高效平台。DirectX包括安全和性能更新程序,以及音视频底层高级核心功能。

2.5、CUDA

       CUDA是显卡厂商NVIDIA推出的运算平台,CUDA™是一种由NVIDIA推出的通用并行计算架构,使GPU能够解决复杂的图形图像以及数据运算问题。 包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。

 

       开发人员使用C语言来为CUDA™架构编写程序,程序可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。

2.6、OpenCL

       OpenCL面向异构系统并行编程,是一个免费开放、统一的编程环境,便于开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效代码,广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其它并行处理器。在GPU编程、复杂视频处理方面,OpenCL提供了一套可参考的解决方案。

 

2.7、Metal

       Metal是苹果公司的图形编程库,近两年取得了很大的发展。在Mac平台和IOS平台音视频开发上,Metal是一个很好的选择。

 

       Metal提供对GPU的直接访问,技术人员最大程度地发挥 iOS、macOS和Apple tvOS app中的图形硬件计算潜能。Metal构建于易用的低开销架构之上,提供预编译的GPU 着色器和精细的资源控制,支持多线程,支持 GPU 驱动命令创建。支持GPU阵列编程,充分利用 Mac Pro 和 Pro Display XDR 的专业级多媒体功能。

3、短视频SDK技术

       流媒体开发一直是一个比较专业的领域,相比常规的应用信息系统开发,流媒体开发规范多、专业性强,导致国内流媒体开发一直以浅层应用为主,国外以编辑合成渲染开发为主。

       流媒体开发是短视频SDK技术的基础,比较专业与综合。短视频SDK技术主要包括美颜、萌颜、美型、道具、滤镜、特效、AR智能、动态场景等。短视频SDK技术本质是应用多媒体核心技术,对视频的二次加工开发。

3.1、国内SDK现状

       多年的努力,国内软件技术取得很大的发展,从软件作坊到影响世界的巨头。中国不局限于国外工具的应用,开始在软件框架技术,SDK技术上取得突破。

       目前国内短视频SDK大多与云平台、直播平台、音视频行业关联。典型的有美摄SDK、阿里云SDK、腾讯云SDK、头条SDK、华为云SDK、网易云信SDK、金山云SDK、七牛云SDK等。在专业技术实现上,美摄SDK技术更胜一筹。

3.2、美摄SDK

       美摄SDK为短视频提供全方位技术支持。美摄科技长期致力于广电领域的软件研发,在非线性编辑方面有多年的研发经验。为了适应互联网视频的发展,美摄科技互联网视频业务线致力于底层开发,为广大软件公司提供音视频编辑的SDK,使广大程序员在没有音视频技术的背景下,快速高效的开发出高质量的音视频程序。

       美摄科技致力于底层研发,把音视频开发中繁杂的信号处理、硬件处理、数据变换进行封装,使广大开发人员采用美摄SDK开发过程中,避免与底层的接触。从而使其它技术开发的软件人员,高效的开发出专业级的高性能视频软件。

 

       美摄SDK是一个工具包,对图片、音视频进行处理。可以对流媒体进行编辑。包括视频拍摄、编辑、合成、特效、动画等音视频制作。帮助程序开发者快速进行音视频、图片渲染处理。快速开发出高性能的音视频程序。符合互联网时代音视频发展应用的需求。美摄SDK在桌面端、移动端、WEB端对短视频处理进行全方位的技术支持。

       美摄SDK功能包括:视频录制、视频编辑、音乐编辑、字幕处理、动画贴纸、转场、特效、合成等。

 

4、外延技术

       无视频,不网络。短视频技术在互联网平台上有广泛的应用。外延技术也多与视频平台相关。近几年比较流行的技术有rtmp、推流、拉流、HTTP、CDN、负载均衡、服务器、Android端、IOS端、桌面端等。

 

4.1、HTTP

       HTTP是一个简单的请求-响应协议,运行在TCP之上。约定了客户端和服务器的通讯机制。请求和响应消息的头以ASCII码形式给出;消息内容具有一个类似MIME的格式。这个简单模型为Web早期的发展做出了卓越贡献,使开发部署简单方便。

       短视频技术平台的业务流处理、逻辑处理依附于Web平台,Web平台是以HTTP协议标准建立的。

4.2、CDN

       CDN是内容分发网络,1996年,麻省理工学院,一个研究小组为改善互联网的服务质量而提出的。为了能在传统IP网上发布大量的宽带媒体内容,提出在现有互联网基础上建立一个内容分发平台,专门为网站提供服务,1999年成立了专门的服务公司,为Yahoo提供服务。CDN是加快网络访问速度而被优化的网络覆盖层,因此被形象地称为“网络加速器”。 

 

       CDN网络改善了互联网的服务质量,大型网络运营商开始建设自己的CDN网络,如AT&T、德国电信、中国电信等。短视频技术具有网路属性,与网路平台密切相关。短视频庞大的数据流,需要依附CDN进行分发。

4.3、推流拉流

       推流与拉流是视频平台的专业术语,推流是把采集阶段封包好的内容传输到服务器。将现场的视频信号传到网络的过程。拉流是指服务器已有直播内容,指定地址进行拉取的过程。

 

       推流与拉流对网络要求比较高,网络不稳定,(直播)播放效果就会很差,(直播)播放时就会发生卡顿等现象,效果体验不好。

4.4、RTMP

       RTMP是实时消息传输协议,是Adobe公司开发的服务器之间音视频及数据传输的实时消息传送协议。RTMP协议基于TCP,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。

       RTMP协议中,视频必须是H264编码,音频必须是AAC或MP3编码,且多以flv格式封包。RTMP是目前最主流的流媒体传输协议,对CDN支持良好,实现难度较低,是大多数的直播平台的选择。

 

       RTMP有一个不足,不支持浏览器,Adobe已不再更新。直播服务要支持浏览器的话,需要另外的推送协议支持。RTMP与HTTP一样,都属于TCP/IP四层模型的应用层。目前短视频的推流RTMP协议应用较多。

4.5、RTSP

       RTSP是实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交标准。定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。

 

       HTTP与RTSP相比,HTTP请求由客户机发出,服务器响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。RTSP是用来控制声音或影像的多媒体串流协议,允许同时多个串流需求控制,服务器端可以自行选择使用TCP或UDP来传送串流内容。相对RTMP,RTSP有UDP的选择。

4.6、HLS

       HLS是Apple定义的基于HTTP的流媒体实时传输协议。原理是将整个流分为多个小文件来下载,每次只下载若干个。服务器将最新的直播数据生成新的小文件,客户端不停的按顺序播放从服务器获取到的文件,就实现了直播。

       HLS是以点播的技术实现了直播的体验,每个小文件的时长很短,客户端可以很快切换码率,以适应不同带宽条件下的播放。分段推送的技术特点,决定了HLS的延迟一般会高于普通的流媒体直播协议。今天的短视频平台,拉流HLS协议应用较多。

4.7、负载均衡

       负载均衡在现有网络结构之上,提供廉价的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

 

       负载均衡含义是分摊到多个操作单元上执行,例如Web服务器、FTP服务器、应用服务器等,共同完成任务,满足高并发访问。短视频平台是一个流量平台,必须具有高并发属性。

4.8、WebRTC

       WebRTC,网页即时通信。支持浏览器进行实时语音、视频对话的开源协议。Google、Mozilla、Opera推动WebRTC成为W3C的推荐标准。

 

       WebRTC支持目前主流浏览器,基于SRTP和UDP,网络信号一般的情况下也具备较好的稳定性。WebRTC实现点对点通信,通信双方延时低,是实现“连麦”功能比较好的选择。在直播平台、短视频平台上具有着实际应用。

4.9、OBS

       Open Broadcaster Software是一个视频录制和视频实时流软件,广泛应用在视频采集、直播等领域。

 

       OBS支持以下功能:支持H264(X264)和 AAC 编码;支持Intel Quick Sync Video (QSV) 和 NVENC;无限量的场景和视频源;支持实时RTMP流推;支持 MP4 和 FLV 格式输出;支持捕获基于 GPU 的游戏捕获,高性能输出视频流;支持DirectShow 采集设备;双线性或lanczos3 重采样支持等。

4.10、客户端

       短视频技术客户端目前主要是Android App、IOS App、桌面应用端。利用专题的相关技术,供终端客户操作应用短视频。

5、总结

       伟大的实验心理学家Treicher证实,人类获取的信息83%来自视觉,11%来自听觉,加起来就有94%。还有3.5%来自嗅觉,1.5%来自触觉,1%来自味觉。遗憾的是,广袤的互联网上,竟然鲜有这位大师的更多资料。

       疫情倒逼短视频加速升级,2020迎来红利期。未来10年,线上线下70%的流量在短视频。研究表明,人类91%的记忆来自“图像+声音”,而“视觉+听觉”最好的载体就是短视频。

 

       科技让视频发生深刻的变化,短视频技术方兴未艾,SDK应用风起云涌,融媒体发展欣欣向荣。坚信的是,短视频应用未来可期,美摄SDK,将为世界短视频技术的发展,做出应有的贡献。

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_33277028/article/details/112250078