我是一个全新的rtmp和nginx和ubuntu,我只想使用一个vps来重新流我的流到多个网站,如twitch,youtube等。它对我来说运行得很好,但最近我的主要流媒体网站aparat.com改变了他的系统,他们不接受/usr/local/nginx/conf/nginx.conf中的推送命令,我使用了以下命令:
application live {
live on;
record off;
push rtmp://live.cdn.asset.aparat.com:443/event/<stream key>;
}它在twitch、youtube或mixer上运行良好,但不能在aparat.com上运行
不知道为什么他们给我这个,然后让我用它:
application live {
live on;
record off;
hls off;
dash off;
wait_key on;
exec_publish ffmpeg -i rtmp://127.0.0.1/live/name -async 1 -vsync 1 -c copy -f flv "rtmp://rtmp.cdn.asset.aparat.com:443/event/<stream key>";
}当我开始流媒体时,我在站点上得不到流媒体。除了我高亮的那条线以外,我还应该换别的东西吗?我应该在我的ubuntu 18.04.4上安装什么吗?
请考虑我对那里的任何事情都一无所知,我只是应付粘贴代码……
我已经安装了ffmpeg和stunnel,并对它们进行了配置,我还尝试这样做:
exec_publish ffmpeg -i rtmp://127.0.0.1/live/name -async 1 -vsync 1 -c copy -f flv "rtmp://live.cdn.asset.aparat.com:443/event/<stream key>";exec_publish ffmpeg -i rtmp://127.0.0.1:19350/live/name -async 1 -vsync 1 -c copy -f flv "rtmp://live.cdn.asset.aparat.com:443/event/<stream key>";exec_publish ffmpeg -i rtmp://127.0.0.1:19350/live/name -async 1 -vsync 1 -c copy -f flv "rtmp://rtmp.cdn.asset.aparat.com:443/event/<stream key>";我应该说,使用twitch和youtube一切都很好,我也使用OBS来流式播放游戏,当我直接流式传输到aparat.com并使用rtmp://rtmp.cdn.asset.parat.com:443/event时,一切都很好
发布于 2020-07-29 22:02:41
该服务建议使用以下命令:
exec_publish ffmpeg -i rtmp://127.0.0.1/live/name -async 1 -vsync 1 -c copy -f flv "rtmp://live.cdn.asset.aparat.com:443/event/<stream key>";让我们来理解一下上面的命令:
rtmp://127.0.0.1/live/name -这是你的nginx设置上的一个块。因此,您必须创建一个监听本地主机的服务器块,端口1935,因为1935是默认的rtmp协议端口,或者您可以更改为任何其他端口,并将此端口附加到上面的命令,如下所示:
rtmp://127.0.0.1:port/live/namertmp://127.0.0.1/live/name -这是发布点,您的nginx发布块在上面的服务器块中(此名称可以是您希望的任何名称),但它必须存在,否则nginx服务器将丢弃连接。
rtmp://127.0.0.1/live/name -这是您的流名称(此名称可以是您希望的任何名称),类似于上面的发布名称。
好的。现在你有了一个新的rtmp服务器块,监听本地主机连接,使用你想要的端口,你想要的发布名称和你想要的流名称。现在,在这个代码块中,如果服务目的地(aparat)需要,您必须使用ffmeg重新编码您的流,并将其发送到stunnel代理,或者简单地将流推送到stunnel代理,因为此服务需要RTMPS。如下所示:
rtmp {
server {
listen 127.0.0.1:1935;
# or 127.0.0.1:yourPort;
application live {
live on;
# i will push the stream name to the stunnel proxy,
# without re-encoded it because i believe you can adjust the broadcaster
# software to send it as your service requires it.
# Understand that stunnel proxy will be listening localhost connections
# under the port 1936 or change it to your stunnel settings
push rtmp://127.0.0.1:1936/event/streamkey
}
}
}现在,让我们来了解一下push stunnel代理url:
push rtmp://127.0.0.1:1936/event/streamkeyrtmp://127.0.0.1:1936/event/streamkey -这部分是url,它将监听连接、服务器(127.0.0.1)和端口(1936)。
rtmp://127.0.0.1:1936/event/streamkey --这是一个路径,在这个路径中,stunnel将把你的流发布到服务目的地(aparat)。
现在,stunnel将简单地将127.0.0.1:1936替换为服务所需的主机和端口(443),并使用RTMPS发送您的流。
下面是我对stunnel.conf的建议:
pid = /var/run/stunnel4/stunnel.pid
output = /var/log/stunnel4/stunnel.log
setuid = stunnel4
setgid = stunnel4
# https://www.stunnel.org/faq.html
socket = r:TCP_NODELAY=1
socket = l:TCP_NODELAY=1
debug = 4
[aparat-live]
client = yes
accept = 127.0.0.1:1936
connect = rtmp.cdn.asset.aparat.com:443
verifyChain = no现在,在服务器上的默认pusblish块上,添加以下行,替换远程服务建议的第一个命令:
push rtmp://127.0.0.1:1935/live/name;在您的默认发布块中,上面的命令将把流推送到服务器块(localhost:1935),这将把流发送到stunnel代理。
请理解,您不需要新的服务器块来将流直接发送到stunnel代理。这是使用您发布的命令对您的问题的解释。
你只需要在你的默认发布块上用下面的命令替换这个命令,它就会把流发送到stunnel代理:
替换
exec_publish ffmpeg -i rtmp://127.0.0.1/live/name -async 1 -vsync 1 -c copy -f flv "rtmp://live.cdn.asset.aparat.com:443/event/<stream key>";通过
push rtmp://127.0.0.1:1936/event/<streamkey>;你只需要一个可以很好的工作的stunnel代理。
完成后,重新启动nginx和stunnel服务以及happy stream。
https://stackoverflow.com/questions/63151175
复制相似问题