搭建适合IOS的HTTP Live Streaming直播系统

转载自:http://blog.csdn.net/nmgfrank/article/details/6955105

一、学习资料
官网资料

  1. http://developer.apple.com/resources/http-streaming/

具体的搭建方案

    使用segmenter将现成的视频文件分割,并生成列表文件。
  1. http://blog.csdn.net/zhoujunming/article/details/6694730

  2. http://blog.sina.com.cn/s/blog_6c13e14e0100r9b8.html

  3. http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/

二、使用Helix Universal Server和Helix Producer搭建直播系统

         1. http://scrolls.bokecc.com/?p=207   

                ““”

苹果没有官方的HLS直播服务器软件和客户端软件。其它第三方公司的产品有:
· TVersity
· Helix Universal Server
· Wowza Media Server
· VLC Media Player version 1.2
我采用Helix Universal Server和Helix Producer(客户端软件)进行了直播测试。
若要做针对iOS平台的直播,目前来看,只能采用此种方式。
”“”

                 因此我也选择使用Helix Universal Server和Helix Producer来搭建直播系统。

           2.  Helix Universal Server

              (1)  下载与安装

                     http://www.realnetworks.com/helix/download-helix-products.aspx 

                     在官方页面下载Helix Universal Server与Helix Producer。

                     Windows系统下,软件的安装过程会有详细而明白的提示,十分方便,

                     Linux操作系统中,
                          将下载的tar.gz文件解压得到bin文件。执行bin文件。

                          1. 输入证书的路径,如果证书有效,就可以不断地按【enter】键将其读完。

                          2. 选择accept刚才阅读过的内容。

                          3. 然后程序会让你填写安装路径,默认为bin文件所在的文件夹。第一次安装时,

                           由于enter点得太快,跳过了这一步。于是不得不再安装一次!!

                          4. 输入用户名和密码。

                          剩下就没有太重要的内容了,凭着感觉安装即可。

                          安装结束后,进入安装目录,

                                输入命令:sudo ./Bin/rmserver rmserver.cfg就可以将服务器运行起来。

                                打开配置文件rmserver.cfg,找到管理端口,在我这里是<Var AdminPort="25567"/> 

                                输入链接:http://localhost:25567/admin/index.html 就可以进入系统的管理页面。
              (2)  官方文档

                    http://www.realnetworks.com/helix/download-helix-products.aspx

                    从上述链接对应的文章中,我们可以了解到如何搭建基于Helix Universal Server的系统,

                    其中,文章的第七章详细介绍了如何将

                    http://docs.real.com/docs/producer14/HelixProducer14.0.0_GettingStarted.pdf
                    上述链接对应的文章介绍了Helix Producer的使用方法。

              3. 利用Helix Universal Server和Helix Producer在一台机器上搭建直播系统(winxp操作系统)。

                   (1) 安装 Helix Universal Server和Helix Producer,安装时均使用默认设置,另外 还要设置用户名和密码。

                   (2) 运行Server

打开服务器自带的管理页面(Server Administrator)。
选择Content Management -> Media Segmentation, 将Enable Segmentation的状态改为yes
(3) 运行Helix Producer。

选中input标签,设置输入。选中USB/Capture Device,再选择相应的信号源。
选中output标签,设置输出。点击面板上的加号(Add output),然后进行对两类参数进行设置。
encoding settings:设定相应的格式以及视频流的平均码率,帧率等参数
output servers:设定编码后的数据发到哪个服务器上。主要有如下几个参数:

                                                               Server Type(可能是producer向服务器传送数据的方式):Helix Push.

                                                               Stream Name(数据流的名称,在客户端,可以通过这个名称向服务器请求相应的数据流):test.mp4。

                                                               Server address(服务器地址,由于server在本地,我将这个值设定为127.0.0.1)。

                                                               HTTP Server Port(服务器设定的HTTP端口,默认为80):80.

                                                               Username,Password(Helix服务器在安装之初设置的用户名和密码)。

