首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >视频直播技术详解之采集[通俗易懂]

视频直播技术详解之采集[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-09-15 02:08:25
发布于 2022-09-15 02:08:25
1.9K0
举报

大家好,又见面了,我是你们的朋友全栈君。

声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载。 作者:七牛云 责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN 高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008申请入群,备注姓名+公司+职位。

随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域的关注,吸引了很多互联网创业者或者成熟企业进入该领域。

七牛云于6月底发布了一个针对视频直播的实时流网络LiveNet和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣。

结合该实时流网络LiveNet和直播云解决方案的实践,我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面、深入地了解视频直播技术,更好地技术选型。

本系列文章大纲如下:

(一)采集 (二)处理 (三)编码和封装 (四)推流和传输 (五)现代播放器原理 (六)延迟优化 (七)SDK性能测试模型

本篇将重点聊聊:采集。

采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节。视频的采集涉及两方面数据的采集:音频采集和图像采集,它们分别对应两种完全不同的输入源和数据格式。

采集内容

1.音频采集

音频数据既能与图像结合组合成视频数据,也能以纯音频的方式采集播放,后者在很多成熟的应用场景如在线电台和语音电台等起着非常重要的作用。音频的采集过程主要通过设备将环境中的模拟信号采集成PCM编码的原始数据,然后编码压缩成MP3等格式的数据分发出去。常见的音频压缩格式有:MP3、AAC、OGG、WMA、Opus、FLAC、APE、m4a和AMR等。

音频采集和编码主要面临的挑战在于:延时敏感、卡顿敏感、噪声消除(Denoise)、回声消除(AEC)、静音检测(VAD)和各种混音算法等。

在音频采集阶段,参考的主要技术参数有:

  • 采样率(samplerate):采样就是把模拟信号数字化的过程,采样频率越高,记录这一段音频信号所用的数据量就越大,同时音频质量也就越高。
  • 位宽:每一个采样点都需要用一个数值来表示大小,这个数值的数据类型大小可以是:4bit、8bit、16bit、32bit等,位数越多,表示得就越精细,声音质量自然就越好,而数据量也会成倍增大。我们在音频采样过程中常用的位宽是8bit或者16bit。
  • 声道数(channels):由于音频的采集和播放是可以叠加的,因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量。声道数为1和2分别称为单声道和双声道,是比较常见的声道参数。
  • 音频帧(frame):音频跟视频很不一样,视频每一帧就是一张图像,而从上面的正玄波可以看出,音频数据是流式的,本身没有明确的一帧帧的概念,在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取2.5ms~60ms为单位的数据量为一帧音频。这个时间被称之为“采样时间”,其长度没有特别的标准,它是根据编解码器和具体应用的需求来决定的。

根据以上定义,我们可以计算一下一帧音频帧的大小。假设某音频信号是采样率为8kHz、双通道、位宽为16bit,20ms一帧,则一帧音频数据的大小为:

size = 8000 x 2 x 16bit x 0.02s = 5120 bit = 640 byte

2.图像采集

图像采集的图片结果组合成一组连续播放的动画,即构成视频中可肉眼观看的内容。图像的采集过程主要由摄像头等设备拍摄成YUV编码的原始数据,然后经过编码压缩成H.264等格式的数据分发出去。常见的视频封装格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB和WebM等。

图像由于其直观感受最强并且体积也比较大,构成了一个视频内容的主要部分。图像采集和编码面临的主要挑战在于:设备兼容性差、延时敏感、卡顿敏感以及各种对图像的处理操作如美颜和水印等。

在图像采集阶段,参考的主要技术参数有:

  • 图像传输格式:通用影像传输格式(Common Intermediate Format)是视讯会议(video conference)中常使用的影像传输格式。
  • 图像格式:通常采用YUV格式存储原始数据信息,其中包含用8位表示的黑白图像灰度值,以及可由RGB三种色彩组合成的彩色图像。
  • 传输通道:正常情况下视频的拍摄只需1路通道,随着VR和AR技术的日渐成熟,为了拍摄一个完整的360°视频,可能需要通过不同角度拍摄,然后经过多通道传输后合成。
  • 分辨率:随着设备屏幕尺寸的日益增多,视频采集过程中原始视频分辨率起着越来越重要的作用,后续处理环节中使用的所有视频分辨率的定义都以原始视频分辨率为基础。视频采集卡能支持的最大点阵反映了其分辨率的性能。
  • 采样频率:采样频率反映了采集卡处理图像的速度和能力。在进行高度图像采集时,需要注意采集卡的采样频率是否满足要求。采样率越高,图像质量越高,同时保存这些图像信息的数据量也越大。

以上,构成了一个视频采集的主要技术参数,以及视频中音频和图像编码的常用格式。而对于直播App开发者来说,了解这些细节虽然更有帮助,但实际开发过程中可能很少能够关注采集环节中技术参数的控制,而是直接在SDK中将采集后的数据传递给下一个「处理」和「编码」环节。

采集源

1.摄像头采集

对于视频内容的采集,目前摄像头采集是社交直播中最常见的采集方式,比如主播使用手机的前置和后置摄像头拍摄。在现场直播场景中,也有专业的摄影、摄像设备用来采集。安防监控场景中也有专业的摄像头进行监控采集。

目前七牛提供的SDK对以上两类摄像头的采集都支持,对于手机,iOSAndroid分别支持前置后置摄像头的采集,只是iOS由于设备种类和系统版本不多,因此采集模块兼容性较好;而Android需要适配的硬件设备和系统则非常多,目前支持Android 4.0.3及以上的摄像头采集。对于专业摄像机或者摄像头,七牛云提供了兼容适合嵌入式系统的C语言采集模块的实现,欢迎参考使用:https://github.com/pili-engineering/ipcam_sdk

2.屏幕录制

屏幕录制采集的方式在游戏直播场景中非常常见,目前我们在Android SDK中实现了屏幕录制的功能。而iOS则由于系统本身没有开放屏幕录制的权限而没法直接操作,但对于iOS 9以上的版本,是有个取巧的办法,可以通过模拟一个AirPlay镜像连接到(当前App)自身,这样就可以在软件上捕获到屏幕上的任何操作,达到录制屏幕的效果。

教育直播或者会场演讲场合,我们经常看见需要录制电脑桌面上PPT的场景,针对这种场景,目前市面上比较方便的方案是使用开源的桌面推流工具OBS来进行屏幕录制和推流:https://obsproject.com/

3.从视频文件推流

除了从硬件设备采集视频进行推流之外,我们也可能需要将一个视频或者音频文件以直播流的形式实时传输给观众,比如在线电台或者电视节目,它们的输入可能直接来自于一些已经录制剪辑好的视频内容。

开放式设计

以上从采集内容和采集源两个维度分别介绍了视频采集相关的知识,但对于采集源来说,市场上可见的采集源远远不止这三种,即便是摄像头也有很多分类。对于一个完整的覆盖推流、传输和播放三个环节的直播云服务来说,支持尽可能多的采集源和播放终端是一项既无法规避也很难完成的工作。

为了支持市场上所有采集源的接入,我们在SDK中采用了开放式的设计,只要采集源实现方遵循相应的接口,即可支持任意的采集源。

图中我们把采集的内容分为图像和音频,其中图像的采集源包含摄像头、屏幕录制或者本地的视频文件,甚至是其它需要重新定义和实现的采集源。而音频的采集源包含麦克风、系统声音或者本地音频文件,当然也可以为它定义别的输入源。

这样设计最大的好处在于,可以以轻量的设计方式支持丰富的采集源,而采集源的具体实现也可以交给使用者。

在下一篇连载中,我们将详细介绍下直播中的处理环节,解答如何满足市场上主播的各种需求如美颜、水印、连麦互动等。敬请期待!


2016年9月22日-23日,SDCC 2016大数据技术&架构实战峰会将在杭州举行,两场峰会大牛讲师来自阿里、京东、苏宁、唯品会、美团点评、游族、饿了么、有赞、Echo等知名互联网公司,共同探讨海量数据下的应用监控系统建设、异常检测的算法和实现、大数据基础架构实践、敏捷型数据平台的构建及应用、音频分析的机器学习算法应用,以及高可用/高并发/高性能系统架构设计、电商架构、分布式架构等话题与技术。 9月4日24点前仍处于最低六折优惠票价阶段,单场峰会(含餐)门票只需499元,5人以上团购或者购买两场峰会通票更有特惠,限时折扣,预购从速。(票务详情链接)。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162843.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
直播系统开发中视频采集的技术分析
采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节。直播系统开发中视频的采集涉及两方面数据的采集:音频采集和图像采集,它们分别对应两种完全不同的输入源和数据格式。
布谷安妮
2019/09/23
1.1K0
直播系统开发中视频采集的技术分析
音视频技术助力政府采购之音视频编码采集
2020 年出现新冠疫情,面对复杂严峻的新冠肺炎疫情防控形势,为做好新型冠状病毒感染肺炎的疫情防控工作,有效减少人员聚集,保障相关人员的生命安全和身体健康,财政部印发了《关于疫情防控期间开展政府采购活动有关事项的通知》(财办库〔2020〕29 号),明确在疫情期间应尽量通过电子化方式实施采购。
政采云前端团队
2023/09/01
3210
音视频技术助力政府采购之音视频编码采集
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
从游戏、教育、电商到娱乐,直播技术的应用场景无处不在。随着移动端的网速越来越快,直播技术的普及和发展将更加迅速。
JackJiang
2024/10/17
3720
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
(强烈推荐)移动端音视频从零到上手(上)
音视频的发展正在向各个行业不断扩展,从教育的远程授课,交通的人脸识别,医疗的远程就医等等,音视频方向已经占据一个相当重要的位置,而音视频真正入门的文章又少之甚少,一个刚毕业小白可能很难切入理解,因为音视频中涉及大量理论知识,而代码的书写需要结合这些理论,所以搞懂音视频,编解码等理论知识至关重要.本人也是从实习开始接触音视频项目,看过很多人的文章,在这里总结一个通俗易懂的文章,让更多准备学习音视频的同学更快入门。
音视频开发进阶
2019/07/31
1.1K0
(强烈推荐)移动端音视频从零到上手(上)
安防视频监控直播的画面都是如何采集的?
我们公司这几天在做摄像头对接流媒体服务器推流的测试,突然想起来我好像还没有就直播画面的采集写过什么,所以今天我就来讲一下采集。采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节。
EasyNVR
2020/05/20
2.2K0
关于网络视频流媒体直播/点播服务流程,你要知道的全在这里了!(新手必看)
网络视频直播存在已有很长一段时间,随着移动上下行带宽提升及资费的下调,视频直播被赋予了更多娱乐和社交的属性,人们享受随时随地进行直播和观看。一般来说,网络视频直播的流程可以分为如下几步: 采集 —>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放器流播放。 下面我们逐步来看一下。
EasyNVR
2020/05/08
1.4K0
给Android工程师的音视频开发学习指南
毕业至今,之前一直从事Android开发的工作,今年5月份开始接触音视频开发相关工作,于是打算写一个音视频相关专栏,让移动端的同学,能通过这个专栏快速掌握音视频相关知识,首先带来第一篇,主要讲讲移动端的音视频技术涉及哪些?
老马的编程之旅
2022/06/23
1.5K0
给Android工程师的音视频开发学习指南
(强烈推荐)移动端音视频从零到上手
音视频的发展正在向各个行业不断扩展,从教育的远程授课,交通的人脸识别,医疗的远程就医等等,音视频方向已经占据一个相当重要的位置,而音视频真正入门的文章又少之甚少,一个刚毕业小白可能很难切入理解,因为音视频中涉及大量理论知识,而代码的书写需要结合这些理论,所以搞懂音视频,编解码等理论知识至关重要.本人也是从实习开始接触音视频项目,看过很多人的文章,在这里总结一个通俗易懂的文章,让更多准备学习音视频的同学更快入门。
做个快乐的码农
2021/12/12
1.3K0
(强烈推荐)移动端音视频从零到上手
一文掌握直播技术:实时音视频采集、编码、传输与播放
从游戏、教育、电商到娱乐,直播技术的应用场景无处不在。随着移动端的网速越来越快,直播技术的普及和发展将更加迅速。
陆业聪
2024/08/19
1.4K0
一文掌握直播技术:实时音视频采集、编码、传输与播放
直播软件开发需要做好推流第一步
直播软件开发项目随着直播的不断发展成为软件开发服务商的“心头好”,那么在进行项目开发之前,关于直播的相关流程也是需要进行了解的。毕竟想进行开发业务的话,不了解流程就无从下手。今天简单的来跟大家分享一下,直播APP流程中的第一步,音视频的采集。
球446527153
2018/12/27
1.1K0
直播软件开发需要做好推流第一步
视频直播技术大全、直播架构、技术原理和实现思路方案整理
原文链接:https://blog.csdn.net/zgpeace/article/details/108552358
全栈程序员站长
2022/09/15
5.4K0
视频直播技术大全、直播架构、技术原理和实现思路方案整理
音视频必知会(一)
随着通信技术的不断发展,互联网信息的传播与娱乐方式经历了从文字到图片再到音视频的转变,音视频通信,直播互动,短视频等应用百花齐放,特别是5G时代的到来,互联网对音视频开发者的需求会越来也大,有兴趣的同学可以把握机遇,提升自己,加入到这个行业当中。
PengJie
2021/01/03
1.6K0
视频直播| 基础原理篇
一、直播难与易 `直播难`:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多, 视频/音频处理,图形处理, 视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的。 `直播易`:已经有各个领域的大牛,封装好了许多牛逼的框架,我们只需要用别人写好的框架, 就能快速的搭建一个直播app,也就是传说中的站在大牛肩膀上编程。 二、直播相关概述 1.一个完整直播app功能 1、`聊天` 私聊、聊天室、点亮、推送、黑名单
進无尽
2018/09/12
7.4K0
视频直播| 基础原理篇
跨平台音摄像头|屏幕推送选OBS还是SmartPublisher?
​好多开发者希望搞明白OBS和 SmartPublisher的区别和使用场景差别,本文就二者差别做个对比:
音视频牛哥
2024/10/18
4360
跨平台音摄像头|屏幕推送选OBS还是SmartPublisher?
TRTC Android端开发接入学习之音视频基础(一)
是人对视觉感知的物质再现。三维自然场景的对象包括:深度,纹理和亮度信息。二维图像:纹理和亮度信息。
腾讯云-hongyang
2020/08/31
1.4K0
TRTC Android端开发接入学习之音视频基础(一)
iOS 音视频接入-音视频基础
今天又是一个阳光明媚的日子,我正在努力的coding,突然间项目主管来到跟前和我说,我们准备做一个直播项目。
小明同学接音视频
2020/09/27
2.3K0
说好不哭,现在就带你了解直播类音视频测试!
显而易见,优酷、爱奇艺、全民K歌、QQ音乐、网易云等音视频直播市场的繁荣是大势所趋
可可的测试小栈
2019/10/17
2.7K0
视频直播之基础原理
SDK(Software Development Kit): 软件开发工具包 CDN(Content Delivery Network):内容分发网络
全栈程序员站长
2022/09/15
3.5K0
视频直播之基础原理
直播系统平台开发在技术方面的要求很高
理解编写程序开发的功能文档是一件容易的事,毕竟市场上有用那么多的优秀的程序可以借鉴。但是想要把一些直播程序功能实现的的门槛很高。用代码实现功能是一个十分困难的任务。一套优秀的程序,需要极强的使用上便利性,还有优秀的UI交互逻辑,完善的功能和便于理解操作逻辑;简洁优美的界面设计......
山东布谷科技
2020/08/01
7920
视频直播技术详解之延迟优化
七牛云于6月底发布了一个针对视频直播的实时流网络LiveNet和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣。
全栈程序员站长
2022/09/15
1.2K0
推荐阅读
相关推荐
直播系统开发中视频采集的技术分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档