第二部分
1、昨天已经把网络摄像机的rtsp视频流成功利用FFmpeg和Nginx转换成rtmp流推送到了nginx视频服务器上面,并且通过vlc可以观看到直播视频。
今天继续昨天的工作,将rtsp的视频流推送到Nginx上面,客户端根据hls协议使用http在网页进行观看(推送的仍然是rtmp视频流),关于hls,先给一小段简单介绍:
HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。
2、将本地视频流转换成rtmp视频流时,使用到的命令是:
3、为了能够通过http从浏览器访问文件,还需要对nginx.conf配置文件进行修改,在http中添加下面内容:
保存之后,重新启动 nginx。
4、执行命令
5、待ffmpeg运行以后,可以在vlc、电脑浏览器、手机浏览器中输入
进行播放。
6、下面是一些视频播放截图,分别在vlc、电脑firefox浏览器、iphone safari浏览器和Android UC浏览器的测试图
PC_firefox
PC_VLC
IPHONE_Safari
Android_UC
注:现在视频服务器只是初期简单的搭建起来,其中用到的一些命令参数是来源于广大网友的分享,这些参数可能不会具有通用性,对于特定的项目并不一定会达到预想的那么理想,比如延时可能会比较大,我测试时,延时还是比较大的,以后会根据自己的项目重新设定参数进行优化。
关于移动流媒体协议的介绍(包括hls)可以参考文章:移动流媒体协议综述