| 1 | -- Start of the configuration. This is the only node in the config file. 
 | 
  
    | 2 | -- The rest of them are sub-nodes
 | 
  
    | 3 | configuration=
 | 
  
    | 4 | {
 | 
  
    | 5 | 	-- if true, the server will run as a daemon.
 | 
  
    | 6 | 	-- NOTE: all console appenders will be ignored if this is a daemon
 | 
  
    | 7 | 	daemon=false,
 | 
  
    | 8 | 	-- the OS's path separator. Used in composing paths
 | 
  
    | 9 | 	pathSeparator="/",
 | 
  
    | 10 | 
 | 
  
    | 11 | 	-- this is the place where all the logging facilities are setted up
 | 
  
    | 12 | 	-- you can add/remove any number of locations
 | 
  
    | 13 | 
 | 
  
    | 14 | 	logAppenders=
 | 
  
    | 15 | 	{
 | 
  
    | 16 | 		{
 | 
  
    | 17 | 			-- name of the appender. Not too important, but is mandatory
 | 
  
    | 18 | 			name="console appender",
 | 
  
    | 19 | 			-- type of the appender. We can have the following values:
 | 
  
    | 20 | 			-- console, coloredConsole and file
 | 
  
    | 21 | 			-- NOTE: console appenders will be ignored if we run the server
 | 
  
    | 22 | 			-- as a daemon
 | 
  
    | 23 | 			type="coloredConsole",
 | 
  
    | 24 | 			-- the level of logging. 6 is the FINEST message, 0 is FATAL message.
 | 
  
    | 25 | 			-- The appender will "catch" all the messages below or equal to this level
 | 
  
    | 26 | 			-- bigger the level, more messages are recorded
 | 
  
    | 27 | 			level=6
 | 
  
    | 28 | 		},
 | 
  
    | 29 | 		{
 | 
  
    | 30 | 			name="file appender",
 | 
  
    | 31 | 			type="file",
 | 
  
    | 32 | 			level=6,
 | 
  
    | 33 | 			-- the file where the log messages are going to land
 | 
  
    | 34 | 			fileName="/tmp/crtmpserver",
 | 
  
    | 35 | 			--newLineCharacters="\r\n",
 | 
  
    | 36 | 			fileHistorySize=10,
 | 
  
    | 37 | 			fileLength=1024*256,
 | 
  
    | 38 | 			singleLine=true
 | 
  
    | 39 | 		}
 | 
  
    | 40 | 	},
 | 
  
    | 41 | 	
 | 
  
    | 42 | 	-- this node holds all the RTMP applications
 | 
  
    | 43 | 	applications=
 | 
  
    | 44 | 	{
 | 
  
    | 45 | 		-- this is the root directory of all applications
 | 
  
    | 46 | 		-- usually this is relative to the binary execuable
 | 
  
    | 47 | 		rootDirectory="/usr/lib/crtmpserver/applications",
 | 
  
    | 48 | 		
 | 
  
    | 49 | 		
 | 
  
    | 50 | 		--this is where the applications array starts
 | 
  
    | 51 | 		{
 | 
  
    | 52 | 			-- The name of the application. It is mandatory and must be unique 
 | 
  
    | 53 | 			name="appselector",
 | 
  
    | 54 | 			-- Short description of the application. Optional
 | 
  
    | 55 | 			description="Application for selecting the rest of the applications",
 | 
  
    | 56 | 			
 | 
  
    | 57 | 			-- The type of the application. Possible values are:
 | 
  
    | 58 | 			-- dynamiclinklibrary - the application is a shared library
 | 
  
    | 59 | 			protocol="dynamiclinklibrary",
 | 
  
    | 60 | 			-- the complete path to the library. This is optional. If not provided, 
 | 
  
    | 61 | 			-- the server will try to load the library from here
 | 
  
    | 62 | 			-- <rootDirectory>/<name>/lib<name>.{so|dll|dylib}
 | 
  
    | 63 | 			-- library="/some/path/to/some/shared/library.so"
 | 
  
    | 64 | 			
 | 
  
    | 65 | 			-- Tells the server to validate the clien's handshake before going further. 
 | 
  
    | 66 | 			-- It is optional, defaulted to true
 | 
  
    | 67 | 			validateHandshake=true,
 | 
  
    | 68 | 			-- this is the folder from where the current application gets it's content.
 | 
  
    | 69 | 			-- It is optional. If not specified, it will be defaulted to:
 | 
  
    | 70 | 			-- <rootDirectory>/<name>/mediaFolder
 | 
  
    | 71 | 			mediaFolder="/var/volatile/cache/crtmpserver",
 | 
  
    | 72 | 			-- the application will also be known by that names. It is optional
 | 
  
    | 73 | 			--aliases=
 | 
  
    | 74 | 			--{
 | 
  
    | 75 | 			--	"simpleLive",
 | 
  
    | 76 | 			--	"vod",
 | 
  
    | 77 | 			--	"live",
 | 
  
    | 78 | 			--},
 | 
  
    | 79 | 			-- This flag designates the default application. The default application
 | 
  
    | 80 | 			-- is responsable of analyzing the "connect" request and distribute 
 | 
  
    | 81 | 			-- the future connection to the correct application.
 | 
  
    | 82 | 			default=true,
 | 
  
    | 83 | 			acceptors = 
 | 
  
    | 84 | 			{
 | 
  
    | 85 | 				{
 | 
  
    | 86 | 					ip="0.0.0.0",
 | 
  
    | 87 | 					port=1935,
 | 
  
    | 88 | 					protocol="inboundRtmp"
 | 
  
    | 89 | 				},
 | 
  
    | 90 | 				-- {
 | 
  
    | 91 | 				-- 	ip="0.0.0.0",
 | 
  
    | 92 | 				-- 	port=8081,
 | 
  
    | 93 | 				-- 	protocol="inboundRtmps",
 | 
  
    | 94 | 				-- 	sslKey="server.key",
 | 
  
    | 95 | 				-- 	sslCert="server.crt"
 | 
  
    | 96 | 				-- },
 | 
  
    | 97 | 				{
 | 
  
    | 98 | 					ip="0.0.0.0",
 | 
  
    | 99 | 					port=8080,
 | 
  
    | 100 | 					protocol="inboundRtmpt"
 | 
  
    | 101 |                                 },
 | 
  
    | 102 | 			}
 | 
  
    | 103 | 		},
 | 
  
    | 104 | 		{
 | 
  
    | 105 | 			description="FLV Playback Sample",
 | 
  
    | 106 | 			name="flvplayback",
 | 
  
    | 107 | 			protocol="dynamiclinklibrary",
 | 
  
    | 108 | 			mediaFolder="/var/volatile/cache/crtmpserver/",
 | 
  
    | 109 | 			aliases=
 | 
  
    | 110 | 			{
 | 
  
    | 111 | 				"simpleLive",
 | 
  
    | 112 | 				"vod",
 | 
  
    | 113 | 				"live",
 | 
  
    | 114 | 				"WeeklyQuest",
 | 
  
    | 115 | 				"SOSample",
 | 
  
    | 116 | 				"oflaDemo",
 | 
  
    | 117 | 			},
 | 
  
    | 118 | 			acceptors = 
 | 
  
    | 119 | 			{
 | 
  
    | 120 | 				{
 | 
  
    | 121 | 					ip="0.0.0.0",
 | 
  
    | 122 | 					port=6666,
 | 
  
    | 123 | 					protocol="inboundLiveFlv",
 | 
  
    | 124 | 					waitForMetadata=true,
 | 
  
    | 125 | 				},
 | 
  
    | 126 | 				{
 | 
  
    | 127 | 					ip="0.0.0.0",
 | 
  
    | 128 | 					port=9999,
 | 
  
    | 129 | 					protocol="inboundTcpTs",
 | 
  
    | 130 | 				},
 | 
  
    | 131 | 				{
 | 
  
    | 132 | 					ip="0.0.0.0",
 | 
  
    | 133 | 					port=10000,
 | 
  
    | 134 | 					protocol="inboundUdpTs",
 | 
  
    | 135 |                                 },
 | 
  
    | 136 | 				--[[{
 | 
  
    | 137 | 					ip="0.0.0.0",
 | 
  
    | 138 | 					port=7654,
 | 
  
    | 139 | 					protocol="inboundRawHttpStream",
 | 
  
    | 140 | 					crossDomainFile="/tmp/crossdomain.xml"
 | 
  
    | 141 | 				},
 | 
  
    | 142 | 				{
 | 
  
    | 143 | 					ip="0.0.0.0",
 | 
  
    | 144 | 					port=554,
 | 
  
    | 145 | 					protocol="inboundRtsp"
 | 
  
    | 146 | 				},]]--
 | 
  
    | 147 | 			},
 | 
  
    | 148 | 			externalStreams = 
 | 
  
    | 149 | 			{
 | 
  
    | 150 | 				--[[
 | 
  
    | 151 | 				{
 | 
  
    | 152 | 					uri="rtsp://fms20.mediadirect.ro/live2/realitatea/realitatea",
 | 
  
    | 153 | 					localStreamName="rtsp_test",
 | 
  
    | 154 | 					forceTcp=true
 | 
  
    | 155 | 				},
 | 
  
    | 156 | 				{
 | 
  
    | 157 | 					uri="rtmp://edge01.fms.dutchview.nl/botr/bunny",
 | 
  
    | 158 | 					localStreamName="rtmp_test",
 | 
  
    | 159 | 					swfUrl="http://www.example.com/example.swf";
 | 
  
    | 160 | 					pageUrl="http://www.example.com/";
 | 
  
    | 161 | 					emulateUserAgent="MAC 10,1,82,76",
 | 
  
    | 162 | 				}]]--
 | 
  
    | 163 | 			},
 | 
  
    | 164 | 			validateHandshake=true,
 | 
  
    | 165 | 			keyframeSeek=false,
 | 
  
    | 166 | 			seekGranularity=500, --in seconds, between 0.1 and 600
 | 
  
    | 167 | 			clientSideBuffer=5, --in seconds, between 5 and 30
 | 
  
    | 168 | 			--generateMetaFiles=true, --this will generate seek/meta files on application startup
 | 
  
    | 169 | 			--renameBadFiles=false,
 | 
  
    | 170 | 			--enableCheckBandwidth=true,
 | 
  
    | 171 | 			--[[authentication=
 | 
  
    | 172 | 			{
 | 
  
    | 173 | 				rtmp={
 | 
  
    | 174 | 					type="adobe",
 | 
  
    | 175 | 					encoderAgents=
 | 
  
    | 176 | 					{
 | 
  
    | 177 | 						"FMLE/3.0 (compatible; FMSc/1.0)",
 | 
  
    | 178 | 						"My user agent",
 | 
  
    | 179 | 					},
 | 
  
    | 180 | 					usersFile="users.lua"
 | 
  
    | 181 | 				},
 | 
  
    | 182 | 				rtsp={
 | 
  
    | 183 | 					usersFile="users.lua"
 | 
  
    | 184 | 				}
 | 
  
    | 185 | 			}, --]]
 | 
  
    | 186 | 		},
 | 
  
    | 187 | 		{
 | 
  
    | 188 | 			name="samplefactory",
 | 
  
    | 189 | 			description="asdsadasdsa",
 | 
  
    | 190 | 			protocol="dynamiclinklibrary",
 | 
  
    | 191 | 			aliases=
 | 
  
    | 192 | 			{
 | 
  
    | 193 | 				"httpOutboundTest"
 | 
  
    | 194 | 			},
 | 
  
    | 195 | 			acceptors = 
 | 
  
    | 196 | 			{
 | 
  
    | 197 | 				{
 | 
  
    | 198 | 					ip="0.0.0.0",
 | 
  
    | 199 | 					port=8989,
 | 
  
    | 200 | 					protocol="httpEchoProtocol"
 | 
  
    | 201 | 				},
 | 
  
    | 202 | 				{
 | 
  
    | 203 | 					ip="0.0.0.0",
 | 
  
    | 204 | 					port=8988,
 | 
  
    | 205 | 					protocol="echoProtocol"
 | 
  
    | 206 | 				}
 | 
  
    | 207 | 			}
 | 
  
    | 208 | 			--validateHandshake=true,
 | 
  
    | 209 | 			--default=true,
 | 
  
    | 210 | 		},
 | 
  
    | 211 | 		{
 | 
  
    | 212 | 			name="vptests",
 | 
  
    | 213 | 			description="Variant protocol tests",
 | 
  
    | 214 | 			protocol="dynamiclinklibrary",
 | 
  
    | 215 | 			aliases=
 | 
  
    | 216 | 			{
 | 
  
    | 217 | 				"vptests_alias1",
 | 
  
    | 218 | 				"vptests_alias2",
 | 
  
    | 219 | 				"vptests_alias3",
 | 
  
    | 220 | 			},
 | 
  
    | 221 | 			acceptors = 
 | 
  
    | 222 | 			{
 | 
  
    | 223 | 				{
 | 
  
    | 224 | 					ip="0.0.0.0",
 | 
  
    | 225 | 					port=1111,
 | 
  
    | 226 | 					protocol="inboundHttpXmlVariant"
 | 
  
    | 227 | 				}
 | 
  
    | 228 | 			}
 | 
  
    | 229 | 			--validateHandshake=true,
 | 
  
    | 230 | 			--default=true,
 | 
  
    | 231 | 		},
 | 
  
    | 232 | 		{
 | 
  
    | 233 | 			name="admin",
 | 
  
    | 234 | 			description="Application for administering",
 | 
  
    | 235 | 			protocol="dynamiclinklibrary",
 | 
  
    | 236 | 			aliases=
 | 
  
    | 237 | 			{
 | 
  
    | 238 | 				"admin_alias1",
 | 
  
    | 239 | 				"admin_alias2",
 | 
  
    | 240 | 				"admin_alias3",
 | 
  
    | 241 | 			},
 | 
  
    | 242 | 			acceptors = 
 | 
  
    | 243 | 			{
 | 
  
    | 244 | 				{
 | 
  
    | 245 | 					ip="0.0.0.0",
 | 
  
    | 246 | 					port=1112,
 | 
  
    | 247 | 					protocol="inboundJsonCli",
 | 
  
    | 248 | 					useLengthPadding=true
 | 
  
    | 249 | 				},
 | 
  
    | 250 | 			}
 | 
  
    | 251 | 			--validateHandshake=true,
 | 
  
    | 252 | 			--default=true,
 | 
  
    | 253 | 		},
 | 
  
    | 254 | 		{
 | 
  
    | 255 | 			name="proxypublish",
 | 
  
    | 256 | 			description="Application for forwarding streams to another RTMP server",
 | 
  
    | 257 | 			protocol="dynamiclinklibrary",
 | 
  
    | 258 | 			acceptors =
 | 
  
    | 259 | 			{
 | 
  
    | 260 | 				{	
 | 
  
    | 261 | 					ip="0.0.0.0",
 | 
  
    | 262 | 					port=6665,
 | 
  
    | 263 | 					protocol="inboundLiveFlv"
 | 
  
    | 264 | 				},
 | 
  
    | 265 | 			},
 | 
  
    | 266 | 			abortOnConnectError=true,
 | 
  
    | 267 | 			targetServers = 
 | 
  
    | 268 | 			{
 | 
  
    | 269 | 				--[[{
 | 
  
    | 270 | 					targetUri="rtmp://x.xxxxxxx.fme.ustream.tv/ustreamVideo/xxxxxxx",
 | 
  
    | 271 | 					targetStreamName="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
 | 
  
    | 272 | 					localStreamName="gigi",
 | 
  
    | 273 | 					emulateUserAgent="FMLE/3.0 (compatible; FMSc/1.0 http://www.rtmpd.com)"
 | 
  
    | 274 | 				}]]--,
 | 
  
    | 275 | 				{
 | 
  
    | 276 | 					targetUri="rtmp://gigi:spaima@localhost/vod",
 | 
  
    | 277 | 					targetStreamType="live", -- (live, record or append)
 | 
  
    | 278 | 					emulateUserAgent="My user agent",
 | 
  
    | 279 | 					localStreamName="stream1",
 | 
  
    | 280 | 					keepAlive=true
 | 
  
    | 281 | 				},
 | 
  
    | 282 | 			},
 | 
  
    | 283 | 			--[[externalStreams = 
 | 
  
    | 284 | 			{
 | 
  
    | 285 | 				{
 | 
  
    | 286 | 					uri="rtsp://fms20.mediadirect.ro/live2/realitatea/realitatea",
 | 
  
    | 287 | 					localStreamName="stream1",
 | 
  
    | 288 | 					forceTcp=true,
 | 
  
    | 289 | 					keepAlive=true
 | 
  
    | 290 | 				},
 | 
  
    | 291 | 			},]]--
 | 
  
    | 292 | 			--validateHandshake=true,
 | 
  
    | 293 | 			--default=true,
 | 
  
    | 294 | 		},
 | 
  
    | 295 | 		{
 | 
  
    | 296 | 			name="stresstest",
 | 
  
    | 297 | 			description="Application for stressing a streaming server",
 | 
  
    | 298 | 			protocol="dynamiclinklibrary",
 | 
  
    | 299 | 			targetServer="localhost",
 | 
  
    | 300 | 			targetApp="vod",
 | 
  
    | 301 | 			active=false,
 | 
  
    | 302 | 			--[[streams = 
 | 
  
    | 303 | 			{
 | 
  
    | 304 | 				"lg00","lg01","lg02","lg03","lg04","lg05","lg06","lg07","lg08",
 | 
  
    | 305 | 				"lg09","lg10","lg11","lg12","lg13","lg14","lg15","lg16","lg17",
 | 
  
    | 306 | 				"lg18","lg19","lg20","lg21","lg22","lg23","lg24","lg25","lg26",
 | 
  
    | 307 | 				"lg27","lg28","lg29","lg30","lg31","lg32","lg33","lg34","lg35",
 | 
  
    | 308 | 				"lg36","lg37","lg38","lg39","lg40","lg41","lg42","lg43","lg44",
 | 
  
    | 309 | 				"lg45","lg46","lg47","lg48","lg49"
 | 
  
    | 310 | 			},]]--
 | 
  
    | 311 | 			streams = 
 | 
  
    | 312 | 			{
 | 
  
    | 313 | 				"mp4:lg.mp4"
 | 
  
    | 314 | 			},
 | 
  
    | 315 | 			numberOfConnections=10,
 | 
  
    | 316 | 			randomAccessStreams=false
 | 
  
    | 317 | 		},
 | 
  
    | 318 | 		{
 | 
  
    | 319 | 			name="applestreamingclient",
 | 
  
    | 320 | 			description="Apple Streaming Client",
 | 
  
    | 321 | 			protocol="dynamiclinklibrary",
 | 
  
    | 322 | 			--[[acceptors = 
 | 
  
    | 323 | 			{
 | 
  
    | 324 | 				{
 | 
  
    | 325 | 					ip="0.0.0.0",
 | 
  
    | 326 | 					port=5544,
 | 
  
    | 327 | 					protocol="inboundRtsp"
 | 
  
    | 328 | 				}
 | 
  
    | 329 | 			},]]--
 | 
  
    | 330 | 			aliases=
 | 
  
    | 331 | 			{
 | 
  
    | 332 | 				"asc",
 | 
  
    | 333 | 			},
 | 
  
    | 334 | 			--validateHandshake=true,
 | 
  
    | 335 | 			--default=true,
 | 
  
    | 336 | 		},
 | 
  
    | 337 | 		--[[{
 | 
  
    | 338 | 			name="vmapp",
 | 
  
    | 339 | 			description="An application demonstrating the use of virtual machines",
 | 
  
    | 340 | 			protocol="dynamiclinklibrary",
 | 
  
    | 341 | 			vmType="lua",
 | 
  
    | 342 | 			script="flvplayback.lua",
 | 
  
    | 343 | 			aliases=
 | 
  
    | 344 | 			{
 | 
  
    | 345 | 				"flvplayback1",
 | 
  
    | 346 | 				"vod1"
 | 
  
    | 347 | 			},
 | 
  
    | 348 | 			acceptors=
 | 
  
    | 349 | 			{
 | 
  
    | 350 | 				{
 | 
  
    | 351 | 					ip="0.0.0.0",
 | 
  
    | 352 | 					port=6544,
 | 
  
    | 353 | 					protocol="inboundTcpTs"
 | 
  
    | 354 | 				}
 | 
  
    | 355 | 			}
 | 
  
    | 356 | 		},]]--
 | 
  
    | 357 | 		--#INSERTION_MARKER# DO NOT REMOVE THIS. USED BY appscaffold SCRIPT.
 | 
  
    | 358 | 	}
 | 
  
    | 359 | }
 | 
  
    | 360 | 
 |