Nginx 如何设置rtmp wtih ffmpeg和aparat.com?

Nginx 如何设置rtmp wtih ffmpeg和aparat.com?,nginx,ffmpeg,ubuntu-18.04,rtmp,rtmps,Nginx,Ffmpeg,Ubuntu 18.04,Rtmp,Rtmps,我对rtmp、nginx和ubuntu完全陌生 我只想使用vps将我的流重新流到多个站点,如twitch、youtube等。。。 这对我来说很好,但最近我的主要流媒体网站aparat.com改变了他的系统,他们没有在/usr/local/nginx/conf/nginx.conf中使用push命令 我用了这个: application live { live on; record off; push rtmp://live.cdn.asset.aparat.com:443/event/<s

我对rtmp、nginx和ubuntu完全陌生 我只想使用vps将我的流重新流到多个站点,如twitch、youtube等。。。 这对我来说很好,但最近我的主要流媒体网站aparat.com改变了他的系统,他们没有在/usr/local/nginx/conf/nginx.conf中使用push命令 我用了这个:

application live {
live on;
record off;
push rtmp://live.cdn.asset.aparat.com:443/event/<stream key>;
}
application-live{
靠...过活
记录;
推rtmp://live.cdn.asset.aparat.com:443/event/;
}
它在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>";
}
application-live{
靠...过活
记录;
hls关闭;
冲出去;
等一下,钥匙打开;
exec_发布ffmpeg-irtmp://127.0.0.1/live/name -异步1-vsync1-c拷贝-f flv“rtmp://rtmp.cdn.asset.aparat.com:443/event/";
}
当我开始流媒体时,我在网站上没有流媒体。 我应该在我的highligh线上更改任何东西吗? 我应该在我的ubuntu 18.04.4上安装什么吗

请考虑我对那里的任何东西一无所知,我只是处理粘贴代码…< /P> 我已经安装了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\u发布ffmpeg-irtmp://127.0.0.1/live/name -异步1-vsync1-c拷贝-f flv“rtmp://live.cdn.asset.aparat.com:443/event/";
exec\u发布ffmpeg-irtmp://127.0.0.1:19350/live/name -异步1-vsync1-c拷贝-f flv“rtmp://live.cdn.asset.aparat.com:443/event/";
exec\u发布ffmpeg-irtmp://127.0.0.1:19350/live/name -异步1-vsync1-c拷贝-f flv“rtmp://rtmp.cdn.asset.aparat.com:443/event/";
我应该说twitch和youtube一切正常 此外,我使用OBS来流式传输游戏,当我直接流式传输到aparat.com并使用
rtmp://rtmp.cdn.asset.aparat.com:443/event

服务建议使用以下命令:

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发布块(此名称可以是您希望的任何名称),但它必须存在,否则nginx服务器将断开连接

rtmp://127.0.0.1/live/名称-这是您的流媒体名称(此名称可以是您想要的任何名称),与上面的发布名称类似

嗯。现在您有了一个新的rtmp服务器块,使用您想要的端口、您想要的发布名称和您想要的流名称侦听本地主机连接。现在,在这个块中,如果服务目的地(aparat)需要,您必须使用ffmeg重新编码您的流,并将其发送到stunnel代理,或者简单地将流推送到stunnel代理,因为此服务需要RTMPS。大概是这样的:

rtmp://127.0.0.1:port/live/name
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/streamkey
rtmp://127.0.0.1:1936/event/streamkey-这部分是stunnel监听连接、服务器(127.0.0.1)和端口(1936)的url

rtmp://127.0.0.1:1936/事件/streamkey-这是stunnel将在当时的服务目的地(aparat)上发布流的路径

现在,stunnel将简单地用服务(443)所需的主机和端口替换127.0.0.1:1936,并使用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>";
exec\u发布ffmpeg-irtmp://127.0.0.1/live/name -异步1-vsync1-c拷贝-f flv“rtmp://live.cdn.asset.aparat.com:443/event/";

pushrtmp://127.0.0.1:1936/event/;
你只需要一个特技代理就行了


完成后,重新启动nginx和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>";
rtmp://127.0.0.1/live/name-这是发布点和上面服务器块中的nginx发布块(此名称可以是您希望的任何名称),但它必须存在,否则nginx服务器将断开连接

rtmp://127.0.0.1/live/名称-这是您的流媒体名称(此名称可以是您想要的任何名称),与上面的发布名称类似

嗯。现在您有了一个新的rtmp服务器块,使用您想要的端口、您想要的发布名称和您想要的流名称侦听本地主机连接。现在,在这个块中,如果服务目的地(aparat)需要,您必须使用ffmeg重新编码您的流,并将其发送到stunnel代理,或者简单地将流推送到stunnel代理,因为此服务需要RTMPS。大概是这样的:

rtmp://127.0.0.1:port/live/name
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/streamkey
rtmp://127.0.0.1:1936/event/streamkey-这部分是stunnel监听连接、服务器(127.0.0.1)和端口(1936)的url

rtmp://127.0.0.1:1936/事件/streamkey-这是stunnel将在当时的服务目的地(aparat)上发布流的路径

现在,stunnel将简单地用服务(443)所需的主机和端口替换127.0.0.1:1936,并使用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),这将发送strea