博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
http live streming
阅读量:5218 次
发布时间:2019-06-14

本文共 5748 字,大约阅读时间需要 19 分钟。

  我的博客已转移至

    最近,需要将苹果的HTTP Live Streaming系统搭建起来。完全没有头绪,故第一步就是学习。

一、学习资料

官网资料

1. 

具体的搭建方案

        使用segmenter将现成的视频文件分割,并生成列表文件。

1. 

2. 

3. 

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

             1.    

                    ““”

苹果没有官方的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)  下载与安装

                          

                         在官方页面下载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)  官方文档

                        

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

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

                       

                        上述链接对应的文章介绍了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=" "> 

    <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系统:

             

                   

         mediastreamsegmenter的使用方法:

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

     2.工具的选择

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

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

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

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

                1)quicktime broadcaster   

                    broadcaster的下载地址:

                                     安装这个软件后,用它向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下。

                                  具体使用方法:

                            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,难免会感到一丝生疏。学习资料:

                          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=" "> 

    <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,观看直播。   

            画质很差,可能是一些参数设得不够好。

 

转载于:https://www.cnblogs.com/lidongq/p/5499834.html

你可能感兴趣的文章
Idea 提交代码到码云(提交到github也大同小异)
查看>>
c#连接excel2007未安装ISAM解决
查看>>
Mono 异步加载数据更新主线程
查看>>
初识lua
查看>>
我是插件狂人,jDuang,jValidator,jModal,jGallery
查看>>
张季跃 201771010139《面向对象程序设计(java)》第四周学习总结
查看>>
如何解除循环引用
查看>>
android中fragment的使用及与activity之间的通信
查看>>
字典【Tire 模板】
查看>>
jquery的contains方法
查看>>
python3--算法基础:二分查找/折半查找
查看>>
Perl IO:随机读写文件
查看>>
Perl IO:IO重定向
查看>>
转:基于用户投票的排名算法系列
查看>>
WSDL 详解
查看>>
[转]ASP数组全集,多维数组和一维数组
查看>>
C# winform DataGridView 常见属性
查看>>
逻辑运算和while循环.
查看>>
Nhiberate (一)
查看>>
c#后台计算2个日期之间的天数差
查看>>