鲍渔爱好者 2024-04-16 16:29 采纳率: 33.3%
浏览 816
已结题

docker模式webrtc-streamer 无法播放公网rtsp

github地址 https://github.com/mpromonet/webrtc-streamer
测试环境:centos7 + docker
犹豫直接部署webrtc-streamer 需要升级gcc和若干系统依赖,比较麻烦,所以采用docker方式部署,同样turn公网穿透服务也采用docker方式部署,经测试服务turn服务正常
目前的问题:可以正常播放局域网rtsp,但是无法播放公网rtsp,一直没有找到问题

img


img


webrtc-streamer docker启动命令
局域网模式:docker run --network host -p 8000:8000 --name webrtc-streamer -itd mpromonet/webrtc-streamer
公网模式:docker run -itd --network host --name webrtc-streamer mpromonet/webrtc-streamer -o -H 192.168.1.66:8000 -Tadmin:abc123456@116.162.XXX.XXX:3478
turn服务启动命令
docker run -itd --name turnserver -e EXTERNAL_IP=116.162.xxx.xxx -e TURN_USERNAME=admin -e TURN_PASSWORD=abc12345 -p 3478:3478 -p 3478:3478/udp passerma/turnserver

turn服务测试正常

img


在容器内部测试连接turn服务是通的,服务器上的防火墙都是关闭的,云上防火墙也全部放通的

播放测试时一直转圈播放不了,js日志都显示ice已连接上了,局域网rtsp可以正常播放,求指点

img

img


这是容器启动日志,不知道是否跟着错误有关系,局域网模式启动也是一样的问题,但是可以正常播放

  • 写回答

14条回答 默认 最新

  • GISer Liu 2024-04-16 17:18
    关注

    该回答引用自GPT-4,由博主GISer Liu编写:

    这个问题看起来可能涉及到网络配置或者 Docker 容器内部的设置。在你的情况中,局域网的 RTSP 可以播放正常,但是公网的 RTSP 无法播放。
    首先,我们需要确认一些基本事项:

    1. 确保服务器上的防火墙已经完全关闭,包括云上防火墙。
    2. 确保 Docker 容器内部的网络设置正确,尤其是容器是否可以访问公网资源。
      然后,我们可以尝试以下几个步骤来解决问题:
    3. 检查网络配置
    • 确保在 Docker 容器内部可以访问公网资源。你可以在容器内执行 ping 或者 curl 命令来测试网络连通性。
    • 确保 Docker 的网络模式设置正确。你可以尝试使用 bridge 模式,并映射端口到主机上,然后再次测试播放公网 RTSP。
    1. 检查日志
    • 查看容器启动日志以及 webrtc-streamer 的日志,看是否有任何错误信息或者警告。
    • 在浏览器的开发者工具中查看 JavaScript 控制台,可能会有一些有用的信息。
    1. 尝试修改 webrtc-streamer 的配置
    • 可能需要在 webrtc-streamer 的配置中指定一些公网相关的参数,例如 NAT 地址等。请查阅 webrtc-streamer 的文档,看是否有相关的配置项需要设置。
    1. 排查 TURN 服务器
    • 确保 TURN 服务器的配置正确,并且可以在公网环境下正常工作。
    • 尝试使用其他的 TURN 服务器,或者尝试直接连接公网 RTSP 流,绕过 TURN 服务器,看看问题是否依然存在。
    1. 排查浏览器兼容性问题
    • 尝试在不同的浏览器上播放公网 RTSP 流,看看是否有浏览器兼容性的问题。
      通过以上步骤,你应该能够逐步定位并解决问题。如果还有其他疑问或者需要进一步帮助,请随时提出。

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月17日
  • 赞助了问题酬金15元 4月16日
  • 修改了问题 4月16日
  • 创建了问题 4月16日