百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

流媒体是啥,掌握六个步骤,软件工程师就理解了数据流全栈技术

off999 2025-02-13 13:53 12 浏览 0 评论

以前上网,网速很慢,看一部高清的movie需要下载下来,存储到本地,然后才能观看。随着网络带宽越来越高,在线电影、网络短视频刷起来越来越方便,无需下载,视听效果非常流畅。这种不用下载到本地,流畅欣赏的音视频流传输技术,就应用了流媒体技术。流媒体是一种技术方案,是一种采集、传送、接收多媒体的互联网技术。

流媒体数据技术是咋产生的

流媒体是一个技术体系,它是网络技术与音视频多媒体技术有机结合的产物。它是发送方和接收方之间传送多媒体流数据的技术。

1994年,美国一家叫做progressive networks的公司最先开始推出这种流数据技术。他们首先推出了C/S架构的音频接收系统real audio,并随后发布了流数据播放器realplayer系列。机会出现之后,微软很快推出了自己的流数据技术方案。流媒体数据技术就这样开始了快速演进。然而,受限于网络带宽,这项技术并没有迅速普及,随着网络带宽迅速提升,这种流数据技术悄悄地在教育、广电、政府、安防、电信、电商、娱乐等行业生根发芽。现在,流媒体数据技术已经成为互联网应用的主流,这已经得到了业内人士的普遍认同。

流媒体数据技术框架


流媒体数据技术是一种专门用于网络多媒体信息传播和处理的新技术,在发送方和接收方之间传送多媒体信息,一般要经历以下六个步骤和环节,采集数据,编码压缩,格式化容器化,传输,流媒体服务器分发,播放器收流。

下面以直播过程为例,说明一下流媒体的传输过程,主播端采集音视频数据,采集编码并格式化,通过网络传输协议传输,经过服务器分发,观众端接收数据,解码收看收听。

流媒体数据的采集

流媒体数据的采集分为音频的采集和视频的采集。数据采集是流媒体技术生命周期的第一个环节,它从系统声卡和摄像头等采集设备中获取原始数据,并将其输送到下一个环节。

音频数据采集。音频的采集主要通过设备将环境中的模拟信号采集成 PCM(Pulse Code Modulation,PCM,脉冲编码调制) 编码的原始数据。音频采集设备好坏主要取决于其处理数据信号的能力,音频采集和编码主要解决延时敏感性、卡顿敏感性、噪声消除(Denoise)、回声消除(AEC)、静音检测(VAD)和各种混音算法等问题。

图像数据采集技术。图像的采集是摄像头等设备抓取YUV编码格式的原始图像数据然后处理的过程。图像采集和编码需要解决的主要问题是,全面设备兼容性、延时敏感性、卡顿敏感以及各种对图像的处理操作算法等。

采集原始数据之后,还要添加一些效果数据和增强数据,比如声音效果的增强、鼓掌、魔音等,以及视频图像的增强比如美颜、图像logo等。

压缩编码和格式封装

原始获取的数据是非常庞大的,例如一个 1080P 的 7 秒视频需要 817 MB,10 Mbps 带宽传输上述 7 秒视频需要 11 分钟,这样的视频效果是不可接受的,所以要进行音频视频原始数据的压缩。

编码压缩的核心思想是通过算法去除冗余的信息。冗余包括空间冗余、时间冗余、编码冗余、视觉冗余、知识冗余等方面,通过冗余去除,我们可以得到数据较少而质量较高的数据包。上面的1080P像素7秒的图像经过 H.264 编码压缩之后,视频大小只有 708 k ,10 Mbps 带宽传输仅仅需要 500 ms,可以满足实时传输的需求。

经过对比,我们就理解了从视频采集传感器采集来的原始数据是不可以直接传输的,必须要经过视频的压缩编码。

视频压缩技术也在不断进化,视频压缩编码技术经过发展,已经从只支持帧内压缩编码算法演进到新的压缩编码算法。现在新的编码算法标准包括H.26X 和 VPX系列。常用的视频编码算法技术有H.264、H.265、VP8、VP9、FFmpeg等,音频编码算法有Mp3, AAC等。

经过音频视频编码之后,需要进行封装,封装就是数据容器化和格式化。容器是音视频流数据格式化的形象比喻,就像选用盒子和格子装东西一样。我们需要将比特数据用盒子装起来。

音频数据经过容器化计算后变为MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex,AMR等格式的数据分发出去。

视频数据经过容器化后变为 MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、MOV等格式的数据,然后分发出去。

数据传输模式和数据传输协议

流媒体数据传输方式多种多样。从传输形式上可以分为顺序流式传输和实时流式传输。顺序流式传输方式是介于本地下载完再播放方式和实时流式播放方式的中间方式,也就是用户边下载边播放,这种方式也被称之为“伪流媒体数据传输”。这种数据传输方式常应用于视频网站的点播。

实时流式传输方式是真正意义上的流媒体数据传输方式,用户可以一边接收数据包一边播放,数据实时传送。实时流媒体数据传输必须保证数据包的传输速度大于文件的播放速度,如果传输的速度小于文件的播放速度,视频就会出现卡顿。

通常情况下流媒体数据需要借助网络服务器来实现中转分发。数据从服务器分发到接收数据方的过程称为播放,流媒体数据的播放方式有三种主要情形。

  • 第一种情形是数据单播,也就是在客户端与数据服务器之间建立单独的数据通道,从一台服务器分发的每个数据包只能传送给一个客户机。这种形式的弊端是极其消耗资源。
  • 第二种情形是数据组播,这种方式允许路由器一次将数据包复制到多个通道上。采用组播方式,数据服务器只需要发送一个信息包,即可连接多个用户,所有发出请求的客户端共享同一信息包。这样可以减少网络上传输的信息包总量。
  • 第三种方式是数据点播与广播。数据点播连接是客户端与服务器之间的主动的连接。在数据点播中,用户通常通过选择内容来初始化客户端连接。每个用户可以开始、停止、后退、快进或暂停播放数据流。点播能够提供对流的最大控制,但这种方式由于为每个客户建立了单独的连接,带宽很容易被消耗完。广播是一种用户不能控制流数据只能被动接收流数据的方式,用户不能快进、后退、暂停。

