基于rtmp协议推流IP地址链接失败

rtmp
用nginx、ffmpeg、vlc解析
nginx,ffmpeg配置完毕,且在控制台输入C:\ffmpeg\ffmpeg.exe -re -i D:\rtmp\orange.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/home推流, vlc网络输入rtmp://127.0.0.1:1935/live/home成功拉流播放
问题:在代码中想用rtmp实现pcm音频上传rtmpSessionMgr.Start("rtmp://localhost:1935/live/home");却显示连接失败,为啥啊?

img

乱输入http://www.xx.com/ 类型都没报错,输入rtmp://127.0.0.1:1935/live/home 就报错

使用RTMP_PUSH推流不成功的原因是什么? 原创

可以借鉴下
https://blog.51cto.com/tsingsee/5214905

以下内容引用CHATGPT:

可能是因为在代码中使用的IP地址和端口号不正确导致连接失败。建议检查一下IP地址和端口号是否正确并且网络连接是否正常。另外,可以尝试在代码中使用完整的RTMP URL,如"rtmp://127.0.0.1:1935/live/home"来进行推流。以下是一个使用Java实现RTMP推流的示例代码:

// 创建一个RTMP连接
RTMPConnection rtmpConnection = new RTMPConnection();

// 连接到RTMP服务器
rtmpConnection.connect("rtmp://127.0.0.1:1935/live/home");

// 创建一个RTMP流
RTMPStream rtmpStream = new RTMPStream(rtmpConnection);

// 开始推流
rtmpStream.publish("home");

// 推送PCM音频数据
byte[] pcmData = getPCMData();
rtmpStream.sendAudio(pcmData);

// 停止推流
rtmpStream.close();
rtmpConnection.close();

引用chatGPT作答,根据您提供的信息,我无法确定您的代码中存在什么问题。但是,以下是一些常见的问题和解决方法,您可以检查一下:

1.确认您的nginx服务器是否已启动,并且是否在端口1935上监听RTMP流。

2.确认您的代码中使用的RTMP库是否正确配置,包括端口、协议和服务器地址等。

3.确认您的PCM音频数据是否已经正确编码并按照RTMP协议规范发送。

4.确认您的防火墙是否已经配置正确,没有阻止与RTMP服务器的连接。

5.在代码中添加异常处理,以确保可以捕获连接失败的异常信息,并在必要时进行处理。

6.使用网络调试工具,例如Wireshark或tcpdump,捕获RTMP流传输过程中的数据包,以确定流是否已经成功发送到服务器。

希望这些提示可以帮助您找到问题所在。如果问题仍然存在,请提供更多详细信息,以便我能够更好地帮助您解决问题。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
从您提供的信息来看,采用VLC网络输入成功拉流播放,这表明Nginx、FFmpeg的配置是正确的,问题可能出现在代码实现上。您可以检查一下以下几个问题:

1.检查防火墙是否开启,如果开启可以尝试关闭防火墙重新连接试试。
2.检查连接的地址和端口是否正确,尝试使用ping命令测试本地IP地址是否正常连通。
3.如果是使用的本地IP地址进行推流,可以尝试使用127.0.0.1或localhost连接试试。
4.如果在使用rtmpSessionMgr.Start方法时,没有设置推流相关参数,可以尝试如下代码:
rtmpSessionMgr.Start("rtmp://localhost:1935/live/home?user=username&pass=password");

其中username和password应为您在Nginx配置文件中设置的推流用户名和密码(如果有设置的话)。

最后,如果您还无法解决问题,可以将完整的错误信息提供出来,以便我们进一步排查问题。
如果我的回答解决了您的问题,请采纳!