在Golang中使用mediamtx为RTSP流创建代理,因为源端的带宽挑战是IP摄像机

kmbjn2e3  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(1262)

我已经访问了MediaMtx https://github.com/aler9/mediamtx的官方github页面

  • 我首先使用以下命令下载并启动映像
docker run --rm -it --network=host aler9/rtsp-simple-server

字符串

  • 然后,我编辑了mediamtx.yml文件,在路径部分做了以下更改,在那里我提到了我的源URL。
paths:
  proxied:
    # url of the source stream, in the format rtsp://user:pass@host:port/path
    source: rtsp://original-url

  • 我用来编辑yml的命令是docker run --rm -it --network=host -v $PWD/mediamtx.yml:/mediamtx.yml aler9/rtsp-simple-server
  • 现在,正如文档所说,我试图监听代理地址rtsp://localhost:8554/proxied,但我得到的错误是exit 1。
  • 这是ffmpeg命令,我用它来读取流,使用不同的程序本地cmd := exec.Command("ffmpeg", "-rtsp_transport", "tcp", "-re", "-i", "rtsp://localhost:8854/proxied", "-c:v", "copy", "-f", "segment", "-segment_time", "300", "-segment_format", "mp4", "-segment_list", "recordings/playlist.m3u8", "-segment_list_entry_prefix", "recordings/", "-nostdin", "recordings/output-%03d.mp4")其中我存储的流作为mp4文件及时的基础上。

我尝试将用户身份验证(rtsp://user:pass@host:port/path)添加到YML的paths部分,希望这就是问题所在

paths:
  all:
    readUser: user
    readPass: userpass


但这似乎并不奏效。我不知道该往哪个方向看,因为我是RTSP协议的新手。希望这能总结我的问题。

gojuced7

gojuced71#

1.创建Docker容器docker run --name rtps-proxy -it -e MTX_PROTOCOLS=tcp -p 8554:8554 -p 1935:1935 -p 8888:8888 -p 8889:8889 -d bluenviron/mediamtx
1.编辑mediamtx.yml
路径:代理:#源流的url,格式为rtsp://user:pass@host:port/path source:rtsp://原始URL
1.将mediamtx.yml复制到docker容器
docker cp mediamtx.yml rtps-proxy:/mediamtx.yml
docker restart rtps-proxy container
您可以在浏览器上观看http://host:8888/proxied视频

相关问题