关于使用FFmpeg推流时,live目录的理解

    根据博主之前的博文《在windows下搭建、配置nginx流媒体服务器,并进行rtmp流的推流、拉流测试》搭建好nginx流媒体服务器后,可能有些朋友会对博文里面进行推流测试的指令:“ ffmpeg -i video3.mp4 -f flv rtmp://127.0.0.1/live/test1 ”中的“ live ”有一些不理解。“ live ”其实是一个虚拟目录,这个目录和windows中传统的目录是不一样的,可以理解为推流到的流媒体服务器的模块路径或者虚拟路径,但是实际在流媒体服务器中是不会存在这个目录的,因为它是虚拟的。这个目录其实是用来区分流的,表示要推流到的地址;推流地址为多少,拉流地址就得为多少。比如推流指令为“ ffmpeg -i video3.mp4 -f flv rtmp://127.0.0.1/live/test1 ”,使用ffplay进行拉流的指令就得为“ ffplay rtmp://127.0.0.1/live/test1”,可以看到推流地址和拉流地址是对应的。

    在测试的过程中,可能有些朋友也会发现,将推流指令中的“ live ”目录改为其它目录时,推流会失败。比如在命令提示符中输入指令:“ ffmpeg -i video3.mp4 -f flv rtmp://127.0.0.1/mydir/test1 ”,推流会失败(但是输入指令“ ffmpeg -i video3.mp4 -f flv rtmp://127.0.0.1/live/test1 ”是可以成功进行推流的)如下图所示:

问题产生的原因是:推流目录其实是在nginx的配置文件中进行设置的,默认是“ live ”。在没有更改配置文件中推流目录的情况下改变指令中的推流目录,自然就会推流失败了。如下图所示,在nginx的conf目录下有配置文件nginx.conf。

打开该配置文件,我们可以看到有“ application live ”这一行内容。该行表示nginx的推流虚拟目录为“ live ”。所以我们的推流指令格式就只能为:ffmpeg -i “文件名” -f flv rtmp://“nginx所在电脑的IP地址”/live/“推流子目录”。

要想在推流指令中使用其它推流目录,比如改为使用“ mydir ”。我们可以更改配置文件nginx.conf为如下所示:

更改配置文件后,重启nginx,在命令提示符中输入指令:“ ffmpeg -i video3.mp4 -f flv rtmp://127.0.0.1/mydir/test1 ”,我们发现推流成功了,如下图所示:

发布了54 篇原创文章 · 获赞 55 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/u014552102/article/details/103093607