Tools to complement Flash's Telemetry feature.
Adds the EnableTelemetry tag to a SWF file for use with Adobe Scout.
Run this script on your SWF to make it generate advanced telemetry, which is needed for the ActionScript Sampler, Stage3D Recording, and other features.
This script is provided as a last resort. If possible, you should compile your application with the -advanced-telemetry option.
- You need Python. I've tested 2.6.1 (Mac) and ActivePython 2.7.2 (Win).
- For LZMA-compressed SWFs, you need pylzma.
./add-opt-in.py swf_file [password]
If password is provided, advanced telemetry will only be visible if a matching password is entered in Adobe Scout.
This is a tool for generating reports from .flm files captured via telemetry. Flm files may be captured using Adobe Scout or with the included flmserv.py script.
Various reports can be generated by using options. Reports print to stdout. By default only a summary report is generated. Use -f to get reports on all frames.
Usage: python telemetry.py [options]
Options:
-h, --help show this help message and exit
-f, --frames generate report for all frames
-s, --summary show individual metrics summary
-a, --all show all metrics
-m, --memory show Memory Stats
-d, --dump generate amf3 hex dump while parsing
-l, --load=# filter out frames with load < #
--range=RANGE set range of frames (RANGE = start:end)
Here is an example of the default report.
Report for: ../flm/myfile.flm
Date = 2012-04-23 22:55:34.280000
Swf Name = myfile.swf
SWF Rate = 23.0 fps
Telemetry version = 1,1
Startup Time = 0:00:00.684330
Metric Count = 152574
Frame Count = 1225
Render Count = 2846
Run Time = 0:00:53.498891
Time in Player = 0:00:14.685750
Load = 27.45%
Frame FPS = 22.91
Render RPS = 53.22
Most time by Category:
Rendering: 9682.891 66%
ActionScript: 2391.428 16%
Player: 2318.862 16%
Telemetry: 259.446 2%
This is a simple TCP service that can be used to capture .flm files from the flash runtime. To use, simply run this script. Files will be saved in a .flm folder relative to where flmsrv.py is executed.
Note, Flash must first be configured to have telemetry enabled. This is done by creating a .telemetry.cfg file in the users home folder and adding the line: TelemetryAddress = localhost
echo "TelemetryAddress=localhost" > ~/.telemetry.cfg
There are other settings you can configure in .telemetry.cfg and the location of the file may change depending on your browser or operating system. For more details on setting up .telemetry.cfg see "remote profiling" under: adobe-scout-getting-started
Also note that Adobe Scout conflicts with flmserv.py, you cannot run both at the same time since they set up a service on the same port. Adobe Scout will replace or delete the .telemetry.cfg file, but modifying this file manually will not impact Scout settings.
python flmserv.py [options]
Options:
-h, --help show this help message and exit
-q, --quiet don't print status messages to stdout
This is a generic library for reading amf3 formatted data into python. Telemetry.py uses this to parse the amf3 files. It can also be used standalone to convert amf3 files (or .flm files) into JSON text data.
python amf3reader.py filename [filename]...
Where filename is a .flm file (or any amf3 formatted data)