运行 本地用户使用ffmpeg ar Web平台直播

Running Live streaming of local user using ffmpeg at Web plateform

我正在使用以下命令流式传输我的实时桌面屏幕。

ffmpeg -f x11grab -r 1 -loglevel panic -s `xdpyinfo | grep 'dimensions:'|awk '{print }'` -i $DISPLAY -qscale 0 -f mpegts udp://192.168.3.151:1111

udp://192.168.3.151:1111 - 这是我的流 URL

我可以在 parole 媒体播放器(在 Linux 平台)中看到直播,但我无法在跨网络(即来自 windows PC - 在同一网络)

是否有任何网络平台让我可以从任何地方(windows 或 linux)看到我的流式传输,只需使用独特的流式传输 URL 或者我是否需要更改我的流式传输命令或方法?

非常感谢任何帮助

我假设 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 }'` -i $DISPLAY -qscale 0 -f mpegts udp://239.0.0.1:1111

所以,你可以在本地局域网的其他机器上看到流。

如果你想在网络上流式传输你的桌面屏幕,你必须使用合适的编解码器,如 h264 (MP4) 并使用 media server,如 NginxWowza 或类似的,然后使用以下命令在其上流式传输:

ffmpeg -f x11grab -s `xdpyinfo | grep 'dimensions:'|awk '{print }'` -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 是一个处理实时流的应用程序。它可以有其他名称,但默认情况下它的默认名称是 live。

stream_name 是流的任意名称。

在这种情况下,您在媒体服务器上通过 RTMP 发送流,然后其他人可以通过例如 HLS 协议通过播放器应用程序,如 VLC 播放器或通过网页中的 HTML5 视频标签 URL:

http://<Media_Server_Address>:1935/live/<stream_name>/playlist.m3u8

更新:

这是使用 Nginx 作为媒体服务器的例子:

Nginx 配置:

worker_processes  1;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;

        chunk_size 4000;

    application live {
            live on;
            allow publish all;
            allow play all;
        }

    }
}

FFmpeg 命令必须在本地 PC 上执行才能将本地 PC 的桌面流式传输到媒体服务器:

ffmpeg -f x11grab -s `xdpyinfo | grep 'dimensions:'|awk '{print }'` -framerate 25 -i $DISPLAY -c:v h264 -preset ultrafast -qscale 0 -f flv rtmp://<Media_Server_Address>:1935/live/localdesktop

现在,用户可以使用此 URL:

使用 VLC 在其他 PC 上播放流
rtmp://<Media_Server_Address>/live/localdesktop

如果需要HLS播放,只需在Nginx配置文件中添加hls配置即可。然后用户可以使用播放 hls 流,只需使用此 URL 使用 VLC:

http://<Media_Server_Address>:1935/live/localdesktop/playlist.m3u8

需要注意的是,在这种情况下,必须使用相同的ffmpeg命令。