使用FFmpeg将视频推流到crtmpserver,通过vlc拉流播放(通过命令的方式)

  安装完FFmpeg,crtmpserver,vlc后就可以进行推流、拉流测试了。博主的crtmpserver安装在VMWare的Ubuntu中(安装方法可以参考https://blog.csdn.net/u014552102/article/details/86552823),ffmpeg和vlc都安装在windows中(win10)。

一、推流

  推流,指的是把采集阶段封包好的内容传输到服务器的过程,主播端把本地采集的语音视频流推送到媒体服务器。就是将现场的视频信号传到网络的过程。在本博文中我们会将主机windows中的媒体文件video5.mp4推流到虚拟机Ubuntu的流媒体服务器crtmpserver中,然后通过windows下的vlc播放出来。

 首先启动Ubuntu,在Ubuntu中执行命令:

ifconfig

如下图所示,可以看到Ubuntu的ip地址是192.168.1.108。记住这个地址。推流和拉流都要用到这个地址。

 然后启动crtmpserver,在Ubuntu中执行命令:

./crtmpserver/crtmpserver ./crtmpserver/crtmpserver.lua

当出现如下界面时,表示crtmpserver启动成功了。

然后我们来到FFmpeg安装目录。博主的FFmpeg安装在主机的win10下,如下图所示,文件夹里面有ffmpeg.exe和其依赖的dll,还有媒体文件video5.mp4。我们通过ffmpeg将video5.mp4推流到流媒体服务器crtmpserver中。

在windows的命令提示符中执行命令:

ffmpeg -i video5.mp4  -f flv rtmp://192.168.1.108/live/test1

其中-i 表示输入流。这里的输入流是video5.mp4。-f 表示设定的输出格式。这里因为要推流,推流得使用flv格式,所以设成-f flv。192.168.1.108是要推流到的流媒体服务器所在的Ubuntu的ip地址。上述语句的意思是通过ffmpeg将媒体文件video5.mp4推流到ip地址为192.168.1.108的平台中。

执行完上述命令,会出现如下界面,表示推流成功了。

二、拉流

  拉流指的是用户端从服务器拉取语音视频流到客户端播放。在本博文中我们会通过vlc拉流Ubuntu的crtmpserver中的语音视频流,然后在vlc播放。

执行完上述推流的步骤后,我们在windows中打开vlc,点击“打开网络串流”,如下图所示:

输入网络URL,如下图所示:

可以看到在vlc中出现视频画面了,表示拉流成功了

三、遇到的问题:

1.视频模糊:执行上述推流、拉流的流程,我们可能会发现在vlc播放出来的视频很模糊。这个时候我们可以在使用ffmpeg推流时加入-c -copy参数。-c -copy表示拷贝所有流。如下所示:

ffmpeg -i video5.mp4  -f flv -c copy rtmp://192.168.1.108/live/test1

如下图所示,我们会发现画面清晰很多:

2.执行推流命令显示:Cannot open connection tcp://XXX,如下图所示:

产生这个问题的原因很可能是因为网络问题,或者输入的ip地址不对。我们得检查一下主机是否能ping通虚拟机,是否能连接上网络,输入的ip地址是否是服务器所在的平台的ip地址,流媒体服务器是否被成功启动了。

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

猜你喜欢

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