很久很久之前,我们介绍了一下组播相关的协议(IGMPv1:IP 组播的主机扩展、MSDP:组播源发现协议、MSDP:组播源发现协议部署方案),但是一直没有开展相关实验。直到最近接触了任播之后(主机任播服务、任播服务的操作、IP任播的架构考虑),发现任播的底层很大程度上还是和组播相关,只好回过头来再通过简单的实验复习一下组播,来加深对任播实现机制的了解。
俗话说,工欲善其事,必先利其器,我们首先先了解一下常用于组播测试的软件工具VLC media player。
VLC的全称是VideoLAN Client,VLC media player是VideoLAN的一款免费多媒体播放器,支持Windows 7到Windows 11的大多数操作系统,支持大多数文件和流媒体格式,被消费者和专业人士广泛使用;与之对应的还有一款VideoLAN Server,是VideoLAN的另一个产品,但已经停产很长时间了。
接下来,我们将初步了解一下如何设置VLC以接收组播或单播流。
1、RTP组播推流
首先是配置推流端,也被称为信息源,我们在“媒体”菜单中,选择“流”,或者使用“Ctrl+S”快捷键。
在“打开媒体”对话框的“文件”选项卡中,单击“添加”并选择要流式传输的文件,单击“打开”添加到列表中。添加完成后,点击底部的“串流”按钮。
在“流输出”对话框中,展示了我们选择的源文件信息,单击“下一个”设置串流的目标位置。
在“流输出”对话框中,“新目标”选择“RTP/MPEG Transport Stream”并单击“添加”按钮。
来到配置地址和端口的页面,在“地址”框中,参考()输入所需的组播地址(例如224.2.2.4)并设置端口(或使用默认值5004),单击“下一个”。
在“转码选项”中,为视频和电脑的编解码器选择适当的设置,建议选择“Video-H.264 + MP3(MP4)”,也可以点击下拉列表右侧的选项按钮(扳手图标)来进一步调整设置选项,如调整视频和音频的码率配置等,然后单击“下一个”。
在“设置其他串流选项”界面,我们勾选“串流所有基本流”,然后单击“流”开始推流。
在推流端中,默认是不展示视频画面的,但是我们可以看到下面的进度条是一直在走的,为了方便接收端接受信号,我们还可以点击下面的循环播放按钮来持续推流。
推流端设置完成之后,我们来配置接收端。此时,我们打开另一个VLC媒体播放器实例,在通过网络进行测试之前,建议在同一台电脑上进行尝试。首先,我们在“媒体”菜单中,选择“打开网络串流”,或者使用“Ctrl+N”快捷键。
在URL地址栏中,输入在推流端设置流时配置的地址和端口,如“rtp://@223.2.2.4:5004”,千万不要忘记在“rtp://”和组播IP地址之间输入“@”符号!最后点击“播放”。
然后,我们就可以看到推流画面了。
当然,VLC也支持同时推流传输多个视频,此时需要配置选择不同的组播地址和/或端口。
2、HTTP单播推流
和RTP组播推流中添加文件的操作相似,在添加完文件之后,在“流输出”对话框中,“新目标”选择“HTTP”并单击“添加”按钮。
在“目标设置”对话框中,我们直接保持默认即可,或者按照个人需求修改端口,不建议修改路径,单击“下一个”。
在前面设置过之后,这里可以带出上一次使用的配置“Video-H.264 + MP3(MP4)”,点击“下一个”。
在“设置其他串流选项”界面中,同样勾选“串流所有基本流”,然后单击“流”开始推流。
推流端设置完成之后,我们来配置接收端。同样,我们打开另一个VLC媒体播放器实例,在“媒体”菜单中,选择“打开网络串流”,或者使用“Ctrl+N”快捷键。
然后在URL地址栏中,输入在推流端设置流时配置的地址和端口,如“http://192.168.1.110:8080”,最后点击“播放”。
然后,我们就可以看到推流画面了。
此时,我们注意到电脑的CPU利用率偏高,为了减少CPU占用,我们可以选择在推流时关闭“激活转码”的选项。
3、UDP广播推流
和前面一样,在添加完文件之后,在“流输出”对话框中,“新目标”选择“UDP(legacy)”并单击“添加”按钮。
在“目标设置”对话框中,我们需要填写地址信息,因为广播只能同网段可见,然后按照个人需求修改端口,单击“下一个”。
在“转码选项”中,我们本次关闭“激活转码”选项,使用的配置“Video-H.264 + MP3(MP4)”,点击“下一个”。
在“设置其他串流选项”界面中,同样勾选“串流所有基本流”,然后单击“流”开始推流。
推流端设置完成之后,我们来配置接收端。同样,我们打开另一个VLC媒体播放器实例,在“媒体”菜单中,选择“打开网络串流”,或者使用“Ctrl+N”快捷键。
然后在URL地址栏中,只需要输入推流端设置的端口即可,如“udp://@:1234”,最后点击“播放”。
与前面两个不同,再使用广播时,我们发现播放端的进度条时间不准确,应该是协议不同导致的。
而且此时软件的CPU占用率也低下来了,整体比较稳定。
总结一下:在IP网络中若采用单播的方式,信息源要为每个需要信息的主机都发送一份独立的信息拷贝,最稳定可靠,但是当终端数量较大时,对信息源以及网络带宽都将造成巨大的压力;若采用广播的方式,信息源将把信息传送给该网段中的所有主机,而不管其是否需要该信息,不利于与特定对象进行数据交互,并且还浪费了大量的带宽。
而组播相比单播来说,用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加;相比广播来说,被传递的信息只会发送给需要该信息的接收者,不会造成网络资源的浪费,并能提高信息传输的安全性;另外,广播只能在同一网段中进行,而组播可以实现跨网段的传输。
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/193587.html