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

音视频开发从入门到出家-流媒体原理

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

1. 流媒体概念

不知道你发现没有,我们的生活正慢慢的向着“实时”发生转变。我们获取、分享信息,乃至日常中的衣食住行,都在变成像“自来水”那样源源不断“流体”服务,我们无需提前储备,只需实时按需取用。这个转变依赖于科技的进步,计算机科技在历经了文件(File)、页面(Web)时代后,今天来到了以“流(Flows/Streams)”为单位的时代。我们的生活就在各种信息流、数据流、媒体流中节奏越来越快,速度为王,质量靠边站。

向“流”转变最初最典型的应用就是流媒体(Streaming Midea)技术,它指的是在网络上采用流式传输技术来发布音频、视频以及其他多媒体文件。所谓的流式传输就是将音频、视频多媒体文件经过一定算法编码压缩成一个个很小的压缩包,流媒体服务器通过特定网络协议进行连续、实时的传送,用户端接收到压缩包后由播放软件实时解压缩实现播放的过程。而所谓的流媒体则特指一切采用这种流失传输的媒体文件。

流媒体技术的出现改变了我们还未曾忘记的那种需要将整个音视频文件下载到本地计算机才能进行观看,为此要等上漫长时间的传统媒体播放方式。我们今天通过互联网看视频、看直播、听音乐,通过各种盒子(IPTV/OTT)看电视、听广播如此的方便,一键观看即点即用,其背后就是有着流媒体系统的支撑。

2.流式传输特点

以往传统看视频的方式是将整个视频文件下载到本地计算机硬盘,再通过本地播放器程序进行观看。而流式传输则是将连续视音频经压缩编码、数据打包后连续、实时的传送给接收设备,用户端在后续源源不断的数据包到达的同时对接收到的数据进行解压和播放。这个过程中,只需要等待几秒或几十秒的启动时间就可以正常观看视频了,剩余的部分就像“水流”一样在一边观看的同时一边下载。下图描绘了流式传输的过程。

在对于音视频的传输分发上,我们会经常听到HTTP渐进式、HTTP流、RTMP、RTSP、HLS、HDS、DASH、Websocket等等专业术语。对于传输协议后续文章会专门讨论,实际上,从传输方式上大致可以分发传统文件下载、HTTP渐进式下载、HTTP流式传输、实时流媒体传输四大类。

HTTP渐进式是指通过支持Seek,终端播放器可从没下载完成部分中任意选取一个时间点开始播放,如此来满足不用等整个文件下载完快速播放的需求,一般MP4和FLV格式文件支持较好,打开一个视频拖拽到中部,短暂缓冲即可播放,点击暂停后文件仍将被持续下载就是典型的渐进式下载,目前大型点播网站如YouTube、优酷等均采用这种方式。

HTTP流式传输或者HTTP流化技术,不同厂商有不同做法,但主要思路都是在服务端将媒体文件分割成一个个很小的独立切片文件,文件分片时需要同时产生用于跟踪切片的索引文件(描述文件),播放器再通过HTTP协议向服务端请求一个个小的媒体切片实现点播或直播的播放,我们平常听到的HLS(Apple)、HDS(Adobe)、MSS(Microsoft) 、DASH(MPEG通用标准)均属于HTTP流的范畴。下表总结了不同传输方式的特点:

3. 流媒体系统构成

流媒体文件从采集到最终播放的路径就是一套完整的流媒体系统所需的组成部分。

从系统层面来看,编码层负责对音视频文件编码压缩(h.264/h.265/VP9/AAC等);封装层负责对数据包进行容器封装(flv/ts等);协议层负责网络打包(RTMP/HTTP等);传输层负责网络传输(socket/st等);播放层负责对图像进行解码显示(FLASH/VLS/VIDEO JS等)。

从我们所熟知的产品服务层面,一套完整的流媒体系统所需的组件一般包括:

(1)编码器:用于流媒体文件生成的编码工具;

(2)流媒体数据;直播信号、点播文件;

(3)流媒体服务器:用于控制、传送流媒体数据的流媒体服务器;

(4)传输网络:能够支持特定流式数据传输协议的传输网络;

(5)多终端播放器:各操作平台用于显示流式数据的播放器。

以上5大组件是一个流媒体系统所必须要的基本组件,随着近年来的迅猛发展,能够承载大规模流媒体应用的内容分发网络(CDN)也有必要纳入流媒体系统的范畴了。除了这些基本系统外,大型的运营及流媒体系统还会有流媒体内容制作生产、内容管理控制、数据监控等周边系统和中间件等。

4. 流媒体涉及技术