点击“Start Job”, 如果start成功,说明producer已经连接到服务器并且开始传输数据。

            4. 观察直播系统中的文件。

                 (1) 通过链接http://127.0.0.1/m3ugen/broadcast/test.mp4可以获得.m3u8文件(类似于index文件)。

                 (2) 进入服务器管理页面,选择Content Management -> Content Browsing, 点击Browse Content链接,就可以看到服务器上

                         的挂载点,以及挂载点下的资源。选择iPhone挂载点,进入broadcast,,进入test.mp4就可以看到ts格式的片段文件。


            5.  播放。

                 (1) 在播放器(例如vlc)中输入地址  rtsp://127.0.0.1:554/broadcast/test.mp4, 可以看到直播的视频。

                 (2) 播放HTTP Streaming,使用苹果客户端(iPhone)

                         用safari运行脚本:

<html>

<head> 

<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
</head> <body style="background-color:#FFFFFF; ">

<body>

                <center> <video src="SERVER_ADD:SERVER_PORT/m3ugen/broadcast/test.mp4" controls autoplay ></video> </center>

 </body> 

</html>

三、使用免费的产品搭建直播系统

 上述方案的不足就是Helix的产品只有试用版。想用正版就得花钱。

 1. 学习资料

   使用VLC+mediastreamsegmenter+apache搭建HTTP Live Streaming系统:

          http://www.unmht.org/memo/en_ipod_stream.html

               http://jokru.org/apple-http-live-streaming-to-the-ipadiphone-w
     mediastreamsegmenter的使用方法:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/mediastreamsegmenter.1.html

     对于搭建HTTP Live Streaming系统,官方的说明资料:http://developer.apple.com/library/iOS/#technotes/tn2224/_index.html


 2.工具的选择

     (1)视频信号的采集与编码。

            mediastreamsegmenter能够接收的数据:视奥频-》H264;音频-》AAC, 封装于ts流中,

       通过UDP传输(似乎是这些要求,具体细节我其实也不清楚)。

       下面开始寻找能够满足这个要求的工具。

            1)quicktime broadcaster   

                broadcaster的下载地址:http://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/Introduction/Introduction.html

                                 安装这个软件后,用它向mediastreamsegmenter喂数据,segmenter报错。因此,我认为(可能不对),

                       这个工具不能满足要求。

                   2) VLC

                       经过试验,使用VLC可以成功地向mediastreamsegmenter喂数据。因此我选择VLC作为视频、音频流的处理工具。

            (2)视频流的分片工具

                使用苹果的mediastreasegmenter

             ( 3 ) 服务器

                 apache

   3. 具体架设方案。

            (1) 视频、音频信号的采集与编码,使用rtsp协议将视频播放出去。

                          一台PC(ip地址为192.168.1.101),装备有摄像头,麦克风,安装有VLC.

                         1)打开vlc,,选择 媒体->打开捕获设备->捕获设备。点击播放。如果vlc能够成功将摄像头和麦克风捕获的信号显示出来,

                            就可以进行下一步。

                         2)在VLC中选择 媒体->串流->捕获设备,点击串流。接下来会弹出一个流输出设置窗口。

                              在“目标”中,选择RTSP进行添加,接着数据端口号(默认5544)和路径(我设置为 /test)。

                              在转码选项中,在“激活转码前打钩”,档案中,保持默认选项(Video-H264+AAC(MP4))。

                              点击“串流”,这时,该PC机的5544端口就开始提供rtsp直播服务了。

                          3) 验证rtsp服务是否可用。

                              打开一个新的VLC,选择  媒体->打开网络串流。输入rtsp://127.0.0.1:5544/test, 如果可以成功地看到摄像头捕获

                              的影像,就说明rtsp服务是可用的。

             (2)视频流的转码

                        一台mac(我测试用的的视频服务器都部署在这里,IP:192.168.1.109),安装有vlc.

                        由于mediastreamsegmenter不能直接读入rtsp服务器传来的数据流,所以我们需要对数据进行一定的变换。

                        1)找到应用程序vlc的地址(一般默认在/Applications/VLC.app/Contents/MacOS下),进入文件夹。

                        2)输入命令:

                            ./VLC --intf=dummy rtsp://192.168.1.101:5544/test  '--sout=#transcode{fps=25,vcodec=h264,venc=x264{aud,profile=baseline,level=30, keyint=30,bframes=0,ref=1,nocabac},acodec=mp3,ab=56,audio-sync,deinterlace}:duplicate{dst=udp{mux=ts,dst=127.0.0.1:8000,access=udp}}'

                            下面大致介绍一下这条命令:

