最佳实践-p2p传输rtsp

一、介绍
库快科技的p2p sdk支持rtsp和rtmp的推拉流功能。文档 <最佳实践-对接SRS流媒体服务器>给出的是rtmp方式推拉流例子(可以先参考这篇文档),这里再给出rtsp推拉流的例子。整体架构和rtmp推拉流比较类似,只是流媒体服务器不是srs,这里换成mediamtx,也即以前simple-rtsp-server,因为srs不支持rtsp推拉流。

二、整体架构


 

三、测试

首先p2p云端系统您需要提前部署好,官网上有测试版本的免费云端服务供您下载和安装;这里给出的测试例子使用了家里的两台笔记本电脑,一台联想笔记本,一台苹果的macbook笔记本。macbook上运行流媒体服务器mediamtx和流媒体服务器代理程序。联想笔记本启动两个客户端p2p代理、ffmepg rtsp推流、vlc拉流播放。

1、首先下载流媒体服务mediamtx,下载地址为<mediamtx下载>,下载对应的运行平台版本,下载解压后不用加任何参数直接启动运行即可(程序使用默认参数)。在macbook笔记本上启动界面如下所示

macbook@localhost simple_rtsp_server % ./mediamtx

启动后有如下类似输出

2023/06/23 15:20:20 INF MediaMTX v0.23.6

2023/06/23 15:20:20 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)

2023/06/23 15:20:20 INF [RTMP] listener opened on :1935

2023/06/23 15:20:20 INF [HLS] listener opened on :8888

2023/06/23 15:20:20 INF [WebRTC] listener opened on :8889 (HTTP)


2、然后再在macbook启动流媒体p2p代理,启动日志如下,输入参数为p2p系统的账号、密码,以及流媒体服务器的ip和rtsp端口。p2p账号和密码根据实际的license配置文件里面设置,在云端服务p2p_track/p2p_license目录下有账号文件


macbook@localhost p2p_media_agent % ./p2p_media_agent test-00099 S2355Ej 127.0.0.1 8554


3、在联想笔记本上启动推流代理程序,输入参数为代理的ip和端口号,对端p2p账号,连接模式,p2p系统云端的登录地址和端口,如下所示:


D:\temp\proxy>.\win_p2p_proxy.exe 127.0.0.1 32915 test-00099 0  112.76.66.67 4080


4、在联想笔记本上启动ffmpeg的rtsp推流,必须注意的是必须使用tcp模式推流,将rtsp流推送到本机的32915端口。此时ffmpeg会将流媒体数据推送到p2p客户端代理,然后p2p客户端代理再将数据透传到macbook上的流媒体p2p代理,最后流媒体p2p代理会将数据透传给流媒体服务器。


D:\temp>ffmpeg -re -i spartacus.flv -c copy -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:32915/video


5、在联想笔记本上启动拉流的p2p代理,如下所示,端口为32916


D:\temp\proxy>.\win_p2p_proxy.exe 127.0.0.1 32916 test-00099 0  112.76.66.67 4080


6、修改vcl播放器的配置,将vlc的rtsp传输模式改为tcp模式,如下所示


        


7、用vlc播放rtsp流媒体地址,如下所示:


   

     


8、最后就看到了流畅的音视频画面了,大功告成


   


四、总结

库快科技的p2p sdk提供了一个极为有用的代理接口,即kkp2p_start_proxy函数,代理会透传数据,且与具体的协议无关,您可以启动各种应用,比如http,https,rtmp,rtsp等等。极大的方便您进行各种应用场景的编程,满足您的各种业务需求。