Add even more of the source
This should be about everything needed to build so far?
This commit is contained in:
parent
af3619d4fa
commit
849723c9cf
547 changed files with 149239 additions and 0 deletions
127
StreamingLoadTool/Nokia_N90.conf
Normal file
127
StreamingLoadTool/Nokia_N90.conf
Normal file
|
@ -0,0 +1,127 @@
|
|||
# This is a StreamingLoadTool config file
|
||||
|
||||
#player user agent name
|
||||
player QTS
|
||||
|
||||
# Use the "clienttype" directive to specify whether StreamingLoadTool should make
|
||||
# RTSP / UDP connections or RTSP / HTTP connections or . Say "http" for
|
||||
# the latter, "udp" for the former. Say "reliableudp" for reliable UDP.
|
||||
# Say "tcp" for straight interleaved RTSP / RTP
|
||||
clienttype udp
|
||||
|
||||
# If doing RTSP / HTTP, set droppost to "yes" if you would like StreamingLoadTool
|
||||
# to drop the POST half of each RTSP / HTTP connection after sending the
|
||||
# PLAY. "yes" best emulates the "real" client behavior.
|
||||
droppost yes
|
||||
|
||||
# Set this to the # of concurrent clients you would like StreamingLoadTool to maintain(default = 1)
|
||||
# When not running forever, this is also the number of clients to load before exiting
|
||||
concurrentclients 1
|
||||
|
||||
# Specify a connection port for each connection(default 554)
|
||||
port 554
|
||||
|
||||
# Specify a proxy IP address in dotted-decimal form. If 0, StreamingLoadTool
|
||||
# will not use a proxy to connect
|
||||
proxyip 0
|
||||
|
||||
# Client window (size of UDP socket buffers). Default = 32768
|
||||
# For reliable UDP, this affects packet loss and the server's retransmission algorithm
|
||||
clientwindow 32768
|
||||
|
||||
# StreamingLoadTool should send a TEARDOWN after streaming for this # of seconds
|
||||
movielength 60
|
||||
|
||||
# If runforever is set to "no", StreamingLoadTool will quit after finishing the
|
||||
# list of URLs provided below. If "yes" StreamingLoadTool will loop forever. (Default = no)
|
||||
runforever no
|
||||
|
||||
# Each instance of StreamingLoadTool must have a unique httpcookie value. This
|
||||
# can also be specified on the command-line (see usage by doing StreamingLoadTool -v) (Default = 1)
|
||||
httpcookie 1
|
||||
|
||||
# Set to "yes" if you would like StreamingLoadTool to generate a connection log
|
||||
shouldlog yes
|
||||
|
||||
# Append junk data after each DESCRIBE request
|
||||
appendjunk no
|
||||
|
||||
# Location to place the connection log
|
||||
logpath streamingloadtool.log
|
||||
|
||||
# Interval in milliseconds between attempts to read media data. For acking
|
||||
# udp clients, this is also the interval between acks. (Default = 50 milliseconds)
|
||||
readinterval 10
|
||||
|
||||
# how late should packets be allowed to be sent? Value is in seconds.
|
||||
# 0 = no late tolerance will be specified at all
|
||||
latetolerance 0
|
||||
|
||||
# The "Packet-Range" header is used as an alternative to the standard "Range"
|
||||
# header on a Play request for specifying a range of packets. Leave
|
||||
# this line blank to issue a standard play, specify a packet range header
|
||||
# here to send that instead of standard Range header.
|
||||
packetplayheader
|
||||
|
||||
# The overbuffer window size is the number of K bytes the server can send
|
||||
# ahead of time. This applies to all transports except "udp".
|
||||
overbufferwindowsize 5192
|
||||
|
||||
# Set this to be the value of the x-RTP-Meta-Info header sent to the server.
|
||||
# If it is empty, no x-RTP-Meta-Info header will be sent. Otherwise, specify
|
||||
# the fields you would like to receive
|
||||
# rtpmetainfo tt;ft;pn;fd;md;sq
|
||||
|
||||
# Set this to be the speed you want the streams at (1 = normal speed, 2 = 2x normal speed, etc; float)
|
||||
speed 1
|
||||
|
||||
# Enable this to have StreamingLoadTool randomly thumb around
|
||||
randomthumb no
|
||||
|
||||
# Set sendoptions "yes" to send an OPTIONS request before executing each DESCRIBE request
|
||||
sendoptions no
|
||||
|
||||
# Set requestrandomdata "yes" to send an OPTIONS request with a random data request header before executing each DESCRIBE request
|
||||
requestrandomdata no
|
||||
|
||||
# How many random bytes the server should send in the body of the OPTIONS response
|
||||
randomdatasize 0
|
||||
|
||||
# How often should the client send RTCP messages in milliseconds. (Default = 5000; ACK's in reliableudp are sent ASAP)
|
||||
rtcpinterval 1000
|
||||
|
||||
# List of rtsp URLs for StreamingLoadTool to execute
|
||||
url rtsp://foo.bar.com/sample.mov
|
||||
|
||||
# List of users:passwords for authentication (format: user:password)
|
||||
user user0:pass0
|
||||
|
||||
#The advertised bandwidth in bps (default: not sent)
|
||||
bandwidth 31235
|
||||
|
||||
#The player buffer space per stream in bytes. Default of 0 is unlimited
|
||||
buffer 15000
|
||||
|
||||
#target delay in milliseconds. Default 3000. Use 0 to turn it off
|
||||
#This is the desired amount of playback time to keep in the buffer.
|
||||
delay 10000
|
||||
|
||||
#Start play time delay; expressed as a fraction of the target delay. This is how much data there should be in the buffer before
|
||||
#the media starts playing. Use 0.0 to start playing immediately, and 1.0 to start playing when the target delay has been met. Default = 5.0
|
||||
startdelay 0.5
|
||||
|
||||
#Turn on 3GPP features and headers? 3GPP should be not be enabled on reliableudp transport; default = no
|
||||
enable3GPP yes
|
||||
|
||||
# The advertised guarenteed bit rate(GBW), maximum bit rate(MBW), and maximum transfer delay(MTD) for the wireless link
|
||||
# Units are in kilobits per seconds and milliseconds.
|
||||
# Default = 0 = no specified value
|
||||
#GBW 32
|
||||
#MBW 128
|
||||
#MTD 2000
|
||||
|
||||
# Enable a forced PlayoutDelay value for 3GPP RTCP packets (The value defined for the playoutDelay preference will be sent)
|
||||
enableForcePlayoutDelay no
|
||||
|
||||
# PlayoutDelay value to use if enableForcePlayoutDelay is enabled
|
||||
playoutDelay 65535
|
1200
StreamingLoadTool/StreamingLoadTool.cpp
Normal file
1200
StreamingLoadTool/StreamingLoadTool.cpp
Normal file
File diff suppressed because it is too large
Load diff
31
StreamingLoadTool/dummynet_fixed_start.script
Executable file
31
StreamingLoadTool/dummynet_fixed_start.script
Executable file
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
#
|
||||
echo "SCRIPT $0 [ip address] "
|
||||
echo "TEST Set a limited bandwidth."
|
||||
echo ""
|
||||
|
||||
ADDRESS="127.0.0.1"
|
||||
|
||||
if [ ${1} ]; then
|
||||
ADDRESS=${1}
|
||||
echo "Address set. Using $ADDRESS"
|
||||
else
|
||||
echo "No Address given. Using $ADDRESS"
|
||||
fi
|
||||
|
||||
ipfw delete pipe 1
|
||||
ipfw delete pipe 2
|
||||
ipfw delete set 11
|
||||
ipfw delete set 12
|
||||
|
||||
ipfw pipe 1 config bw 80kbits/s delay 0 queue 100 noerror
|
||||
ipfw pipe 2 config bw 80kbits/s delay 0 queue 100 noerror
|
||||
|
||||
ipfw add 11 set 11 pipe 1 src-ip $ADDRESS proto udp in
|
||||
ipfw add 12 set 12 pipe 2 src-ip $ADDRESS proto udp out
|
||||
|
||||
ipfw set enable 11
|
||||
ipfw set enable 12
|
||||
ipfw enable firewall one_pass
|
||||
|
10
StreamingLoadTool/dummynet_stop.script
Executable file
10
StreamingLoadTool/dummynet_stop.script
Executable file
|
@ -0,0 +1,10 @@
|
|||
echo "SCRIPT $0 "
|
||||
echo "TEST delete pipes, sets, and disable dummynet rule"
|
||||
|
||||
ipfw delete pipe 1
|
||||
ipfw delete pipe 2
|
||||
ipfw delete set 11
|
||||
ipfw delete set 12
|
||||
|
||||
ipfw disable firewall one_pass
|
||||
|
73
StreamingLoadTool/dummynet_variable.script
Executable file
73
StreamingLoadTool/dummynet_variable.script
Executable file
|
@ -0,0 +1,73 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
#
|
||||
echo "SCRIPT $0 [ip address] [down Kbits] [up Kbits] [test seconds] "
|
||||
echo "TEST Alternate between no bandwidth limits and limited bandwidth with a delay between"
|
||||
echo ""
|
||||
|
||||
ADDRESS="127.0.0.1"
|
||||
UP="32"
|
||||
DOWN="100"
|
||||
SLEEP="30"
|
||||
|
||||
if [ ${1} ]; then
|
||||
ADDRESS=${1}
|
||||
echo "Address set. Using $ADDRESS"
|
||||
else
|
||||
echo "No Address given. Using $ADDRESS"
|
||||
fi
|
||||
|
||||
if [ ${2} ]; then
|
||||
DOWN=${2}
|
||||
echo "Down link limit set. Using "$DOWN"kbits/s"
|
||||
else
|
||||
echo "No down link limit given. Using "$DOWN"kbits/s"
|
||||
|
||||
fi
|
||||
|
||||
if [ ${3} ]; then
|
||||
UP=${3}
|
||||
echo "Up link limit set. Using "$UP"kbits/s"
|
||||
else
|
||||
echo "No up link limit given. Using "$UP"kbits/s"
|
||||
fi
|
||||
|
||||
|
||||
if [ ${4} ]; then
|
||||
SLEEP=${4}
|
||||
echo "Test time set. Using $SLEEP seconds"
|
||||
else
|
||||
echo "No test time. Using $SLEEP seconds"
|
||||
fi
|
||||
|
||||
echo "Starting test"
|
||||
|
||||
while [ 1 ]
|
||||
do
|
||||
|
||||
ipfw delete pipe 1 2
|
||||
ipfw delete set 11 12
|
||||
ipfw disable firewall
|
||||
echo ""
|
||||
echo "Bandwidth open - no limit set"
|
||||
echo "Sleeping $SLEEP seconds"
|
||||
sleep 30
|
||||
echo ""
|
||||
|
||||
echo "Setting $DOWN kbits down and $UP kbits up"
|
||||
ipfw pipe 1 config bw "$DOWN"kbits/s delay 0 queue 100 noerror
|
||||
ipfw pipe 2 config bw "$UP"kbits/s delay 0 queue 100 noerror
|
||||
|
||||
ipfw add 11 set 11 pipe 1 src-ip $ADDRESS proto udp in
|
||||
ipfw add 12 set 12 pipe 2 src-ip $ADDRESS proto udp out
|
||||
|
||||
ipfw set enable 11
|
||||
ipfw set enable 12
|
||||
ipfw enable firewall one_pass
|
||||
|
||||
echo "Sleeping $SLEEP seconds"
|
||||
sleep 30
|
||||
|
||||
|
||||
done
|
||||
|
6
StreamingLoadTool/gdb_script
Normal file
6
StreamingLoadTool/gdb_script
Normal file
|
@ -0,0 +1,6 @@
|
|||
dir ../APICommonCode
|
||||
dir ../CommonUtilitiesLib
|
||||
dir ../OSMemoryLib
|
||||
dir ../PrefsSourceLib
|
||||
dir ../RTSPClientLib
|
||||
handle SIGPIPE nopass nostop noprint
|
1
StreamingLoadTool/gdbspam
Normal file
1
StreamingLoadTool/gdbspam
Normal file
|
@ -0,0 +1 @@
|
|||
gdb ./StreamingLoadTool -x gdb_script
|
203
StreamingLoadTool/parseSLTOut.py
Normal file
203
StreamingLoadTool/parseSLTOut.py
Normal file
|
@ -0,0 +1,203 @@
|
|||
#!python
|
||||
|
||||
"""Script for parsing the output of a StreamingLoadTool file. Can be used both as a script and as a python module.
|
||||
The output is a commma separated file. The StreamingLoadTool has to be run with -V 3 or above.
|
||||
|
||||
Usage: ParseSLTOut.py [-h] [-b interval] [-s all] [filename]
|
||||
|
||||
options:
|
||||
-h show this help message and exit
|
||||
-b Take the packet lengths and categorizes them according to their arrival time.
|
||||
The packet lengths within the same bucket (of size interval seconds) are summed up
|
||||
and averaged over the interval, which is useful for seeing the bit rate.
|
||||
-s The streams to parse: one of video, audio, all; default is video
|
||||
|
||||
If filename is missing, then the script will read from standard in. The script writes to standard out."""
|
||||
|
||||
"""
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_START@
|
||||
*
|
||||
* Copyright (c) 1999-2008 Apple Inc. All Rights Reserved.
|
||||
*
|
||||
* This file contains Original Code and/or Modifications of Original Code
|
||||
* as defined in and that are subject to the Apple Public Source License
|
||||
* Version 2.0 (the 'License'). You may not use this file except in
|
||||
* compliance with the License. Please obtain a copy of the License at
|
||||
* http://www.opensource.apple.com/apsl/ and read it before using this
|
||||
* file.
|
||||
*
|
||||
* The Original Code and all software distributed under the License are
|
||||
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||
* Please see the License for the specific language governing rights and
|
||||
* limitations under the License.
|
||||
*
|
||||
* @APPLE_LICENSE_HEADER_END@
|
||||
*
|
||||
"""
|
||||
|
||||
import re, sys
|
||||
|
||||
#the regular expression for matching lines in the SLT output
|
||||
playRE = re.compile(\
|
||||
r"^Receiving track (\d+), trackID=(\d+), (\w+) at time (\d+)")
|
||||
timeRE = re.compile(\
|
||||
r"^Processing incoming packets at time (\d+)")
|
||||
processedRE = re.compile(\
|
||||
r"^Processed packet: track=(\d+), len=(\d+), seq=(\d+), time=(\d+)\((\d+)\); bufferingDelay=(\d+), FBS=(\d+)")
|
||||
|
||||
|
||||
def parseSLTInput(inputFile):
|
||||
"""
|
||||
Parses a string consisting of outputs from StreamingLoadTool.
|
||||
The output is a list, where the index is the track index. The value is a map that maps from processing time to
|
||||
packets. Each packet is a 3-tuple containing the packet length(in bytes), the sequence number, and the timestamp.
|
||||
"""
|
||||
videoTrackIndex = None
|
||||
audioTrackIndex = None
|
||||
localTimeBase = None
|
||||
curTime = None
|
||||
|
||||
packetTable = [{}, {}]
|
||||
|
||||
for line in inputFile:
|
||||
matchObj = playRE.match(line)
|
||||
if matchObj is not None:
|
||||
trackIndex, trackID, trackType, startTime = matchObj.groups();
|
||||
if trackType == "video":
|
||||
videoTrackIndex = int(trackIndex)
|
||||
elif trackType == "audio":
|
||||
audioTrackIndex = int(trackIndex)
|
||||
localTimeBase = int(startTime)
|
||||
continue
|
||||
|
||||
matchObj = timeRE.match(line)
|
||||
if matchObj is not None:
|
||||
processingTime, = matchObj.groups()
|
||||
curTime = int(processingTime)
|
||||
continue
|
||||
|
||||
matchObj = processedRE.match(line)
|
||||
if matchObj is not None:
|
||||
trackIndex, packetLen, seqNum, timeStamp, timeStampInMediaTime, playoutDelay, freeBufferSpace = matchObj.groups()
|
||||
trackIndex = int(trackIndex);
|
||||
while trackIndex >= len(packetTable):
|
||||
packetTable.append({})
|
||||
packetList = packetTable[trackIndex].setdefault(curTime, [])
|
||||
packetList.append( (int(packetLen), int(seqNum), int(timeStamp)) )
|
||||
continue
|
||||
|
||||
if localTimeBase is None:
|
||||
sys.exit("Parse error: cannot find a track")
|
||||
|
||||
# modify the processing times to be 0-based
|
||||
newPacketTable = [{}] * len(packetTable)
|
||||
for trackIndex in range(len(packetTable)):
|
||||
newPackets = {}
|
||||
for (curTime, packet) in packetTable[trackIndex].items():
|
||||
curTime -= localTimeBase
|
||||
newPackets[curTime] = packet
|
||||
packetTable[trackIndex] = newPackets
|
||||
|
||||
return (packetTable, videoTrackIndex, audioTrackIndex)
|
||||
|
||||
|
||||
def calcBitRate(xList, yList, interval):
|
||||
"""xList is a list of processing time, and yList is a list of packet size.
|
||||
The function will calculate the bitrate, divided into interval-sized buckets, and returns it as a list
|
||||
of (processing time, bitrate) pair.
|
||||
xList is expected to be a list of time in milliseconds, and yList is expected to be a list of packet size in bytes."""
|
||||
maxIndex = max(xList) / interval
|
||||
bitsReceived = [0] * (maxIndex + 1)
|
||||
|
||||
for i in range(len(yList)):
|
||||
x = xList[i]
|
||||
y = yList[i]
|
||||
|
||||
bitsReceived[x / interval] += y * 8
|
||||
|
||||
return [ (i * interval, (bitsReceived[i] * 1000) / interval) for i in range(len(bitsReceived))]
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# the file is ran as a script
|
||||
|
||||
# first parse the command line
|
||||
import getopt
|
||||
from decimal import Decimal
|
||||
|
||||
try:
|
||||
optlist, args = getopt.getopt(sys.argv[1:], "hb:s:")
|
||||
except getopt.GetoptError:
|
||||
sys.exit(__doc__)
|
||||
|
||||
categorize = False
|
||||
streams = 'video'
|
||||
for opt, optarg in optlist:
|
||||
if opt == '-h':
|
||||
print __doc__
|
||||
sys.exit(0)
|
||||
elif opt == '-b':
|
||||
categorize = True
|
||||
try:
|
||||
interval = int(Decimal(optarg) * 1000)
|
||||
except:
|
||||
sys.exit(__doc__)
|
||||
elif opt == '-s':
|
||||
streams = optarg
|
||||
if streams != 'video' and streams != 'audio' and streams != 'all':
|
||||
sys.exit(__doc__)
|
||||
|
||||
if len(args) == 0:
|
||||
inputFile = sys.stdin
|
||||
elif len(args) == 1:
|
||||
inputFile = open(args[0], 'r')
|
||||
else:
|
||||
sys.exit(__doc__)
|
||||
|
||||
(packetTable, videoIndex, audioIndex) = parseSLTInput(inputFile)
|
||||
|
||||
if streams == 'video':
|
||||
if videoIndex is None:
|
||||
sys.exit("Parse error: Cannot find a video stream")
|
||||
packets = packetTable[videoIndex]
|
||||
elif streams == 'audio':
|
||||
if audioIndex is None:
|
||||
sys.exit("Parse error: Cannot find an audio stream")
|
||||
packets = packetTable[audioIndex]
|
||||
else:
|
||||
packets = {}
|
||||
for perStreamPackets in packetTable:
|
||||
for (time, packetList) in perStreamPackets.items():
|
||||
packets.setdefault(time, []).extend(packetList)
|
||||
|
||||
if len(packets) == 0:
|
||||
sys.exit("Error: Cannot find a stream")
|
||||
|
||||
|
||||
def millisecondsToSec(time):
|
||||
"""Convert time to 123.456 form as a string"""
|
||||
return str(time / 1000) + '.' + str(time % 1000)
|
||||
|
||||
if categorize:
|
||||
xList = []
|
||||
yList = []
|
||||
|
||||
for processingTime, packetList in packets.items():
|
||||
for (packetLen, seqNum, timeStamp) in packetList:
|
||||
xList.append(processingTime)
|
||||
yList.append(packetLen)
|
||||
data = calcBitRate(xList, yList, interval)
|
||||
for (time, bitrate) in data:
|
||||
print "%s, %i" % (millisecondsToSec(time), bitrate)
|
||||
else:
|
||||
processingTimes = packets.keys()
|
||||
processingTimes.sort()
|
||||
for processingTime in processingTimes:
|
||||
packetList = packets[processingTime]
|
||||
for (packetLen, seqNum, timeStamp) in packets[processingTime]:
|
||||
# output.append( (processingTime, packetLen) )
|
||||
print ("%s, %i") % ( millisecondsToSec(processingTime), packetLen )
|
81
StreamingLoadTool/streamingloadtool.cfg
Normal file
81
StreamingLoadTool/streamingloadtool.cfg
Normal file
|
@ -0,0 +1,81 @@
|
|||
# This is a StreamingLoadTool config file
|
||||
|
||||
# Use the "clienttype" directive to specify whether StreamingLoadTool should make
|
||||
# RTSP / UDP connections or RTSP / HTTP connections or . Say "http" for
|
||||
# the latter, "udp" for the former. Say "reliableudp" for reliable UDP.
|
||||
# Say "tcp" for straight interleaved RTSP / RTP
|
||||
clienttype reliableudp
|
||||
|
||||
# If doing RTSP / HTTP, set droppost to "yes" if you would like StreamingLoadTool
|
||||
# to drop the POST half of each RTSP / HTTP connection after sending the
|
||||
# PLAY. "yes" best emulates the "real" client behavior.
|
||||
droppost yes
|
||||
|
||||
# Set this to the # of concurrent clients you would like StreamingLoadTool to maintain
|
||||
concurrentclients 1
|
||||
|
||||
# Specify a connection port for each connection
|
||||
port 554
|
||||
|
||||
# Specify a proxy IP address in dotted-decimal form. If 0, StreamingLoadTool
|
||||
# will not use a proxy to connect
|
||||
proxyip 0
|
||||
|
||||
# Client window (size of UDP socket buffers).
|
||||
# For reliable UDP, this affects packet loss and the server's
|
||||
# retransmission algorithm
|
||||
clientwindow 32768
|
||||
|
||||
# StreamingLoadTool should send a TEARDOWN after streaming for this # of seconds
|
||||
movielength 40
|
||||
|
||||
# If runforever is set to "no", StreamingLoadTool will quit after finishing the
|
||||
# list of URLs provided below. If "yes" StreamingLoadTool will loop forever.
|
||||
runforever yes
|
||||
|
||||
# Each instance of StreamingLoadTool must have a unique httpcookie value. This
|
||||
# can also be specified on the command-line (see usage by doing StreamingLoadTool -v)
|
||||
httpcookie 1
|
||||
|
||||
# Set to "yes" if you would like StreamingLoadTool to generate a connection log
|
||||
shouldlog yes
|
||||
|
||||
# Append junk data after each DESCRIBE request
|
||||
appendjunk no
|
||||
|
||||
# Location to place the connection log
|
||||
logpath streamingloadtool.log
|
||||
|
||||
# Interval in milliseconds between attempts to read media data. For acking
|
||||
# udp clients, this is also the interval between acks.
|
||||
readinterval 10
|
||||
|
||||
# how late should packets be allowed to be sent? Value is in seconds.
|
||||
# 0 = no late tolerance will be specified at all
|
||||
latetolerance 0
|
||||
|
||||
# The "Packet-Range" header is used as an alternative to the standard "Range"
|
||||
# header on a Play request for specifying a range of packets. Leave
|
||||
# this line blank to issue a standard play, specify a packet range header
|
||||
# here to send that instead of standard Range header.
|
||||
packetplayheader
|
||||
|
||||
# The overbuffer window size is the number of K bytes the server can send
|
||||
# ahead of time. This applies to all transports except "udp".
|
||||
overbufferwindowsize 5192
|
||||
|
||||
# Set this to be the value of the x-RTP-Meta-Info header sent to the server.
|
||||
# If it is empty, no x-RTP-Meta-Info header will be sent. Otherwise, specify
|
||||
# the fields you would like to receive
|
||||
# rtpmetainfo tt;ft;pn;fd;md;sq
|
||||
|
||||
# Set this to be the speed you want the streams at (1 = normal speed, 2 = 2x normal speed, etc)
|
||||
speed 1
|
||||
|
||||
# Enable this to have StreamingLoadTool randomly thumb around
|
||||
randomthumb no
|
||||
|
||||
# List of rtsp URLs for StreamingLoadTool to execute
|
||||
url rtsp://foo.bar.com/sample.mov
|
||||
|
||||
|
129
StreamingLoadTool/streamingloadtool.conf
Normal file
129
StreamingLoadTool/streamingloadtool.conf
Normal file
|
@ -0,0 +1,129 @@
|
|||
# This is a StreamingLoadTool config file
|
||||
|
||||
#player user agent name
|
||||
player QTS
|
||||
|
||||
# Use the "clienttype" directive to specify whether StreamingLoadTool should make
|
||||
# RTSP / UDP connections or RTSP / HTTP connections or . Say "http" for
|
||||
# the latter, "udp" for the former. Say "reliableudp" for reliable UDP.
|
||||
# Say "tcp" for straight interleaved RTSP / RTP
|
||||
# Use "3gudp" for 3gpp rate adaptation over UDP
|
||||
clienttype reliableudp
|
||||
|
||||
# If doing RTSP / HTTP, set droppost to "yes" if you would like StreamingLoadTool
|
||||
# to drop the POST half of each RTSP / HTTP connection after sending the
|
||||
# PLAY. "yes" best emulates the "real" client behavior.
|
||||
droppost yes
|
||||
|
||||
# Set this to the # of concurrent clients you would like StreamingLoadTool to maintain(default = 1)
|
||||
# When not running forever, this is also the number of clients to load before exiting
|
||||
concurrentclients 1
|
||||
|
||||
# Specify a connection port for each connection(default 554)
|
||||
port 554
|
||||
|
||||
# Specify a proxy IP address in dotted-decimal form. If 0, StreamingLoadTool
|
||||
# will not use a proxy to connect
|
||||
proxyip 0
|
||||
|
||||
# Client window (size of UDP socket buffers). Default = 32768
|
||||
# For reliable UDP, this affects packet loss and the server's retransmission algorithm
|
||||
clientwindow 32768
|
||||
|
||||
# StreamingLoadTool should send a TEARDOWN after streaming for this # of seconds
|
||||
movielength 40
|
||||
|
||||
# If runforever is set to "no", StreamingLoadTool will quit after finishing the
|
||||
# list of URLs provided below. If "yes" StreamingLoadTool will loop forever. (Default = no)
|
||||
runforever yes
|
||||
|
||||
# Each instance of StreamingLoadTool must have a unique httpcookie value. This
|
||||
# can also be specified on the command-line (see usage by doing StreamingLoadTool -v) (Default = 1)
|
||||
httpcookie 1
|
||||
|
||||
# Set to "yes" if you would like StreamingLoadTool to generate a connection log
|
||||
shouldlog yes
|
||||
|
||||
# Append junk data after each DESCRIBE request
|
||||
appendjunk no
|
||||
|
||||
# Location to place the connection log
|
||||
logpath streamingloadtool.log
|
||||
|
||||
# Interval in milliseconds between attempts to read media data. For acking
|
||||
# udp clients, this is also the interval between acks. (Default = 50 milliseconds)
|
||||
readinterval 10
|
||||
|
||||
# how late should packets be allowed to be sent? Value is in seconds.
|
||||
# 0 = no late tolerance will be specified at all
|
||||
latetolerance 0
|
||||
|
||||
# The "Packet-Range" header is used as an alternative to the standard "Range"
|
||||
# header on a Play request for specifying a range of packets. Leave
|
||||
# this line blank to issue a standard play, specify a packet range header
|
||||
# here to send that instead of standard Range header.
|
||||
packetplayheader
|
||||
|
||||
# The overbuffer window size is the number of K bytes the server can send
|
||||
# ahead of time. This applies to all transports except "udp".
|
||||
overbufferwindowsize 5192
|
||||
|
||||
# Set this to be the value of the x-RTP-Meta-Info header sent to the server.
|
||||
# If it is empty, no x-RTP-Meta-Info header will be sent. Otherwise, specify
|
||||
# the fields you would like to receive
|
||||
# rtpmetainfo tt;ft;pn;fd;md;sq
|
||||
|
||||
# Set this to be the speed you want the streams at (1 = normal speed, 2 = 2x normal speed, etc; float)
|
||||
speed 1
|
||||
|
||||
# Enable this to have StreamingLoadTool randomly thumb around
|
||||
randomthumb no
|
||||
|
||||
# Set sendoptions "yes" to send an OPTIONS request before executing each DESCRIBE request
|
||||
sendoptions no
|
||||
|
||||
# Set requestrandomdata "yes" to send an OPTIONS request with a random data request header before executing each DESCRIBE request
|
||||
requestrandomdata no
|
||||
|
||||
# How many random bytes the server should send in the body of the OPTIONS response
|
||||
randomdatasize 0
|
||||
|
||||
# How often should the client send RTCP messages in milliseconds. (Default = 5000; ACK's in reliableudp are sent ASAP)
|
||||
rtcpinterval 1000
|
||||
|
||||
# List of rtsp URLs for StreamingLoadTool to execute
|
||||
url rtsp://foo.bar.com/sample.mov
|
||||
|
||||
# List of users:passwords for authentication (format: user:password)
|
||||
user user0:pass0
|
||||
|
||||
#The advertised bandwidth in bps (default: not sent)
|
||||
bandwidth 50000
|
||||
|
||||
#The player buffer space per stream in bytes. Default of 0 is unlimited
|
||||
buffer 100000
|
||||
|
||||
#target delay in milliseconds. Default 3000. Use 0 to turn it off
|
||||
#This is the desired amount of playback time to keep in the buffer.
|
||||
delay 10000
|
||||
|
||||
#Start play time delay; expressed as a fraction of the target delay. This is how much data there should be in the buffer before
|
||||
#the media starts playing. Use 0.0 to start playing immediately, and 1.0 to start playing when the target delay has been met. Default = 5.0
|
||||
#Use -1 for disabled.
|
||||
startdelay 0.5
|
||||
|
||||
#Turn on 3GPP features and headers? 3GPP should be not be enabled on reliableudp transport; default = no
|
||||
enable3GPP no
|
||||
|
||||
# The advertised guarenteed bit rate(GBW), maximum bit rate(MBW), and maximum transfer delay(MTD) for the wireless link
|
||||
# Units are in kilobits per seconds and milliseconds.
|
||||
# Default = 0 = no specified value
|
||||
#GBW 32
|
||||
#MBW 128
|
||||
#MTD 2000
|
||||
|
||||
# Enable a forced PlayoutDelay value for 3GPP RTCP packets (The value defined for the playoutDelay preference will be sent)
|
||||
enableForcePlayoutDelay no
|
||||
|
||||
# PlayoutDelay value to use if enableForcePlayoutDelay is enabled
|
||||
playoutDelay 65535
|
Loading…
Add table
Add a link
Reference in a new issue