我的博客已转移至 http://nmgfrank.com

最近,需要将苹果的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. 胜利油田即时通文件服务器,庆祝胜利油田实验小学成功搭建我司流媒体直播系统...

    一.学校概况 胜利油田实验小学,位于东营市西城,创建于1982年,2005年更名为东营市胜利实验小学.学校占地32亩,建筑面积10300平方米.现有教学班38个,教职工97名,学生1960名.学校以& ...

  2. 10分钟在局域网中搭建一个课程点播+直播系统

    利用阿里云和腾讯云等第三方平台提供的服务来搭建点播+直播系统已经是很成熟的方案了,那在局域网里面如何搭建相关系统服务呢? 小编也尝试过利用 nginx + rtmp 推流模块,不过不太稳定,也不能对直 ...

  3. 挑战一个人搭建一套完整直播系统5:基于阿里云搭建外网直播系统

    本节将来介绍如何基于阿里云搭建一个真正的外网直播系统,其实平台的搭建在前面已经做了介绍,这里的区别是在云平台上重新搭建系统,这里采用了阿里云服务器ECS来实现(可以免费使用薅羊毛),选择的系统为ubu ...

  4. 挑战一个人搭建一套完整直播系统1:Nginx安装

    本章开始将介绍如何搭建一套完整的直播系统,首先介绍Nginx的安装,操作系统使用的是Ubuntu Nginx安装 1.下载安装包到指定目录 wget http://nginx.org/download ...

  5. 挑战一个人搭建一套完整直播系统3: Nginx-rtmp-module

    Nginx-rtmp-module(NRM)的出现使得非专业流媒体开发工程师也可以简单.迅速搭建媒体流服务器,本节将介绍NRM的使用. NRM模块安装 复制NRM源代码: git clone http ...

  6. 如何进行直播搭建,带货直播系统源码怎么制作?

    现在网上购物已经成了人们生活中不可缺少的一部分,带货直播系统源码也受到广泛关注,今天我们来看下当我们从商城里面浏览搜索了商品,看到了自己喜欢的商品准备加入到购物车的这个功能实现. 带货直播系统源码功能 ...

  7. 拿来就能用!几步搭建一套简单直播系统 | 原力计划

    作者 | mind_programmonkey 责编 | 伍杏玲 出品 | CSDN博客 本次用Ngix+RTMP+FFmpeg搭建一个流媒体服务器,实现简单的直播效果. Nginx是一款轻量级的We ...

  8. 挑战一个人搭建一套完整直播系统4: 实现网络摄像头视频传输

    摄像头采购的是海康卫视的网络摄像头: 支持通过rtsp传输视频流,网络摄像头的配置如下: ffmpeg可以直接通过rtsp获取摄像头视频数据并推流到我们之前搭建好的Nginx服务,具体指令如下: ff ...

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

    系统环境搭建如图所示.计算机77上运行VLC从摄像机51上取流,推送给一级DSS服务器30:二级DSS服务器78从一级DSS服务器30上取流转发.(其配置参见<用VLC读取摄像头产生RTSP流, ...

  10. 如何动手搭建一套简单的直播系统

    实时视频直播是这两年非常火的技术形态,已经渗透到教育.在线互娱等各种业务场景中.但要搭建一套实时视频直播系统,并非易事,当然相关的直播技术理论在论坛的其它文章里已经写的非常详细,本文不再展开. 基于对 ...

最新文章

  1. 什么是java序列化_什么是Java序列化?为什么序列化?序列化有哪些方式?
  2. NLP的神经网络训练的新模式
  3. 深入理解 JavaScript Function
  4. Node.js 切近实战(八) 之Excel在线(文件权限)
  5. imf瞬时频率跳变问题
  6. Python Map, Filter and Reduce
  7. ~~欧几里得算法(附模板题)
  8. c语言国家二级培训机构,国家计算机二级C语言培训教案.doc
  9. 转 shell awk 使用详解
  10. 详细图解,一眼就能看懂!卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别
  11. windows server测评 等保2.0
  12. html选项卡出现乱码,html乱码
  13. swiper 上滑触发_在绝地求生加入滑铲等战术动作会怎么样?你们想过吗?
  14. 解决打开Excel会自动新建一个空表格
  15. 发布《IBM虚拟机J9指南》
  16. JS学习日记--正则基础语法
  17. 揭秘家用路由器0day漏洞挖掘技术读书笔记 D-Link DIR-645 authentication.cgi溢出漏洞分析
  18. 计算机一级outlook百度云,Outlook2010官方版
  19. 程序猿的口味-从C++STL聊到MSYS2-Qt
  20. JHM3000体温传感器驱动

热门文章

  1. 硬盘老是显示正在计算机,电脑开机总是提示正在扫描和修复驱动器解决措施
  2. 2021年阳江市高考成绩查询,阳江市召开2020年高考总结暨2021年新高考备考动员会...
  3. JavaScript学习记录四
  4. iOS 15 真机调试包 DeviceSupport
  5. VSCode完美卸载
  6. 信息加密技术——对称密码体制
  7. JS正则表达式匹配域名
  8. Cell子刊:北大姜长涛组发现HIF-2α通过肠道菌群调控脂肪产热
  9. 使用flutter控制蓝牙通讯_使用Flutter控制蓝牙通讯
  10. win10+centos8双系统