直播系列5-使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(二)

第二部分

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视频流时,使用到的命令是:

 ffmpeg -f dshow -i video="Integrated Webcam" -vcodec libx264 -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 -f flv rtmp://192.168.31.102:1935/hls/test2
3、为了能够通过http从浏览器访问文件,还需要对nginx.conf配置文件进行修改,在http中添加下面内容:

[plain]  view plain  copy
  1. <span style="color:#000000;">location /hls {    
  2.                 types {    
  3.                     application/vnd.apple.mpegurl m3u8;    
  4.                     video/mp2t ts;    
  5.                 }    
  6.                 root /tmp;    
  7.                 add_header Cache-Control no-cache;    
  8.         }  </span>  
保存之后,重新启动 nginx。

4、执行命令

[plain]  view plain  copy
  1. ffmpeg -f dshow -i video="Integrated Webcam" -vcodec libx264 -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 -f flv rtmp://192.168.31.102:1935/hls/test2
5、待ffmpeg运行以后,可以在vlc、电脑浏览器、手机浏览器中输入

[plain]  view plain  copy
  1. http://192.168.31.102:80/hls/test2.m3u8  
进行播放。

6、下面是一些视频播放截图,分别在vlc、电脑firefox浏览器、iphone safari浏览器和Android UC浏览器的测试

PC_firefox

PC_VLC

IPHONE_Safari

Android_UC

注:现在视频服务器只是初期简单的搭建起来,其中用到的一些命令参数是来源于广大网友的分享,这些参数可能不会具有通用性,对于特定的项目并不一定会达到预想的那么理想,比如延时可能会比较大,我测试时,延时还是比较大的,以后会根据自己的项目重新设定参数进行优化。

关于移动流媒体协议的介绍(包括hls)可以参考文章:移动流媒体协议综述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值