--intf=dummy 表示不显示VLC的窗口
rtsp://192.168.1.101:5544/test 是vlc输入流的来源,也就是我们之前搭建的rtsp服务器。
--sout, 通过这个选项 对输出进行具体的设置。
ranscode{fps=25,vcodec=h264,venc=x264{aud,profile=baseline,level=30, keyint=30,bframes=0,ref=1,nocabac},acodec=mp3,ab=56,audio-sync,deinterlace} 这一行命令对于视频和音频的转码格式进行设置(视频和264,音频aac), 但一些参数还不是很明白。
duplicate{dst=udp{mux=ts,dst=127.0.0.1:8000,access=udp}},将视频、音频流封装为ts格式,使用udp传输,传向本地服务器的8000端口。
(3) 获取ts流并进行分片

                       1)medianstreamsegmenter

                              这个小程序一般默认安装在mac的/usr/bin下。

                              具体使用方法:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/mediastreamsegmenter.1.html

                        2)使用命令

                              /usr/bin/mediastreamsegmenter  -s 3 -t 5 -D -f /usr/frank/stream 127.0.0.1:8000

                              判断是否成功分片:如果终端显示 : Finalized 存储路径 file Sequencex.ts,则说明分片成功了。

                              说明: 

                                           -s 3  设定index文件中记录几个分片。

                                           -t  5 设定多长时间(秒)产生一个分片,默认为10秒。

                                           -D 删除过期的分片文件

                                           -f /usr/frank/stream设置存储分片文件和index文件的文件夹

                                           127.0.0.1:8000 设置获取ts流的地址

            (4)使用apache提供服务.

                      第一次在mac下使用apache,难免会感到一丝生疏。学习资料:http://hi.baidu.com/hsbd2005/blog/item/7393a84f0017b5c7d1c86ad4.html

                      mac自带apache.

                      1) 启动

                          使用命令:sudo apachectl start, 然后在浏览器中数据localhost进行查看,如果看到It works,说明apache可以正常工作。

                      2) 配置文件

                          配置文件默认路径为 /etc/apache2/httpd.conf(对于文本的编辑,可以用 (vi 文件路径),也可以用(sudo open -a TextEdit.app 文件路径)).

                          可以看到 DocumentRoot  "/Library/WebServer/Documents",也就是说,这是存放资源的默认路径。

                       3) 进入 /Library/WebServer/Documents, 建立文件夹httpstream,

                           将mediastreamsegmenter的输出指向这里:  

                                       /usr/bin/mediastreamsegmenter  -s 3 -D -f /Library/WebServer/Documents/httpstream 127.0.0.1:8000

                          在浏览器中输入localhost/httpstream/prog_index.m3u8,如果能够看到分片文件的列表,就说明成功了一半。    

                       4) 写脚本文件,在Library/WebServer/Documents/下创建一个index.html文件,具体内容如下:

<html>

<head> 

<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
</head> <body style="background-color:#FFFFFF; ">

<body>

                <center> <video src="192.168.1.109/httpstream/prog_index.m3u8" controls autoplay ></video> </center>

 </body> 

</html>

(5) 直播效果

       在safari中输入链接http://192.168.1.109/index.html,观看直播。   

        画质很差,可能是一些参数设得不够好。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容