C C++最新流媒体技术介绍(1),2024年最新C C++开发社招面试解答之性能优化

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  1. 通过利用流媒体技术,用户侧的媒体启动时间大幅度缩短,用户不必像以往那样“等到所有媒体内容都下载完成后上才能浏览”,而是经过一段启动延时后,立即就能欣赏媒体内容。

  2. 与传统的媒体传输方式相比,流媒体技术对客户端(用户计算机)的缓存容量要求大大降低。
    Internet 是以包传输为基础进行的异步传输,因此数据会被分解成许多包进行传输,由于每个数据包可能选择不同的路由(进行传输),所以这些数据包到达客户端(用户计算机)的时间延迟就会不同,因此在客户端就需要缓存系统来消减延迟和抖动的影响,以及保证接收到数据包的传输顺序的准确性。与传统的(完整)媒体传输方式相比,在流媒体文件的播放过程中,由于不再需要把所有的文件都放入缓存系统,因此对缓存容量的要求是很低的。

3 流式传输

流媒体技术的特征就是流式传输,它使得流媒体数据可以像流水一样传输。

流式传输主要包括两种实现方式:顺序流式传输(progressive streaming)和实时流式传输(real time streaming)。需要根据具体需求决定采用哪种方式进行流式传输,下面就对这两种传输方式进行简单介绍。

3.1 顺序流式传输

在顺序流式传输模式下,用户在观看在线媒体的同时,也在下载文件。在这个过程中,用户只能观看已经下载完成的媒体内容,而不能直接观看未下载的部分。**因此,用户会在一段延时后,才能看到服务器传送过来的媒体内容。**由于标准的HTTP服务器就可以发送这种形式的媒体文件,因此流式传输也经常被称为HTTP流式传输。

由于顺序流式传输能够较好地保证节目的播放质量,因此比较适合在网站上发布的、可供用户点播的、高质量的视频。

顺序流式传输的文件存放在标准HTTP或FTP服务器上,易于管理,基本上与防火墙无关。

根据以上信息,能够知道“顺序流式传输”主要提现了流媒体技术的基本功能:无需下载完整的媒体文件,即可欣赏媒体内容。

3.2 实时流式传输

使用实时流式传输时,必须要保证与流媒体对应的带宽,以使媒体内容可以被用户实时观看到。用户在观看过程中,可以任意观看当前媒体内容之前或后面的内容。但是在这种传输方式中,如果网络状况不理想,会导致收到的图像质量比较差。

实时流式传输需要特定的服务器(如 Windows Media Server),这些服务器可以对媒体进行更多的控制,所以系统设置、管理比标准HTTP服务器更加复杂。

实时流式传输还需要特殊的网络协议,如 RTSP(realtime streaming protocol) 或 MMS(microsoft media server)。防火墙有时会对这些协议进行屏蔽,导致用户看不到不实时内容。

根据以上信息,能够知道“实时流式传输”更强度的是媒体传输的“实时性”,因此目前流行的视频直播行业,应属于“实时流式传输”功能的应用。

4 流媒体传输的网络协议

流媒体传输一般采用HTTP/TCP(RTCP)协议来传输控制信息,而用UDP(RTP)协议来传输实时媒体数据(TCP开销相对较大,所以不太适合传输实时数据)。

4.1 RTP(实时传输协议)

RTP(实时传输协议)通常用于实时数据的传输工作(一般使用UDP来传送数据)。

当应用程序开始一个RTP会话时,将开启两个端口:一个给RTP,一个给RTCP。RTP本身并不能为“按顺序传输数据包”提供可靠的传输送制,也不提供流量控制和拥塞控制服务,而是依赖RTCP提供这些服务。通常RTP算法并不作为一个独立的网络层来实现,而是作为应用程序代码的一部分来实现的。

4.2 RTCP(实时传输控制协议)

RTCP(实时传输控制协议)在RTP传输实时数据时,提供流量控制和拥塞控制服务。在RTP会话期间各参与者会周期性地传送RTCP包,RTCP包中含有已发送的数据包的数量、丢失的数据包数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。

RTP和RTCP配合使用,能通过有效的反馈和最小的开销,使传输效率最佳化,因此特别适合在互联网上传输实时数据。

