Rootop 服务器运维与web架构

Adobe Http Dynamic Streaming的简单配置与实现 (FMS, HLS, HDS)

Adobe的Http Dynamic Streaming简称HDS是针对苹果的HLS方案提出基于HTTP的流媒体传输方案,基于其方案说明,它既能支持HTTP也能支持RTMP,既能支持点播(VOD),也支持直播。 因此配了一下此方案,过程如下:

服务器环境:
WindowsServer2008R2,这里没用linux,因为在测试时候linux为云主机,某些系统部分可能因为运营商修改的原因无法使用。

软件环境:
Adobe Media Server5_x64 下载地址:http://download.macromedia.com/pub/adobemediaserver/5_0_7/AdobeMediaServer5_x64.exe
OSMF Simple Player For Http Dynamic Streaming 下载地址: http://www.osmf.org/downloads/OSFMPlayer_zeri2.zip   最好用迅雷云加速下载

说一下,在adobe中流媒体版本5之前,比如4.5,名字叫FMS,在版本5之后叫AMS

安装配置过程:

1)安装AMS5,根据提示,基本都是下一步。安装自带的apache,端口部分默认。

创建一个管理用户并记住密码 这个地方需要注意记住设置的账户和密码

直至完成

2) 下载安装OSMF Simple Player,将下载到的Player解压并放到:C:\Program Files\Adobe\Adobe Media Server 5\webroot\OSFMPlayer 目录中

3) 配置:

3.1) 默认情况下,FMS4.5监听80端口接收traffic然后传递给Apache的8134端口(FMS自带的Apache被配成了监听8134端口),这个传递过程在高网络负载下会带来性能的问题。因此,做以下配置来解决这个问题。

修改 安装目录\conf\fms.ini, 将其中的ADAPTOR.HOSTPORT = :1935,80一行,改为ADAPTOR.HOSTPORT = :1935 不让FMS监听80端口;

同时,将其中 HTTPPROXY.HOST = :8134 一行,改为: HTTPPROXY.HOST =

这样便去掉了以上的代理转发过程。(在FMS4.5中需要修改,AMS5中已经为这样了)

3.2) 安装目录\Apache2.2\conf\httpd.conf文件中的 Listen 8134 一行改为80 (在FMS4.5中需要修改,AMS5中已经为监听80端口)

3.3) HTTP Origin Module 不用配置,FMS4.5和AMS5版本自带安装的Apache都已经配置好了这些支持Http Dynamic Streaming的模块,主要用于点播和直播时下发流媒体数据到观看端;

3.4) 找一个装有摄像头的电脑用于直播视频编码端,安装Flash Media Live Encoder 3.2 :

修改 Encoder 安装目录\Conf下面的config.xml文件,修改红色部分, 把”false” 改为 “true”

<streamsynchronization>
<!– “true” to enable this feature, “false” to disable. –>
<enable>true</enable>
<!– A Past UTC reference time. –>
<!– Past reference time should not be earlier than 30 days from the –>
<!– time when encoding is started. –>
<!– If invalid reference time is provided, current month is taken as –>
<!– reference time. –>
<referencetime>
<!– A past/current month. –>
<!– 1 for January, 2 for February and so on. –>
<!– 0 means use current month. –>
<month>0</month>
<!– A past/current year. –>
<!– for Example, 2008,2009 etc. –>
<!– 0 means use current year. –>
<year>0</year>
</referencetime>
</streamsynchronization>

3.5) 配置AMS在直播时使用绝对时间:
打开C:\Program Files\Adobe\Adobe Media Server 5\applications\livepkgr\Application.xml
修改 <AssumeAbsoluteTime>true</AssumeAbsoluteTime> 部分改为true

3.6) 修改 C:\Program Files\Adobe\Adobe Media Server 5\conf\Server.xml
<MaxFlushTime>1</MaxFlushTime> 改为1

4) 重启AMS相关服务,并配置为系统账户启动服务。

4.1)验证点播过程就不做了

