关闭

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器(二)

1198人阅读 评论(0) 收藏 举报
分类:

第二部分

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、昨天将rtsp视频流转换成rtmp视频流时,使用到的命令是:

ffmpeg -i rtsp://admin:12345@172.27.35.56 -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -r 25 -b:v 500k -s 640*480 -f flv rtmp://172.27.35.2:1935/myapp/test1  
可以看出,在对视频流的格式转换时,没有任何参数,对于音频使用了
-acodec aac
当将视频流推送到hls上时,使用这种缺省的参数时,出现了意外情况(我使用的是下面命令):

<span style="color:#000000;">ffmpeg -i rtsp://admin:12345@172.27.35.56  -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 -f flv rtmp://172.27.35.2:1935/hls/test2</span>
使用这个命令进行转换推送时,不论是在vlc还是网页上面都不会出现视频画面。使用wireshark抓包,可以看出是有数据包发出的,但是就是显示不出来,屏幕一片黑。

当使用ffplay播放时,出现了提示:

[mpegts @ 0xb0e07500] Could not find codec parameters for stream 0 (Video: h264 ([27][0][0][0] / 0x001B), none): unspecified size
没有为视频指定编码格式,所以为它添加参数,则执行的命令为:

<span style="color:#000000;">ffmpeg -i rtsp://admin:12345@172.27.35.56 -vcodec copy -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 -f flv rtmp://172.27.35.2:1935/hls/test2
</span>
<span style="color:#000000;">-vcodec copy</span>
表示所要使用的视频的编码格式,这里指定为copy表示原样拷贝。
3、为了能够成功将视频流推送到hls上,还需要对nginx.conf配置文件进行修改,在http中添加下面内容:

<span style="color:#000000;">location /hls {  
                types {  
                    application/vnd.apple.mpegurl m3u8;  
                    video/mp2t ts;  
                }  
                root /tmp;  
                add_header Cache-Control no-cache;  
        }  </span>
保存之后,重新启动nginx。

4、执行命令

ffmpeg -i rtsp://admin:12345@172.27.35.56 -vcodec copy -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 -f flv rtmp://172.27.35.2:1935/hls/test2
5、待ffmpeg运行以后,可以在vlc、电脑浏览器、手机浏览器中输入

http://172.27.35.2:80/hls/test2.m3u8
进行播放。

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

PC_firefox

PC_VLC

IPHONE_Safari

Android_UC

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

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Netty系列之Netty百万级推送服务设计要点

Netty系列之Netty百万级推送服务设计要点 原文  http://itindex.net/detail/52488-netty-系列-netty 原文地址:http://...
  • ufocode
  • ufocode
  • 2015-01-17 22:37
  • 709

fastdfs linux集群安装配置(详细流程)

  • 2017-08-25 16:38
  • 350KB
  • 下载

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(一)

第一部分 主要步骤及命令记录: 1、下载nginx,地址http://nginx.org/en/download.html,选择最新版本下载、解压。当前最新版为:nginx-1.7.9。 2、为...
  • xdwyyan
  • xdwyyan
  • 2015-01-27 19:33
  • 15579

centos7服务安装_流媒体服务器_安装nginx

转载于http://hdu104.com/294 3.安装配置Nginx            3.1)先安装各种依赖(nginx需要pcre支持,yamdi用来为flv创建关键帧才能随...
  • mengyoufengyu
  • mengyoufengyu
  • 2015-06-22 16:32
  • 3402

windows下流媒体nginx-rmtp-module服务器搭建

http://www.bubuko.com/infodetail-580061.html 标签:class   com   使用   src   log&...
  • mengzhengjie
  • mengzhengjie
  • 2016-03-24 10:11
  • 6222

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

http://blog.csdn.net/xdwyyan/article/details/43198985 主要步骤及命令记录: 1、下载nginx,地址http://nginx.org...
  • lk5423968
  • lk5423968
  • 2015-11-30 21:40
  • 733

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(十一)

第十一部分--延时优化 上次测试流媒体服务器的时候,Android系统chrome浏览器测试hls协议时延时35s。 虽然由于HLS的特性决定了,使用HLS协议来做视频直播延时很大,但是35s的延...
  • xdwyyan
  • xdwyyan
  • 2015-03-13 15:40
  • 2210

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

第一部分 主要步骤及命令记录: 1、下载nginx,地址http://nginx.org/en/download.html,选择最新版本下载、解压。当前最新版为:nginx-1.7.9。 2、为...
  • jingqiang521
  • jingqiang521
  • 2017-02-09 16:49
  • 426

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(三)

第三部分 这几天实验室搬家,闹腾的,刚刚进入状态。 接着调试,客户端浏览器根据hls协议使用http在网页进行观看直播视频,期间遇到一些小问题,记录下。 1、昨天测试的时候,遇到一个情况,就是在...
  • xdwyyan
  • xdwyyan
  • 2015-02-04 10:01
  • 2473

使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记(六)

第六部分 前几天一直被移植到ARM开发板上的nginx启动的问题困扰,在ARM开发板上启动时不是出现 nginx: [emerg] getgrnam("nogroup") failed (2: N...
  • xdwyyan
  • xdwyyan
  • 2015-03-04 11:22
  • 1630
    个人资料
    • 访问:940616次
    • 积分:13512
    • 等级:
    • 排名:第1117名
    • 原创:411篇
    • 转载:23篇
    • 译文:5篇
    • 评论:189条
    我的联系方式
    企鹅: 991433544
    QQ:212553177
    博客专栏
    最新评论