本文主要是介绍srs_rtmp connect vhost/app failed,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在上一篇文章中已经实现了arm版本的nginx,且已经可以在目标板子上运行了,如:
同时也可以用netstat 查看nginx监听的端口号,如:
arm版本的nginx已经搭建好,且nginx里rtmp模块也已经支持,接下来就是尝试在板子上将h264裸码流推送到nginx服务,然后在pc上用vlc进行拉流,在网上搜索到一篇博文,可以参考:将h.264裸码流推送到RTMP服务器_OSSRS-CSDN博客
我也是参考了里面的操作,首先是下载了srs_h264_raw_publish.c,及srs_librtmp.h, srs_librtmp.cpp, h264码流文件无法下载了,我是自己在公司设备上搞下来的一段上264码流,有需要的朋友欢迎@我。文件如下:
为了编译方便,我将srs_h264_raw_publish.c 修改为了cpp,只要修改几处goto就可以。编译依赖库libcrypto.so,所以如果出现这些错误时需要编译安装libcrypto.so库:
一切编译完成后,拷贝到arm板子上运行时,却出现这个错误:
可以看到握手已经成功了,但在连接vhost时失败了,出现错误的代码位置:
对srs_librtmp不熟悉,不知道这个是什么错误引起的,网上搜索一番也未能找到答案。最后终于找到原因了,因为我们调用的命令是:./rtmpPublisher ./videoFrame.h264 rtmp://127.0.0.1:1935/live/livestream 25;我们的配置里相应的也要有配置,其配置如下:
其中关键字“live”就是对应命令行里 rtmp://127.0.0.1:1935/live/livestream 里的live,如果这两个不一样,就会出现上面那个错误“connect vhost/app failed”。最后成功的样子:
已经在读取h264文件进行推送了。配置文件一定要修改对,可以用nginx -t 进行测试,这样可以测试nginx配置文件是否存在语法错误,或是无法识别的module,如果nginx不支持rtmp模块,而在nginx.conf里添加了rtmp模块的配置,则会报错无法识别等信息。配置如下:
同时也可以查看nginx用的是哪个路径下的nginx.conf配置文件,如我的板子上存在多个nginx.conf配置文件,nginx用的是/usr/sbin/conf/下的nginx.conf
这篇关于srs_rtmp connect vhost/app failed的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!