相比较数据单播、数据点播和数据广播,数据组播是最有市场竞争力的数据播放方式。数据组播不会复制多个数据包传输到网络上,也不会将数据包传送给给没有请求服务器的客户,保证了网络上流数据应用占用最小带宽的网络。


流媒体数据传输的实现需要合适的网络传输协议。由于使用TCP需要较多的开销,因此不适合传输实时流数据。在流媒体传输的方案中,一般采用HTTP/TCP来传输控制信息,采用RTP/UDP/RTMP等协议来传输实时数据。现在大部分流数据网站都采用RTMP(Real Time Messaging Protocol)实时消息传送协议,该协议是Adobe公司为Flash播放器和服务器之间音视频流数据传输开发的开放协议。

服务器数据流的分发和数据流的放送

流媒体数据服务器的作用是负责流的发布和数据转播。流媒体服务器有多种选择,Nginx服务器是常用的选择,它是一款优秀的免费Web数据服务器。

播放端的推流,采集器采集流数据,经过编码压缩和格式转化,然后通过传输协议传输到服务器,服务器经过计算将收到的流进行分发,接收者只要有支持流传输协议的播放器即可播放,这是流媒体数据的整个生命周期。

相关推荐

Python进阶教程:如何自定义异常(附电商库存管理案例)

在Python中,你可以使用异常(exceptions)来预期和处理那些干扰程序正常执行流程的错误。Python内置了许多常见的异常,例如ValueError、TypeError和KeyError,但...

Python 中使用try来处理异常的方法

六二,直方大,不习无不利。在学习python中会经常遇到各种异常事件;现归纳一下如何捕捉并处理这些异常;今天来给大家整理一下。一、异常的概念什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,...

python入门-day3:异常处理(异常处理方法及流程python)

异常处理的内容,包括try、except、finally的用法,介绍常见异常类型,最后通过一个练习(处理用户输入的非法数字)帮你把知识点串起来。我会用简单易懂的语言,确保新手也能轻松掌握。Da...

16-Python的异常(python的异常类型及处理)

1-异常介绍1-2-什么是异常异常是程序运行时发生的错误或异常情况,它会中断正常的程序执行流程;Python使用异常处理机制来处理这些运行时错误。1-4-为什么要捕获异常异常会中断程序的执行;1-3-...

Python 异常处理详解(python中异常)

一、什么是异常?核心定义在程序运行过程中,当Python解释器检测到无法继续执行的操作时,会立即创建异常对象并中断当前流程。此时若不处理异常,程序将直接崩溃退出。典型场景与原理用户输入无效数据nu...

掌握这些 Python 异常处理技巧,代码稳如老狗!

在Python中,异常处理不仅可以帮助我们捕获和处理错误,还能让我们更清晰地了解错误发生的背景。1.异常层次结构Python内置了许多异常,我们在编程时可能会经常遇到,例如ZeroDivisi...

python异常处理机制最佳实践(python异常处理总结)

Python异常处理的最佳实践需要兼顾代码健壮性、可读性和性能。以下是经过工程验证的10个核心原则和技巧:一、精准捕获原则避免裸except禁止使用except:或exceptExce...

python之异常处理(python异常处理过程可以概括为三个步骤)

异常语法try:<代码块>except<异常类型>:<代码块>捕获通用异常try:<代码块>exceptExceptionas...

一天学一点,今天学习掌握Python:异常处理与文件操作全攻略

这一笔记记录了我学习python的异常和文件的操作,这也是针对Python异常和文件操作教程的进一步优化建议和注意事项:异常处理优化1.避免过度捕获异常o不要为了捕获异常而捕获异常,应根据实际需求...

新手学Python避坑,学习效率狂飙! 十二、Python 异常处理

异常处理系统分享在Python里,异常指的是程序运行期间出现的错误。当异常发生时,正常的程序流程会被中断,Python会抛出异常对象。为了防止程序因异常而崩溃,你可以使用异常处理机制捕获并处理这...

Python异常处理全攻略:从入门到精通,轻松应对代码“翻车”时刻

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。引言:异常处理——代码世界的“保险丝”在编程的世界里,错误和异常就像路上的“坑”,稍不留神就会让你的程序“翻车”。而异常处理,就是...

Python异常处理全面指南(python异常处理步骤)

Python异常处理完全指南异常处理是编写健壮程序的关键技术。Python提供了灵活的语法和丰富的内置异常类型,能够有效管理程序运行时的错误。以下是Python异常处理的全面指南:一、异常处理...

进阶突破python——异常处理机制(异常处理用什么语句python)

Python的异常处理机制是其健壮性设计的核心,通过清晰的语法结构和灵活的处理策略实现错误管理。以下从核心语法、异常对象、高级特性和最佳实践四个维度详解:一、核心语法结构Python使用try-...

Python基础编程——详细介绍Python的异常捕获示例代码

这篇文章主要为大家详细介绍了python的异常捕获,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助①捕捉一个异常捕捉一个异常以用0作为除数会得到Ze...

Python学习 -- 异常捕获技巧(python怎么捕获异常)

在编写Python代码时,异常处理是确保程序稳定性的关键。Python提供了灵活的异常捕获机制,包括try...except语句、try...except...else语句和try...except....

取消回复欢迎 发表评论: