我正在使用以下命令来播放实时桌面屏幕。
ffmpeg -f x11grab -r 1 -loglevel panic -s `xdpyinfo | grep 'dimensions:'|awk '{print $2}'` -i $DISPLAY -qscale 0 -f mpegts udp://192.168.3.151:1111
udp://192.168.3.151:1111-这是我的流URL
我可以在假释媒体播放器(在Linux平台中)中看到实时流,但是在跨网络(即从Windows PC-同一网络中)中看不到
是否有任何Web平台,所以我可以使用唯一的流URL从任何地方(Windows或Linux)看到流,还是需要更改流命令或方法?
非常感谢您的帮助
答案 0 :(得分:1)
我假设192.168.3.151是您的Linux计算机IP,并且使用提到的URL(udp://192.168.200.151:1111),您正在本地计算机的端口1111上进行流传输,因此,预计该流仅在它。
首先,您可以使用多播UDP范围(See more information here)将桌面屏幕流式传输到本地LAN,如下所示:
ffmpeg -f x11grab -r 1 -loglevel panic -s `xdpyinfo | grep 'dimensions:'|awk '{print $2}'` -i $DISPLAY -qscale 0 -f mpegts udp://239.0.0.1:1111
因此,您可以在本地LAN中的其他计算机上看到流。
如果要在网络上流式传输桌面屏幕,则必须使用适当的编解码器,例如h264(MP4),并使用media server,例如 Nginx , Wowza 或类似的内容,并使用以下命令对其进行流式处理:
ffmpeg -f x11grab -s `xdpyinfo | grep 'dimensions:'|awk '{print $2}'` -framerate 25 -i $DISPLAY -c:v h264 -preset ultrafast -tune zerolatency -qscale 0 -f mpegts rtmp://<Media_Server_Address>:1935/live/<stream_name>
Media_Server_Address 是您的服务器域或IP地址。这可以是您的Web服务器或在其上安装了媒体服务器的其他服务器。
实时是处理实时流的应用程序。它可以有另一个名称,但是默认情况下,它的默认名称是live。
stream_name 是流的任意名称。
在这种情况下,您可以通过媒体服务器上的 RTMP 发送流,然后其他人可以通过 HLS 协议通过诸如VLC播放器之类的播放器应用程序或通过网页中具有以下URL的HTML5视频标签:
http://<Media_Server_Address>:1935/live/<stream_name>/playlist.m3u8