4.2) 验证直播
启动Flash Media Live Encoder 3.2开始配置参数:

首先是video部分:
preset 部分选择 preset Custom, format 选择 H264, frame rate 选择29.97 ,input size 选择320×240 ,bit rate 部分选择200kbps
output size 为320×240

audio音频部分:
format 选mp3,其它音频部分都默认即可。

最右边有个 stream to flash media server
FMS URL填写:rtmp://42.62.101.177/livepkgr
Stream 写:livestream?adbe-live-event=liveevent

点击connect
点击下面绿色的START开始发布

客户端:

用浏览器打开上面安装的OSMFPlayer地址: http://42.62.101.177/OSFMPlayer/OSMFPlayer.html
在播放器中打开视频流地址:http://42.62.101.177/hds-live/livepkgr/_definst_/liveevent/livestream.f4m

就开始直播了(走http协议)

直播时生成的视频数据文件保存在 安装目录\applications\livepkgr\streams\_definst_\ 目录下
控制文件保存在 安装目录\applications\livepkgr\events\_definst_\liveevent\ 目录下

5)几种文件的作用
*.f4m — Flash Media Manifest file. Contains information about codec, resolution, and the availability of multi-bitrate files.类似于苹果HLS方案中的m3u8,是mainfest索引文件,里面包括编码,分辨率码率等

*.f4x — Index file. Contains the location of specific fragments within a stream.

*.f4f — A segment. The tool outputs one or more F4F files. Each file contains a segment of the source file. Each segment contains one or more fragments of content. A player can use a URL to address each fragment.

注意:以上配置的是http dynamic streaming — 注意直播时,视频发布者用RTMP协议将视频发布到AMS上,观看者播放器OSMF通过Http协议分段将视频下载下来并播放观看;

基于以上AMS服务器,还有一种配置和实现是采用RTMP进行直播, 也就是说,视频发布者用RTMP协议将视频发布到AMS上, 观看者通过另外一个支持RTMP协议的播放器将视频通过RTMP下载播放。配置如下:

在以上配置的基础上:

1) 将AMS服务器中C:\Program Files\Adobe\Adobe Media Server 5\samples目录下的videoPlayer目录拷贝到
C:\Program Files\Adobe\Adobe Media Server 5\webroot下,这是一个支持RTMP协议播放的Flash播放器,类似于上面的OSMF播放器。

2) 在Flash Media Live Encoder3.2那里的FMS URL那里填上: rtmp://42.62.101.177/live

在下面的stream 那里填上 livestream

3) 观看端用浏览器打开:http://42.62.101.177/videoPlayer/videoPlayer.html, 然后在页面下部的 STREAM URL: 那里输入:

rtmp://42.62.101.177/live/livestream ,并勾选中LIVE,然后点击Play Stream即可观看。

这里观看者用的是RTMP下载方式而不是HTTP下载方式。这就是区别。

感觉通过rtmp观看的延迟要小于hds。

测试完成。

PS:

关于adobe flash media live encoder 视频编码中推送视频流到FMS的经验收获

hds播放需要支持hds协议的播放器,hls播放需要苹果设备,直接在Safari打开即可。

在encoder编码推送时的配置:
FMS URL: rtmp://42.62.101.177/livepkgr/virtual
                通信协议/服务器IP地址/livepkgr/视频目录

视频目录如果不存在会自动创建

Stream:222?adbe-live-event=liveevent
222为视频文件名称

通过hds访问的时候地址为:
http://42.62.101.177/hds-live/livepkgr/virtual/liveevent/222.f4m

通过hls访问的时候地址为:
http://42.62.101.177/hls-live/livepkgr/virtual/liveevent/222.m3u8

如果推送视频时候不设置目录,默认为:
rtmp://42.62.101.177/livepkgr/_definst_
对应物理目录为:
C:\Program Files\Adobe\Adobe Media Server 5\applications\livepkgr\streams\_definst_

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3247.html

作者:Venus

服务器运维与性能优化

评论已关闭。