流媒体技术诞生的主要目的是要在目前“尽力而为”的Internet上传输数据量非常大的音视频文件,所以流媒体技术最核心的就是音视频编解码技术和流式传输技术。

然而,在今天这个“体验为王”的时代,我们需要面临的流媒体,不论从用户量级上还是应用场景上来说都是极为复杂的。靠堆砌几台流媒体服务器,架个开源的OBS和播放器简单实现功能的时代早已过去。从当下成熟的大型流媒体系统来看,要完成一个支撑高体验大规模的流媒体系统,必要要考虑的技术层面有:

(1)云计算基础服务相关技术

这几年视音频技术、终端硬件平台、用户需求极速增长的同时,骨干网、跨运营商等基础设施的建设却明显没有跟上趟。这种现状下,要实现高稳定、高并发、低延时的流媒体应用,基于云架构的计算、网络、存储、CDN等底层基础服务已经变成了必须。硬件虚拟化,网络虚拟化能够最大程度保障视音频播放的稳定性;CDN内容分发网络能够有效应对高并发和突增流量的需求,对流媒体传输所有环节进行针对性优化能够大幅降低延时;对象存储满足了流媒体数据的大规模存储要求。

(2)视音频相关技术

这个层面包括了视音频的编/解码、4K、VR等视音频核心技术能力,尤其是在新形势下移动端编码和播放的优化。这里面包括了对不同硬件平台、操作系统的实践,固网移动网等不同网络环境下的理解,以及在弱网情况下的解决方案等。另外,4K、VR、AR等新技术的发展能提升提升用户观看体验,甚至引发全新应用场景;新的编码标准如H.265等能进一步提升视音频编码效率,降低对网络带宽、CDN的消耗。

(3)场景化应用相关技术

虽说流媒体的核心只是音视频编解码和流媒体传输,但针对当下不同垂直领域对于流媒体的应用,其中一些场景化功能需求,流媒体系统也不得不去考虑。比如秀场娱乐直播的实时录制,实时水印,实时鉴黄;社交直播的连麦;IPTV/OTT的时移回看;现场直播的云端导播;视频网站的版权保护等等。

相关视频推荐:

90分钟搞定直播逻辑-推流-流媒体服务器-拉流|ffmpeg|webrtc|rtmp|rtsp_哔哩哔哩_bilibili

聊聊音视频直播RTSP/RTMP推流那些坑|流媒体|c/c++|ffmpeg|零声学院_哔哩哔哩_bilibili

【免费】
FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发-学习视频教程-腾讯课堂

需要更多ffmpeg/webrtc..音视频流媒体开发学习资料加群812855908领取

5.流媒体的应用

(1)功能方面

流媒体技术实质上就是用流式传输来分发音视频,所以从功能上来讲,流媒体主要应用也就是点播和直播。

■ 点播:

音视频的点播已经非常成熟,其业务流程一般为上传-转码-编辑制作-入库-用户请求-网络分发-播放。类型上可以简单分为如下几类:一是以优酷、爱奇艺等为代表的音视频点播网站,特点是少量上传海量点播;二是以监控、秀场直播录制为代表的录像点播,特点是海量上传少量点播;三是以短视频网站,特点是海量上传海量点播。针对不同类型的点播应用,需要架构不同的流媒体系统。

需要说明的是,如前文所述目前点播大多以HTTP渐进式方式分发,或者以HLS切片方式分发(点播的HLS只下载一次M3U8索引,后续就是.ts文件下载了),它更接近文件分发。

而我们后续文章将要着重论述的流媒体,主要是真正的实时流式传输,所以后续内容主要讨论的是流媒体在音视频直播方面的应用, 这也是观止云团队优势所在。

■ 直播:

流媒体技术在音视频直播的应用,大概可以这样分类,一是广电新媒体网台/IPTV直播/OTT直播为代表的以电视直播业务为主,特点是延时容忍度高,但稳定性、清晰度要求高;二是秀场/游戏直播/体育直播/移动直播/教育直播等为代表的互动直播,特点是延时要求高;三是以视频会议为代表的音视频通讯业务,特点是延时要求极高,音频质量要求高。

随着互动直播的兴起和相关的技术服务市场竞争加剧,流媒体直播系统对底层基础资源服务、CDN分发网络、视音频技术等都提出了全新的挑战。

(2)应用场景方面

