我正在使用计算机 A 上的 ffmpeg 通过 rtp 流式传输桌面。这是我的 ffmpeg 代码:
ffmpeg -f x11grab -framerate 25 -video_size 1920x1080 -i :1.0 -c:v libx264 -preset fast -pix_fmt bgr0 -b:v 3M -g 25 -an -f rtp_mpegts rtp://230.0.0.1:5005
我可以在电脑A的vlc中播放“rtp://@230.0.0.1:5005”的直播流。但我无法通过尝试在 VLC 中打开“rtp://@230.0.0.1:5005”来播放与计算机 A 位于同一网络中的计算机 B 的流。
如果我通过 http 传输 mp4 文件,计算机 B 就可以播放它。对于http流,我只需进入VLC - >媒体 - >流 - >(添加mp4文件),并在A上的8080端口以HTTP格式流。然后在机器B上的VLC中使用“http:/ /服务器IP:端口号”。
我在这里做错了什么?
答案1
为什么Ubuntu收不到rtp流?
因为您使用的是多播地址230.0.0.1
,并且当前设置在两台主机之间没有多播路径。
所以,目前解决这个问题的一种方法就是使用单播传输。只需更改230.0.0.1
您要观看的主机的 IP 地址即可。
ffmpeg -f x11grab -framerate 25 -video_size 1920x1080 -i :1.0 -c:v libx264 -preset fast -pix_fmt bgr0 -b:v 3M -g 25 -an -f rtp_mpegts rtp://a.b.c.d:5005
其中a.b.c.d
是 Ubuntu 主机的 IP 地址。
然后,在 Ubuntu 主机上您可以执行以下操作:
vlc rtp://@:5005