运行 本地用户使用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,如 Nginx,Wowza 或类似的,然后使用以下命令在其上流式传输:
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命令。
我正在使用以下命令流式传输我的实时桌面屏幕。
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,如 Nginx,Wowza 或类似的,然后使用以下命令在其上流式传输:
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命令。