[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