【问题标题】:Running Live streaming of local user using ffmpeg at Web plateform使用 ffmpeg ar Web 平台运行本地用户的直播
【发布时间】:2019-10-17 18:24:46
【问题描述】:

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

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 - 这是我的流媒体网址

我可以在假释媒体播放器中看到直播(在 Linux 平台上),但我在跨网络(即从 windows PC - 在同一网络中)中看不到这个

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

非常感谢任何帮助

【问题讨论】:

    标签: ffmpeg video-streaming live-streaming


    【解决方案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
    

    因此,您可以在本地局域网中的其他机器上看到流。

    如果您想在网络上流式传输您的桌面屏幕,您必须使用适当的编解码器,例如 h264 (MP4) 并使用 media server,例如 NginxWowza 或一些喜欢这些并使用以下命令对其进行流式传输:

    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 是一个处理直播流的应用程序。它可以有另一个名称,但默认情况下它的默认名称是 live。

    stream_name 是流的任意名称。

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

    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 $2}'` -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 播放,只需将 hls 配置添加到 Nginx 配置文件中即可。然后用户可以使用 VLC 使用这个 URL 来播放 hls 流:

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

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

    【讨论】:

    • 我已经在我的媒体服务器中安装了 Nginx 服务器,还安装了 RTMP 模块,但是当我尝试使用命令(由你建议)从本地服务器流式传输时,“-tune”出现错误所以我已将其从命令中删除,并尝试使用我的媒体服务器 IP 进行流式传输。但是,流媒体仍然无法正常工作。所以,我现在尝试了以下命令“ffmpeg -f x11grab -r 1 -loglevel panic -s xdpyinfo | grep 'dimensions:'|awk '{print $2}' -i $DISPLAY -qscale 0 -f mpegts rtmp://:1935/hls/stream.m3u8” ,流媒体正在运行,但视频未加载到播放器中。有什么想法吗?
    • 让我看看你的 nginx.conf
    • 我在这里分享 DOC 文件。
    • 您在串流和播放时出现错误。您可以使用我添加的示例。
    猜你喜欢
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 2022-08-20
    • 2015-05-28
    • 2016-11-06
    • 1970-01-01
    • 2013-01-07
    相关资源
    最近更新 更多