我们研究流媒体,或许有很多人会担心直播市场来得越快跌得越惨。其实大可不必这么想,至少有三条比较明显的趋势。一是不论市场变幻莫测,看直播的总需求量目前还在低点未来很长一段时间仍是上行通道;二是目前的直播主要还是集中在娱乐领域,未来将出现更多如在线教育、电商直播等将直播作为一项工作工具的垂直领域,他们会有着明确的商业模式;三是随着更多VR这样的新技术不断涌现,视频永远会作为信息传递的最佳载体。所以,学点技术,吃不了太大的亏。至少,以下这些领域眼下就看得见他们对于直播的需求:

■ 在线教育

在线教育场景中主要是学生通过观看点播、直播课程来获取课程内容。流媒体功能除了直播信号采集、点播文件上传、转码、存储、全网分发、多终端播放六大主干功能外,一般对版权保护要求非常高。另外,在线教育场景中,场景化功能需要也比较集中,如多分屏、课件制作、白板等等。

在线教育直播,目前主要以新东方这类综合培训机构主导,未来会有更多垂直培训组织如艺术培训、专业技能培训等上线直播。另外,跨国远程学习如留学、语言类也将是未来趋势。

■ 电子商务

目前电商的商品展示依然是图片为主,随着天猫、聚美等上线直播,不难想象未来的电子商务产品呈现上会引入更多的视频,尤其是互动直播的方式。这可不是噱头,电子商务发展到今天,在攻克了消息对称、信任、支付、物流几项大课题后,唯一还未解决的就是远程体验了,互动直播无疑为远程体验带来了新的曙光。

未来趋势中,电子商务尤其要关注VR、AR、全程溯源几方面对于流媒体技术的应用。

■ 泛娱乐

娱乐是目前点播、直播应用的红海区域,也是将流媒体技术应用最前沿的阵地。这里面,演艺直播、游戏直播、美女秀场、移动社交直播、体育直播等不同特定场景对功能、技术的要求也有差异。现场大型直播需要专业编码器等硬件设备支持,移动端尤其需要对不同机型和平台作推流和播放的适配,体育直播和游戏直播还会涉及跨国传输等。

未来,泛娱乐仍将是直播增量最重要的一方面,毕竟,线下太多的娱乐都还未被搬上网络呢。

■ 广电

电视慢慢在转变成IPTV/OTT/智能电视,形象一点说就是连着操作系统的显示器,它本身就是流媒体的应用。

之后的发展中,广电系手握资源和政策红利,不会简单的在互联网点播直播的冲击下束手就擒,在争夺“客厅娱乐”方面,广电依然很有希望获得主动权,所以未来,广电系统对流媒体技术的需求还会放量增长。

■ 媒体/营销

随着纸媒的没落,媒体集体往线上迁移,而视频是其中占比较大的一块。所以,未来所有的新闻机构、营销机构都会注重视频的建设,由于新闻营销都有较强的时效性,所以对直播的运用值得关注。

■ 视频会议

即便是到今天,很多企业很多人依然没有使用上视频会议系统,原因就在于传统的办公室视频会议系统安装复杂,价格高昂,缺乏对移动办公的支持等。所以,未来基于互联网的、更轻量级、价格便宜的视频办公将会产生大量需求。在流媒体技术方面需要关注更高效的编解码方式、更低的延迟、更好的音频质量、数据更安全、对移动办公更兼容等方面,另外,也有在线教育那样的大量场景化需求需要考虑。

■ 视频监控

除了我们以往熟悉的安防、交通、建筑等常规监控外,智慧医疗、智慧家庭、智慧农业、景区监控等为视频监控带来了更多拓展的空间。未来的发展,我们除了让监控成为物联网的影像传感器外,还要尽可能去让它连上网,甚至互动起来,这里面都需要流媒体技术去攻克难题。

6. 国内外大型流媒体系统

我们说的大型流媒体系统是指包括了完整流媒体组件,支持直播、点播应用,提供完善的开发者组件的流媒体平台。这里面包括大型商用系统,也包括优秀的开源系统。

商用系统中,Microsoft公司的Windows Media家族、Apple公司的Quick Time家族、Real Networks公司的RealMedia家族、Adobe公司的Flash家族都提供了一整套商用流媒体系统,其中涵盖了媒体制作工具、服务器系统、播放器软件、流媒体传输、数字版权保护等在内的系列企业级和个人级产品。除了IT巨头,还有美国Wowza Media等专注于流媒体的公司也提供完整产品,观止云团队作为国内专注流媒体技术研发公司,也提供广电级编码器、BMS流媒体服务器、多终端播放器以及流媒体周边系统。

