在端口1935上服务rtmp

时间:2019-08-07 18:49:38

标签: nginx ffmpeg ubuntu-18.04 rtmp

我一直试图让ffmpeg在rtmp中流式传输,但始终拒绝连接到端口1935。我真的不知道我还能做些什么来允许这种连接。

这是我正在运行的规格。

  • Ubuntu 18.04(尝试过19.04)但存在相同的问题-这就是为什么我认为我犯了一个错误
  • 目前未安装Nginx
  • FFMPEG“ ffmpeg版本3.4.6-0ubuntu0.18.04.1版权所有(c)2000-2019用gcc 7(Ubuntu 7.3.0-16ubuntu3)构建的FFmpeg开发人员”

这是我运行的脚本:

ffmpeg -i "test.mp4" -c:v copy -c:a copy -f flv "rtmp://127.0.0.1/stream/test"

我得到的错误是:

[tcp @ 0x55ff05ab8ce0] Connection to tcp://127.0.0.1:1935 failed: Connection refused

我已经进行了一些研究,并且涉及到有关ffserver.conf的许多帖子,并且进行了这些更改,但仍然没有运气。这是我的配置文件。我也曾经使用此配置运行过ffserver。




HTTPPort 8090
HTTPBindAddress 127.0.0.1
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -

<Feed feed1.ffm>

File /tmp/feed1.ffm
FileMaxSize 200K

# Only allow connections from localhost to the feed.
ACL allow 127.0.0.1
ACL allow localhost     
ACL allow 192.168.0.0 192.168.255.255
</Feed>

<Stream test1.mpg>

# coming from live feed 'feed1'
Feed feed1.ffm

Format mpeg
AudioBitRate 32

# Number of audio channels: 1 = mono, 2 = stereo
AudioChannels 2
AudioSampleRate 44100

# Bitrate for the video stream
VideoBitRate 64

# Ratecontrol buffer size
VideoBufferSize 40

# Number of frames per second
VideoFrameRate 3


</Stream>


<Stream test.asf>
Feed feed1.ffm
Format asf
VideoFrameRate 15
VideoSize 352x240
VideoBitRate 256
VideoBufferSize 40
VideoGopSize 30
AudioBitRate 64
StartSendOnKey
</Stream>

# Special streams

# Server status

<Stream stat.html>
Format status

ACL allow localhost
ACL allow 127.0.0.1
ACL allow 192.168.0.0 192.168.255.255

#FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico
</Stream>

<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>

这是我的ufw状态:

--                         ------      ----
22/tcp                     ALLOW       Anywhere
22                         ALLOW       Anywhere
1935/tcp                   ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
22 (v6)                    ALLOW       Anywhere (v6)
1935/tcp (v6)              ALLOW       Anywhere (v6)

但还是一无所有,我还在iptables中打开了端口,但是没有运气。这样做的方法如下:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT

and

iptables -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT

什么也没有,每次我运行ffmpeg时,我都会被拒绝连接。我以前安装过nginx只是为了测试,但没有运气。

我在这里做错了什么?该端口不是现在应该打开吗?

谢谢

2 个答案:

答案 0 :(得分:0)

我发现,我正在使用Nginx RTMP模块-由于某些原因Nginx RTMP在Ubuntu上无法正常运行,但在Alpine 3.8上运行良好-当我启动nginx rtmp docker容器并暴露1935年和80一切开始时工作正常。听着学到的话,切勿在ubuntu上安装nginx rtmp模块。

答案 1 :(得分:0)

@ JJ-the-Second,我一直在本地使用ubuntu上的nginx rtmp模块,它工作得很好。但是,我没有将流发送到localhost,而是将其发送到0.0.0.0handleText=(key, value)=>{ this.setState({ [key] : value }) } <input type="text" onChange={(e) => this.handleText('firstname',e.target.value)} id="inputText" value={this.state.firstname} /> <input type="text" onChange={(e) => this.handleText('lastname',e.target.value)} id="inputText" value={this.state.lastname} />