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

一、学习资料

官网资料

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

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

搭建HTTP Live Streaming直播系统的更多相关文章

  1. windows平台简易直播系统搭建

    最近做直播系统的朋友很多,正好前端时间也在做这一块,写片文章分享下开发心得,以为后用. 直播系统我将它分为前堆推流,后台服务,客户端播放三大部分.前端推流基于ffmpeg,后台服务 使用crtmp服务 ...

  2. VLC-DSS搭建直播系统中链路断开影响测试

    VLC-DSS搭建直播系统中链路断开影响测试 系统环境搭建如图所示.计算机77上运行VLC从摄像机51上取流,推送给一级DSS服务器30:二级DSS服务器78从一级DSS服务器30上取流转发.(其配置 ...

  3. 基于SRS+OBS搭建直播系统

    这段时间与视频,直播相关的技术不可谓不热,今天我们就近距离接触下,尽早搭上这班车! 我们先看一张效果图 左边是OBS 推流端,右边是VLC播放器,稍微有延迟! 本文是基于VMware(12.5.7)+ ...

  4. 使用ffmpeg搭建HLS直播系统

    [时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, ffmpeg,live,直播,点播, nginx, ssegment] 0 引言 本文作为HLS综述的后续文章. ...

  5. 在Ubuntu下使用nginx-rtmp-module搭建直播系统

    直播系统最简单地包括推流和拉流,在这里先使用nginx-rtmp-module作为流媒体服务器. 流媒体服务器搭建 1. nginx-rtmp-module下载和安装 源码地址:https://git ...

  6. H264音视频直播系统 服务器端+客户端源码 可用于直播系统搭建

    RTP协议实现直播系统搭建,采用H.264和AAC编码,码率极低,同时有较高的视频清晰度和音频音质,可用于视频聊天.视频会议.摄像头监控等多种应用场景. 直播系统搭建发布端,选择视频和音频设备,指定服 ...

  7. HTTP Live Streaming直播(iOS直播)技术分析与实现

    本文转载自:http://www.cnblogs.com/haibindev/archive/2013/01/30/2880764.html 不经意间发现,大半年没写博客了,自觉汗颜.实则2012后半 ...

  8. HTTP Live Streaming直播(iOS直播)技术分析与实现

    前些日子,也是项目需要,花了一些时间研究了HTTP Live Streaming(HLS)技术,并实现了一个HLS编码器HLSLiveEncoder,当然,C++写的.其功能是采集摄像头与麦克风,实时 ...

  9. HTTP Live Streaming 直播(iOS直播) 初识

    HTTP Live Streaming(HLS)技术,并实现了一个HLS编码器HLSLiveEncoder,当然,C++写的.其功能是采集摄像头与麦克风,实时进行H.264视频编码和AAC音频编码,并 ...

随机推荐

  1. NPOI 导入,导出EXCEL

    代码: public static class NPOIExcelHelper { /// <summary> /// DataTable导出到Excel文件 /// </summa ...

  2. [PCL]5 ICP算法进行点云匹配

    上一篇:http://www.cnblogs.com/yhlx125/p/4924283.html截图了一些ICP算法进行点云匹配的类图. 但是将对应点剔除这块和ICP算法的关系还是没有理解. RAN ...

  3. IIS 相关

    Restart IIS: run "iisreset" command check port usage: netstat -ano How to set up SSL in II ...

  4. IIS URL Rewrite redirect from one Domain to another

    IIS URL Rewrite enables Web administrators to create powerful rules to implement URLs that are easie ...

  5. canvas学习之制作动画

    html部分 ...... <body> <canvas id="myCanvas" width="400" height="400 ...

  6. ajax请求后加额外的数据

    $.ajax({ cache: true, type: "POST", url:"${ctx!}/bus/trail/getTrailInfoById", da ...

  7. 【转】Tomcat组件生命周期管理

    Tomcat组件生命周期管理 Tomcat中Server,Service,Connector,Engine,Host,Context,它们都实现了org.apache.catalina.Lifecyc ...

  8. linux 命令之 insmod

    man insmod: INSMOD(8) insmod INSMOD(8) NAME insmod - Simple program to insert a module into the Linu ...

  9. G面经prepare: Maximum Subsequence in Another String's Order

    求string str1中含有string str2 order的 subsequence 的最小长度 DP做法:dp[i][j]定义为pattern对应到i位置,string对应到j位置时,shor ...

  10. SQL 数据库 存储过程 视图

    一.存储过程 1.概述 存储过程是一组编译在单个执行计划中的T-SQL语句 存储过程:就像函数一样的会保存在数据库中(可编程性) 存储过程的优点: 1.允许模块化程序设计 2.允许更快执行如果某操作需 ...