4.3 RTSP(实时流协议)

RTSP(实时流协议)定义了一对多模式下如何有效地通过IP网络传送多媒体数据。

RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP(RTP)协议完成数据传输,如下图4.3-1(RTSP在网络体系结构中的位置)所示。

5 流媒体系统组成

流媒体系统包括以下五个内容:

  1. 编码工具:用于创建、捕捉和编辑多媒体数据,形成流媒体格式;
  2. 流媒体数据;
  3. 服务器:存放和控制流媒体的数据;
  4. 网络:适合多媒体传输协议(甚至是实时传输协议)的网络;
  5. 播放器:客户端通过播放器浏览流媒体文件。

以上五个部分有些是服务器需要的,有些是客户端需要的,而且不同的流媒体标准和不同公司的解决方案中,会在有些内容上有所不同。

6 流媒体技术涉及到的关键技术

流媒体技术不是一个单一的技术,它是网络技术与视音频技术的有机结合。

实现流媒体技术,需要解决流媒体的制作、发布、传输和播放等方面的问题,这些问题的解决需要利用到视音频技术和网络技术。下面具体讨论一下流媒体的这几个问题。

6.1 流媒体的制作

只有适合流媒体传输的流媒体格式文件才能在互联网上传输。因为一般的多媒体格式文件体积很大,因此在网络上传输时需要花费较长的时间,如果遇到网络繁忙等情况,还会造成传输中断。另外,一般格式的媒体文件也不能通过流媒体传输协议进行传输。

因此,需要先对待传输的文件进行预处理,将文件压缩成流媒体格式文件。此处主要包括两个要点:一是选用适当的压缩算法进行压缩,确保生成的文件体积较小;二是需要向文件中添加流式信息。

6.2 流媒体的传输

流媒体的传输需要合适的传输协议,在Internet上进行的文件传输大部分都建立在TCP协议的基础上,也有一些是通过FTP进行传输,但采用这些传输协议都不能满足流媒体的实时传输要求。

随着流媒体技术的深入研究,比较成熟的流媒体传输一般都是采用建立在UDP协议上的RTP/RTSP等实时传输协议。

为何要在UDP而不在TCP上进行实时数据的传输呢?因为两者在数据传输的速度和可靠性方面有很大的区别。TCP协议中包含了专门的数据传送校验机制,当数据接收方收到数据后,会自动向发送方发出确认信息,发送方在接收到该确认信息后,才会继续传送数据,否则将一直处于等待状态;而UDP协议则不同,UDP协议本身并不做任何数据传输校验。由此可以看出:TCP协议注重传输质量,而UDP协议则注重传输速度。因此,对于那些对传输质量要求不是很高,而对传输速度有很高要求的流媒体文件来说,采用UDP协议传输更为合适。

用户通过Web浏览器播放流媒体时,主要的交互过程如下:

  1. 用户选择流媒体服务后,Web浏览器与Web服务器之间使用 HTTP/TCP 交换控制信息,以便把需要传输的实时数据从原始信息中检索出来;
  2. Web浏览器启动A/V Helper程序,使用 HTTP 从Web服务器检索相关参数,然后对Helper程序初始化。这些参数可能包括目录信息、A/V数据的编码类型,或与A/V检索相关的服务器地址;
  3. A/V Helper程序及A/V服务器运行RTSP协议,以交换A/V传输所需的控制信息。与CD播放机或VCRs所提供的功能类似,RTSP提供了控制播放、快进、快倒、暂停及录制等命令的方法;
  4. A/V服务器使用RTP/UDP协议,将A/V数据传输给A/V客户程序(一般可认为客户程序等同于A/V Helper程序);
  5. 当A/V数据抵达客户端时,A/V客户程序即可播放A/V数据了。

需要说明的是,在流媒体传输过程中,使用RTP/UDP和RTSP/TCP两种不同的通信协议与A/V服务器建立联系,是为了能够把服务器的输出重定向到一个不同于运行A/V Helper程序所在客户端的目的地址。实现流式传输一般都需要专用服务器和播放器。

6.3 流媒体数据在客户端的缓存

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

了95%以上C C++开发知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值