开源方面,服务端早期较为出色的项目有由前暴雪核心员工领队发起的Red 5 Media Server,live555;目前应用最广泛的Nginx流媒体模块Nginx-Rtmp,观止云团队发起的国内优秀的专注互联网视频的SRS。其它还有不少开源项目,包括开源编码工具、播放器、媒体制作工具,如大名鼎鼎的开源编码工具ffmpeg、OBS,播放器VLC,音频领域的Speex等等。

7.总结

流媒体技术的目标是在“尽力而为”的互联网上更好的传输视音频媒体,其最明显的技术进步性在于通过流式传输协议实现了实时播放直播信号及无需等待播放点播文件。我们今天所面临的流媒体技术应用环境难度更大,需要在新挑战下优化与架构新一代流媒体系统。市场需求高涨的同时,由于流媒体实现环节较多、技术门槛较高、技术人才缺乏,一般垂直领域不具备独立搭建大型流媒体系统的能力,所以流媒体技术正在基于云架构以云服务的形态成为第三方服务。

新环境下,我们应该多去思考能提高效率、能带来全新应用场景的新技术。另外,技术只是工具,面临竞争,我们更应该多去思考新的创意和内容,以及新的商业模式。

相关推荐

阿里云国际站ECS:阿里云ECS如何提高网站的访问速度?

TG:@yunlaoda360引言:速度即体验,速度即业务在当今数字化的世界中,网站的访问速度已成为决定用户体验、用户留存乃至业务转化率的关键因素。页面加载每延迟一秒,都可能导致用户流失和收入损失。对...

高流量大并发Linux TCP性能调优_linux 高并发网络编程

其实主要是手里面的跑openvpn服务器。因为并没有明文禁p2p(哎……想想那么多流量好像不跑点p2p也跑不完),所以造成有的时候如果有比较多人跑BT的话,会造成VPN速度急剧下降。本文所面对的情况为...

性能测试100集(12)性能指标资源使用率

在性能测试中,资源使用率是评估系统硬件效率的关键指标,主要包括以下四类:#性能测试##性能压测策略##软件测试#1.CPU使用率定义:CPU处理任务的时间占比,计算公式为1-空闲时间/总...

Linux 服务器常见的性能调优_linux高性能服务端编程

一、Linux服务器性能调优第一步——先搞懂“看什么”很多人刚接触Linux性能调优时,总想着直接改配置,其实第一步该是“看清楚问题”。就像医生看病要先听诊,调优前得先知道服务器“哪里...

Nginx性能优化实战:手把手教你提升10倍性能!

关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构而核心,下面我重点详解Nginx性能@mikechen文章来源:mikechen.cc1.worker_processe...

高并发场景下,Spring Cloud Gateway如何抗住百万QPS?

关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。高并发场景下网关作为流量的入口非常重要,下面我重点详解SpringCloudGateway如何抗住百万性能@m...

Kubernetes 高并发处理实战(可落地案例 + 源码)

目标场景:对外提供HTTPAPI的微服务在短时间内收到大量请求(例如每秒数千至数万RPS),要求系统可弹性扩容、限流降级、缓存减压、稳定运行并能自动恢复。总体思路(多层防护):边缘层:云LB...

高并发场景下,Nginx如何扛住千万级请求?

Nginx是大型架构的必备中间件,下面我重点详解Nginx如何实现高并发@mikechen文章来源:mikechen.cc事件驱动模型Nginx采用事件驱动模型,这是Nginx高并发性能的基石。传统...

Spring Boot+Vue全栈开发实战,中文版高清PDF资源

SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...

Docker-基础操作_docker基础实战教程二

一、镜像1、从仓库获取镜像搜索镜像:dockersearchimage_name搜索结果过滤:是否官方:dockersearch--filter="is-offical=true...

你有空吗?跟我一起搭个服务器好不好?

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。昨天闲的没事的时候,随手翻了翻写过的文章,发现一个很严重的问题。就是大多数时间我都在滔滔不绝的讲理论,却很少有涉及动手...

部署你自己的 SaaS_saas如何部署

部署你自己的VPNOpenVPN——功能齐全的开源VPN解决方案。(DigitalOcean教程)dockovpn.io—无状态OpenVPNdockerized服务器,不需要持久存储。...

Docker Compose_dockercompose安装

DockerCompose概述DockerCompose是一个用来定义和管理多容器应用的工具,通过一个docker-compose.yml文件,用YAML格式描述服务、网络、卷等内容,...

京东T7架构师推出的电子版SpringBoot,从构建小系统到架构大系统

前言:Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论...

Kubernetes (k8s) 入门学习指南_k8s kubeproxy

Kubernetes(k8s)入门学习指南一、什么是Kubernetes?为什么需要它?Kubernetes(k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它...

取消回复欢迎 发表评论: