RTSP 转 WebRTC 播放测试

1.使用Janus的streaming插件播放 注意此种方式目前仅支持Transport: RTP/AVP/UDP哦  有些摄像头是tcp

/opt/janus1/etc/janus/janus.plugin.streaming.jcfg 配置

rtsp-test: {
    type = "rtsp"
    id = 99
    description = "RTSP Test"
    audio = false
    video = true
    url = "rtsp://xxxx"  
    #rtsp_user = "username"
    #rtsp_pwd = "password"
    #  secret = "adminpwd"
}

使用网页demo播放即可
2.https://github.com/deepch/RTSPtoWebRTC 此方式支持tcp go实现 编译

export GOPROXY=https://mirrors.aliyun.com/goproxy/
go get github.com/deepch/RTSPtoWebRTC
cd src/github.com/deepch/RTSPtoWebRTC
go run .


访问 http://127.0.0.1:8083 work chrome, safari, firefo

 

注意以上注册配置的stun 能正确访问

(以下来自百度

第一次运行提示 Session Description must not be empty 

排查代码应该是stun服务器连不上 删掉/web/static/js/app.js第二行的stun:stun.l.google.com:19302

http.go里也有一个,删之。

 

再运行发现一直加载出不来画面,这个问题困扰了好几天,排查代码是RTSP协议发送完PLAY命令了始终收不到数据

调试到/github.com/deepch/vdk/format/rtsp/client.go 的readPacket()中 卡在了poll()函数上

最后终于发现换个rtsp服务器就好了,之前用VLC编的RTSP流无法播放,但用VLC播放没问题。

 

更新下 已经调通了监控摄像头,要求设置为H264 HIGH Profile 不然报SPS PPS错误

另外SDP解析也有问题 无法识别m=application

浏览器版本也有要求 chrome 72以上 跟webrtc的plan-b和unified-plan有关

)

接收远程桌面定制(exe或上面浏览器方式都有)、高清桌面抓取虚拟摄像头定制、sip客户端可到:https://shop121230895.taobao.com/

交流群261074724

### zlmediakit 在 Windows 平台上实现 RTSPWebRTC 换的教程或配置指南 zlmediakit 是一个开源的多媒体服务器框架,支持多种协议(如 RTSP、RTMP、HLS 和 WebRTC)之间的换。在 Windows 平台上实现从 RTSPWebRTC换,需要完成以下几部分内容的配置和开发。 #### 1. 环境准备 在开始之前,确保安装了以下依赖项: - **C++ 编译器**:推荐使用 Visual Studio 2019 或更高版本。 - **CMake**:用于生成项目的构建文件。 - **OpenSSL**:WebRTC 需要 SSL/TLS 支持,因此需要安装 OpenSSL 库[^1]。 - **SphinxBase 和 PocketSphinx**(可选):如果需要语音识别功能,可以安装这些库。 #### 2. 下载并编译 zlmediakit 从 GitHub 上克隆 zlmediakit 源代码,并按照官方文档进行编译。以下是具体步骤: ```bash # 克隆仓库 git clone https://github.com/ZLMediaKit/ZLMediaKit.git # 创建构建目录 mkdir build && cd build # 使用 CMake 配置项目 cmake -G "Visual Studio 16 2019" .. # 根据你的 Visual Studio 版本调整命令 # 打开解决方案并编译 msbuild ZLMediaKit.sln /p:Configuration=Release /p:Platform=x64 ``` 确保编译成功后,生成的二进制文件位于 `build/Release` 目录下。 #### 3. 配置 RTSPWebRTC 换 zlmediakit 提供了内置的支持,可以通过修改配置文件来启用 RTSPWebRTC换。以下是关键步骤: ##### 3.1 修改配置文件 编辑 `conf/mediaServer.conf` 文件,添加或修改以下内容: ```ini [general] ; 启用 WebRTC 功能 enable_webrtc=true [http] ; 设置 HTTP 服务端口 listen_port=8080 [rtsp] ; 设置 RTSP 服务端口 listen_port=554 [webrtc] ; 设置 WebRTC ICE 服务器信息 ice_server=stun:stun.l.google.com:19302 ``` ##### 3.2 启动服务 运行编译生成的 `mediaServer.exe`,确保服务正常启动。 #### 4. 实现 RTSPWebRTC换逻辑 通过 zlmediakit 的 API,可以编写一个简单的程序来实现 RTSP 流的拉取和推送到 WebRTC。以下是一个示例代码片段: ```cpp #include "ZLMediaKit/Toolkit.h" using namespace toolkit; int main() { // 初始化日志系统 mk_print_log_init(); // 拉取 RTSP 流 auto rtsp_url = "rtsp://example.com/stream"; auto webrtc_sdp = "sdp_string_from_client"; // 客户端提供的 SDP // 创建 RTSP 拉流对象 auto rtsp_puller = std::make_shared<RTSPPull>(rtsp_url); // 将 RTSP 流推送到 WebRTC auto webrtc_pusher = std::make_shared<WebRTCPush>(webrtc_sdp); rtsp_puller->start([webrtc_pusher](auto frame) { webrtc_pusher->sendFrame(frame); }); // 阻塞主线程以保持程序运行 while (true) { std::this_thread::sleep_for(std::chrono::seconds(1)); } return 0; } ``` #### 5. 测试换效果 使用支持 WebRTC播放器(如 VLC 或浏览器中的自定义播放页面)测试换后的流是否正常播放。确保 RTSP 源流和 WebRTC 接收端的网络连通性良好。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值