[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-server-cvs
Subject: [Server-cvs] admin/web server.opt,1.15,1.16
From: yijil () helixcommunity ! org
Date: 2012-06-26 15:58:49
[Download RAW message or body]
Update of /cvsroot/server/admin/web
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv32317
Modified Files:
server.opt
Log Message:
Committed to : HEAD
Reviewed by : Chytanya, Xiaocheng Li
Synopsis:
=========
CDN integration for RTMP
Branch: HEAD
Suggested Reviewers: Chytanya and anyone
Description:
============
I. Intro
==========================================
CDN integration for RTMP is to upload streams come from slta/Helix Producer/AFML to \
CDN, then client can play stream through CDN using RTMP protocol.
II. What feature have been implemented in the version
1. admin page for CDN RTMP, it can add/delete/modify CDN account and use new \
configure without restart server
2. push single-rate live stream to CDN account in configure file
3. push multi-rate live stream to CDN account in configure file
4. support VP6/mp3/NellyMoser when using AFML as source
5. the configuration information
<List Name="EdgeNetworkDistributionRTMP">
<Var EnableDistribution="1"/>
<List Name="Accounts">
<List Name="Akamai">
<Var CDNName="Akamai"/>
<Var EnableAccount="1"/>
<Var PrimaryURL="rtmp://p.ep27977.i.akamaientrypoint.net/EntryPoint"/>
<Var BackupURL="rtmp://b.ep27977.i.akamaientrypoint.net/EntryPoint"/>
<Var UserName="99410"/>
<Var Password="testing"/>
<Var StreamNameExt="27977"/>
<Var RetryInterval="10" />
<Var MaxRetryInterval="30" />
<Var StreamParameter="%i" />
<List Name="Sources">
<List Name="100">
<Var EnableSource="1"/>
<Var SourcePath="/rtmplive/"/>
</List>
<List Name="200">
<Var EnableSource ="1"/>
<Var SourcePath="/broadcast/"/>
</List>
</List>
</List>
</List>
</List>
"RetryInterval" is the retry interval when failure occurs, itsunit is second. \
"MaxRetryInterval" is the max retry interval when failure occurs, its unit is minute. \
Every time when failure occurs, the interval time will be multiplied by 2. When the \
interval time is up to " MaxRetryInterval ", then the retry interval will always be " \
MaxRetryInterval ". These two parameters are optional, when not defined, the default \
value is "10" and "30" for each other. "StreamParameter " is the parameter used for \
publishing stream to CDN when stream is multi-rate. It can be set to "%i" or "%b". \
"%i" means the index of the bit rate. "%b" means the total bit rate including audio \
and video. It is optional, when not defined, the default value is "%i". \
"StreamNameExt" is the stream name extension used when publish stream to CDN. It can \
be "27977" or "@27977", it is necessary. For example, then the name of the stream \
received from producer is "live.mp4", when single-rate, the publish stream name is \
live.mp4@27977. When multi-rate and "StreamParameter" is "%i", the publish stream \
name will like live.mp4_1@27977 and live.mp4_2@27977. When multi-rate and \
"StreamParameter" is "%b", the publish stream name will like live.mp4_80k@27977 and \
live.mp4_120k@27977 depends on the stream bitrate.
IV. Solution Description
Add new plugin rtmppushpln for CDN integration for RTMP. It is non multi-load plugin \
and is loaded when start. In rtmppushpln, it watches the change of " LiveConnections \
", when a new live stream connected, function CRTMPPushPlugin::AddedProp will be \
called, and a new push event will be created.
CDN Account of RTMP and souce path information and the relationship between then is \
managed by three map given bellow. m_pRTMPStreamConfigMap hold all the CDN accounts. \
m_pSource2RTMPConfigMap holds the pointer to CDN accounts to which all the stream \
from given source path should push. m_pAccount2SourceMap holds the relationship \
between accounts name and souce path.
CRTMPPushConfigMap* m_pRTMPStreamConfigMap;
Dict* m_pSource2RTMPConfigMap;
Dict* m_pAccount2SourceMap;
All these three maps control the push of streams. If there is no information in these \
maps, then the stream isn`t need to push to CDN. If one CDN accounts or souce path is \
removed/updated/added, these three maps will be updated.
class CRTMPPushProtocol is used to initialize connection between CDN, handle commands \
from CDN and send stream data to CDN. It is a member of class CRTMPPushEvent. class \
CRTMPPushEvent controls pushing one stream to an account including primary URL and \
backup URL. It is a member of class CRTMPPushHandler. class CRTMPPushHandler handles \
one live stream from slta/helix producer/afml, re-packetize packets if needed and \
uses CRTMPPushEvent to send the stream to all the CDN accounts. CRTMPPushHandler \
holds a map of CRTMPPushEvent.
V. Files affected:
===============
build/BIF/helixinternal.bif
build/umakepf/helix-server-all-defines.pf
server/admin/web/server.opt
server/admin/web/src/srvprxy/pageData.pm
server/admin/web/src/srvprxy/toc~server.js.wasm
server/admin/web/build/server/toc.js
server/admin/web/build/mserver/toc.js
server-restricted/installer/server/retailservinst.cpp
server_rn/protocol/flash/rtmp/chunk.cpp
server_rn/protocol/flash/rtmp/handshake.cpp
server_rn/protocol/flash/rtmp/rtmpprot.cpp
server_rn/protocol/flash/rtmpserv/rtmpencoder.cpp
server_rn/protocol/flash/rtmpserv/rtmpserv.cpp
server_rn/protocol/flash/rtmpserv/pub/rtmpencoder.h
server_rn/protocol/flash/rtmpserv/pub/rtmpserv.h
server_rn/protocol/flash/include/hxrtmp.h
server_rn/protocol/flash/utils/rtmplog.cpp
VI. New Files added:
=================
server_rn/broadcast/transport/rtmp/send/guids.cpp
server_rn/broadcast/transport/rtmp/send/rtmppush.cpp
server_rn/broadcast/transport/rtmp/send/rtmppushconfig.cpp
server_rn/broadcast/transport/rtmp/send/rtmppushevent.cpp
server_rn/broadcast/transport/rtmp/send/rtmppushhandler.cpp
server_rn/broadcast/transport/rtmp/send/rtmppushmap.cpp
server_rn/broadcast/transport/rtmp/send/rtmppushpln.cpp
server_rn/broadcast/transport/rtmp/send/Umakefile
server_rn/broadcast/transport/rtmp/send/pub/rtmppush.h
server_rn/broadcast/transport/rtmp/send/pub/rtmppushconfig.h
server_rn/broadcast/transport/rtmp/send/pub/rtmppushevent.h
server_rn/broadcast/transport/rtmp/send/pub/rtmppushhandler.h
server_rn/broadcast/transport/rtmp/send/pub/rtmppushmap.h
server_rn/broadcast/transport/rtmp/send/pub/rtmppushpln.h
server/admin/web/src/srvprxy/config_broad_rtmp_send.html.wasm
server/admin/web/build/server/ config_broad_rtmp_send.html \
server/admin/web/build/mserver/config_broad_rtmp_send.html
Testing Performed:
================
Unit Tests:
None
Integration Tests:
1. Add configuration like given upstairs
2. start Helix server
3. push stream to Helix server using slta/Helix Producer/AFML
3. play back live stream in http://support.akamai.com/flash/
4. add/delete/modify cdn account information, helix server can work using new \
configure data without restart
Leak Tests: None
Performance Tests: N/A
Platforms Tested: Windows32
Builds Verified: Windows32
QA Hints
========
None.
Index: server.opt
===================================================================
RCS file: /cvsroot/server/admin/web/server.opt,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- server.opt 12 Jun 2012 13:11:33 -0000 1.15
+++ server.opt 26 Jun 2012 15:58:46 -0000 1.16
@@ -16,6 +16,8 @@
srvprxy/config_broad_wm.html.wasm
srvprxy/config_broad_redun.html.wasm
srvprxy/config_broad_rtmp_ingress.html.wasm
+srvprxy/config_broad_push2cdn.html.wasm
+srvprxy/config_broad_rtmp_send.html.wasm
srvprxy/config_broad_mpeg2ts_ingress.html.wasm
srvprxy/config_qos.html.wasm
srvprxy/config_cc.html.wasm
_______________________________________________
Server-cvs mailing list
Server-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/server-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic