Site Optimized for Chrome and Firefox
Site Optimized for Chrome and Firefox
Site Optimized for Chrome and Firefox
Site Optimized for Chrome and Firefox
The MMS API was deprecated on July 29, 2015. Get more information about our supported APIs.
/apis/sms-mms /apis/mms/docs
The Device Capabilities API was deprecated on July 29, 2015. Get more information about our supported APIs.
/apis/device-capabilities /apis/device-capabilities/docs
1. Overview

AT&T Video Optimizer is a free, open-source tool for developers and testers that provides recommendations to optimize the network performance of video and applications on mobile devices.

Video Optimizer runs traces on a mobile device, collecting network traffic, battery statistics, a video of the screen, and more. Post collection, the results are analyzed against 38 Best Practices, which helps developers pinpoint performance issues in their network traffic, and provides advice on how to resolve the issues. Adhering to these Best Practices has been shown to dramatically improve app and website performance, all of which lead to higher customer engagement and retention.

Video Optimizer complements standard functional and user-based testing as part of any quality assurance program. Video Optimizer allows for simple integration into existing test automation. We recommend that you execute a set of standardized tests such as AQuA’s Testing Criteria while using Video Optimizer to qualify your product for readiness.

2. Best Practices
The following Best Practices documents are reinforced by the Best Practice tests in Video Optimizer, and are organized in the same categories.

File Download: These documents provide recommendations for cache management, reducing duplicate content, and compressing and managing the way you download files and images. Smaller files can be delivered in less time, speeding up the rendering of your application.

Connections: These documents provide recommendations for efficiently managing TCP connections. By optimizing how you use the device's radio, you can speed the delivery of content and reduce the battery consumption of your app.

HTML: These documents provide recommendations for optimizing the handling of external files in your HTML. Optimizing your HTTP connectivity can further reduce your application's battery consumption.

Other: Reducing the usage of device peripherals can further reduce the battery consumption of your app.

Video: Analyses of the video packets sent during the data collection to examine for startup delays, stalls and more.

General Topics: These documents provide background on the LTE and 3G energy models and optimizing your app for mobile devices.

3. System Requirements
Before you download Video Optimizer, make sure you meet the following system requirements for your operating system:
  • At least 4GB of RAM
  • Java 8 or above
  • For Android developers, Android SDK Level 19 or above
  • WinPcap
  • FFmpeg
  • TLC for HD video capture
Mac OS X 10.6 and above
  • At least 4GB of RAM
  • Java 8 or above
  • For iOS developers, use the latest version of Xcode

4. Installation

To install onto your computer, download the latest copy of AT&T Video Optimizer and follow the installation instructions.

You can find Video Optimizer available for three platforms:

  • Windows 32 bit
  • Windows 64 bit
  • Mac OS X

5. Using Video Optimizer for Data Analysis
Video Optimizer takes the trace data collected from your app, evaluates it against the Video Optimizer Best Practices tests, and presents the results in the form of diagnostics and statistics that provide a layered view into the performance of your app. The quickest way to get started with Video Optimizer is to download a sample trace, open it in the Data Analyzer, and review the Video Optimizer Best Practice test results.
Starting the Analysis
As soon as you open a trace file in Video Optimizer, it will begin its trace analysis by evaluating the data against a set of recommended best practices. Once the analysis is complete, the Video Optimizer will automatically display the results.
Reviewing Video Optimizer Results
TThe best place to start reviewing Video Optimizer’s test results is in Video Optimizer’s Best Practices / Results tab. This tab contains a high-level overview of the results. When Video Optimizer runs an analysis of your trace, it evaluates the trace, it evaluates the trace data against a set of Best Practices benchmarks for over 20 distinct tests. If your trace’s data does not fall within the range of one of these benchmarks, it fails Video Optimizer’s test. The suggested best practices tests are categorized into five types: File Download, Connections, HTML,Video and Other.
  • If all of the best practice tests in a category pass, the whole category passes.
  • If one best practice test in a category fails, the whole category fails.
At the bottom of the Video Optimizer Best Practices / Results tab you’ll find a section called ‘Tests Conducted’. This is a summary of how your trace performed for each of Video Optimizer’s Best Practices tests. By scrolling further down the tab, you will see detailed information about each test result, including a Learn More link that will take you to a Best Practices document which examines the development practice that is being tested in detail. Each failed result contains specific information that includes a hyper linked word or phrase. By clicking on this link, you will be taken to a specific location in the Overview tab or Diagnostics tab that has more detailed results corresponding to the failure.

6. Testing
Collecting a Video Optimizer trace works similarly for all devices. Simply connect your device to your computer, and open the Video Optimizer application.
  1. From the Data Collector Menu, Select Start Collector
  2. Video Optimizer screenshot
    Figure 0-1 Menu to Start Video Optimizer Trace Collection
  3. A dialog box will open with a number of options. To start a trace, walk through the following options and make your selections.
  4. Video Optimizer screenshot
    Figure 0-2: Start Collector Dialog
    1. Select a Device. Video Optimizer will discover all iOS and Android devices connected to the computer. In this example, there are 2 devices connected: an iOS device, and an Android device, with the Android device selected.
    3. Collector Type: For Android devices that are rooted, the collector type can be chosen. In this example, the Android device does not have root access, and is set to the VPN method (this is the recommended setting). The Android device is not rooted, so that option is not available.
    5. Attenuate: Network Attenuation allows you to slow the network throughput to a slower network speed. By selecting downlink or uplink attenuation, and setting the speed to 3G or 2G on the slider, the Video Optimizer will reduce the throughput of the network connection, allowing tests on networks with lower bandwidth profiles. (This option is not selected in the example, and thus is not being used).
      1. Downlink attenuation will lower the throughput of the packets being downloaded from the server.
      2. Uplink attenuation will lower the throughput of the device uploading files to the server.
      3. Choosing a value between 3G and 2G will allow tests on "slow 3G". To test the actual throughput that is available, set your attenuation and actually test your throughput using a tool like NOTE: Video Optimizer Attenuation will only SLOW the network throughput—it cannot enhance the speed of your network. If your phone is on a slow network and you set attenuation to 4G, it will still be a slow connection.
    6. Secure: (Android devices on KitKat only) The Video Optimizer collector can decrypt HTTPS traffic—providing you with a more thorough analysis of the traffic transmitted during your test.
      1. If you change this value to yes, you will be prompted to install a certificate. You must install the certificate the first time you select Secure collection. On subsequent tests, you do not need to install the certificate.
      Video Optimizer screenshot

      Figure 0-3: Secure Collector Options

    7. Record Video: Depending on your device, there will be 2 or more options available for recording the screen while you are collecting Video Optimizer data.
      1. Low Res: 1-2 frames per second. Advantage: Smaller video size
        1. HD/SD (Android only): Video is recorded 27-30 frames per second. Note: When the trace is completed—there will be a longer delay before analysis as the video is spliced together.
        2. HD: 8 MBPS, 1920x1080. Note: This will generate very large videos. Generally you should only use this format for short traces. If HD video record fails, it may indicate that there were not enough system resources, so try with SD or Low Res settings.
        3. SD: SD video 3MBPS, 960x540 video—for a smaller size (but lower quality) video.
          If you select SD or HD videos, you can record the video on Landscape or portrait.
    8. Trace name: Spaces and special characters are not allowed in the trace name. If you pick a name that has already been used, you will be asked if you want to overwrite the previous trace. This is the name of the directory where all of the trace files will be stored.
    10. Start/Cancel: Once you have selected the appropriate parameters for your trace, click start to begin collection on your device. If you have decided it is all for naught, and wish to cancel—press cancel to prevent a trace from being run.
Now the collector is running on your device. The Effective Testing section can help you build test plans for your testing. When you are done with the test, click the "Stop Collector" button (or menu item) on your computer.
7. Effective Testing

To get the most informative test results from Video Optimizer, it’s important to capture trace data that represents how your users really use your app.

To do this, you need a clear testing strategy that takes the following issues into account:

  • Your app’s major user types and user behaviors.
  • How quickly or slowly users execute functions in your app.
  • The features of your app that generate the most network activity.
  • Other applications and device peripherals your app uses.

When using Video Optimizer, it’s important to capture these different scenarios in separate traces. Organizing your testing strategy into distinct user scenarios and collecting traces for each of them will make it easier to narrow down areas that you’d like to improve.

In general, when testing any scenario with Video Optimizer, you should always collect one trace each of the following distinct states:

Active Scenario
Use your app for 20 minutes the same way your users would. Even better, enlist a friend to use your app on your test device, while you document the timing and execution of the functions they use.

Idle Scenario
Launch your app and leave it idle for 30 minutes.

The idle trace is a bit like the control of your testing experiment — it helps you gauge the amount of baseline network activity and battery use that your app generates independent of using the app itself.

For more information about planning and testing user scenarios, including scenarios for specific app types, see the following tutorials and guides.

Sample Apps

The following sample app is provided so that you can get started testing and analyzing with Video Optimizer right away.

Just follow the instructions to download and install the Network Behavior Modification sample app on your Android device, then use the Video Optimizer Data Collector to capture trace files from the app while you test it. Once you have a trace file captured, refer to the Video Optimizer Analysis Guide to learn how to interpret the results in the Video Optimizer Data Analyzer.

About the Network Behavior Modification App
The Network Behavior Modification sample app allows you to perform a before-and-after test on three commonly used pieces of app functionality that frequently cause an app to be inefficient.

1.     Using a flexible (flex) ping or using a fixed ping
2.     Utilizing caching or not utilizing caching
3.     Closing connections explicitly or leaving it up to the device operating system to close them

By capturing traces in the Video Optimizer Data Collector with these three features turned on or off and analyzing the results in the Video Optimizer Data Analyzer, you will be able to test the most efficient approach to handling this functionality.

Download the App
Click the following link to download the sample app: Network Behavior Modification

Installing the App
To install this sample app on your Android device, use one of the following two methods:
Note: In some cases, you may need to select Settings > Security > Unknown sources to allow the installation of apps from sources outside of the onboard Play store.
  • Install the app directly. Copy the file to your Android device and click on it using a file manager tool.
  • Install the app via ADB. In a terminal window, browse to the folder with the APK file. With your device connected via USB (And USB debugging turned on), type: adb install ‹filename
Using the App
When the Network Behavior Modification app is started, you will see the following screen:

Figure 1: The start up screen of the Network Behavior Modification app.

From the start up screen (the only UI in the app) you can configure each of the three types of network behavior functionality and then click the Start! button to launch the app. The app will continue to run until you click the Stop! button.

Fixed Ping vs. Flex Ping
The only function the app performs is to download a photo every x seconds (where x is user definable) from Photobucket. For example, in figure 1, x=60 and Fixed Ping is selected. This means that every 60-61 seconds, the app will go to Photobucket and download a picture. You can change x (the Fixed Ping interval) to any value.

The alternative to a Fixed Ping is a Flex Ping. On cellular (note that Fixed Ping does not work over Wi-Fi, only cellular), the Android function PhoneStateListener.LISTEN_DATA_ACTIVITY listens to see if the radio is on. Using the settings in figure 1, the listener function begins at 30 seconds after the last image was downloaded. Should the radio turn on (from another application), the Network Behavior Modification app piggybacks the data usage, and downloads the image early. The exact time of the download will be displayed in the app. The difference between Fixed Ping and Flex Ping becomes more pronounced when the sample app is tested on a phone that has several apps running (such as an e-mail app, or a social networking app). Testing both of these pinging methods is a very simple example of how queuing/piggybacking data can save large amounts of radio connections, which saves a customer's battery life.

Caching On or Off
The Network Behavior Modification app downloads 8 images from Photobucket. If Caching is turned On, they will each be downloaded once. If Caching is turned Off, they could each be downloaded multiple times.

Close Connections Explicitly
Explicitly closing an HTTP connection can save significant energy resources. When a connection closing is delayed by being left to the operating system, the idle connection is actually restarted before it can close. This restarts the RRC timers and keeps the radio on for longer.

The following figure, taken from the Diagnostic Chart in the Video Optimizer Data Analyzer, shows an explicit and a delayed connection closing.

Figure 2: An explicit and delayed connection closing shown in the Video Optimizer Data Analyzer Diagnostic Chart.

Using the timeline at the bottom of figure 2 as a reference, the vertical lines at 440 seconds shows an image being downloaded and the connection being closed explicitly. The vertical lines at 462 seconds shows an image being downloaded, but the connection closing is delayed until approximately 471 seconds. This causes the RRC timer to reset (the upward sloping red triangle in the chart), and the radio stays on for a longer time (shown by the solid green bar).

The following code example, taken from the Network Behavior Modification app, shows how to close a connection explicitly.
          HttpURLConnection getimage = (HttpURLConnection) urln.openConnection(); 
if (closeconnection == "yes"){     getimage.setRequestProperty("connection","close"); } getimage.connect(); String cachecontrol = getimage.getHeaderField("Cache-Control"); InputStream is = getimage.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(is); if (closeconnection == "yes"){     getimage.disconnect(); }
For more information on analyzing traces captured from apps like the Network Behavior Modification sample app, see Analyzing with Video Optimizer.

8. Help
Need Help with AT&T Video Optimizer?

Our Forum and Support Center can help you get answers to your questions quickly and easily.

For help with an issue that you would like to see resolved, submit a ticket directly to Video Optimizer Support.

AT&T Video Optimizer Documentation
The following documentation is provided to help you use AT&T ARO for testing, analyzing, and optimizing your application.
AT&T Video Optimizer Testing Guide
  • Helps you develop a testing strategy for your application that makes use of Video Optimizer.
  • Provides detailed instructions on how to collect data using the Video Optimizer Data Collector, how to analyze the data in the Video Optimizer Data Analyzer, and contains a complete reference of the tabs, menus, charts, graphs, statistical tables, and error messages in Video Optimizer.
  • Describes each of the suggested best practices tests that are used to evaluate an application, and provides examples to help you interpret the detailed results generated by Video Optimizer.

AT&T Video Optimizer Video Tutorials
The following videos demonstrate how to:
  • Use the test results, diagnostic information, analytical data, and statistics in the Video Optimizer Data Analyzer to get a full analysis of your app.
  • Test your app using the Video Optimizer Data Collector, and collect trace data on various test platforms.
  • Use the in-depth analysis and statistical information in Video Optimizer to optimize your app.
Introduction to Video Optimizer Provides an overview of how Video Optimizer works and describes the value of using Video Optimizer to improve the development process.
Video Optimzier Data Collector Describes the basics of how to use the Video Optimizer Data Collector.
Video Optimizer iOS Collector Shows you how to collect a network trace on an iOS device natively using the Video Optimizer iOS Collector introduced in Video Optimizer release 3.1.
Introduction to the ARO Diagnostic Tab Provides an introduction to the Diagnostic Tab in Video Optimizer, which displays analysis information in the form of an interactive chart that can be used to analyze throughput, uploaded packets, downloaded packets, bursts, user Inputs, Radio Resource Control (RRC) states, and other information.
Video Optimizer Diagnostic Tab Advanced Takes a deep dive into the analysis information displayed in the Diagnostic Tab of the Video Optimizer tool, and shows you how to access features that can help you discover exactly what is happening in your mobile app.
Turbocharge Your Mobile App Provides an in-depth look at why speed is extremely important to the success of mobile apps, describes how Video Optimizer determines your app speed, and gives you specific details of how to optimize your app by closing connections explicitly, caching data, and managing connections.
Application Startup Test Describes the importance of fast start-up times for mobile apps, and shows you how to use Video Optimizer to test, analyze, and optimize the start-up time of your app.
Radio Resource Control (RRC) State Machine Explains how the Radio Resource Control (RRC) State Machine affects mobile devices, and uses Video Optimizer to show you how knowledge of the way the RRC State Machine works can help you optimize your mobile app.

Other Resources
The following resources provide additional references and important background information for issues related to Video Optimizer.
Video Optimizer Testing Guide

The Video Optimizer Testing Guide helps you develop a testing strategy, shows you how Video Optimizer fits into that strategy, explains the test cases in Video Optimizer, and describes the best approach for using them to test your application.

For analysis, the Video Optimizer Testing Guide describes methods for collecting an application trace using the Video Optimizer Data Collector, how to install, launch, and open a trace in the Video Optimizer Data Analyzer, and contains a full reference of the tabs, menus, options, charts, graphs, and statistics in Video Optimizer.

For best practices, the Video Optimizer Testing Guide describes each of the tests that are used to evaluate an application, and provides examples to help you interpret the detailed results generated by Video Optimizer.

AT&T Video Optimizer Testing Guide
This document provides guidance on how to use Video Optimizer to test an application.

9. Release Notes
Video Optimizer Release 1.1 (05/11/17)

Before you download Video Optimizer 1.1, make sure you meet the following system requirements for your operating system.

Video Optimizer 1.1 System Requirements

Before you download Video Optimizer 1.1, make sure you meet the following system requirements for your operating system.

  • At least 2GB of RAM
  • Java 8 or above
  • For Android developers, Android SDK Level 19 or above
  • For iOS developers, use latest version of Xcode
  • WinPcap (Windows)
  • FFmpeg
Video Optimizer 1.1 Features

Release 1.1 extends the features released in the Video Optimizer version 1.0.

Network Attenuator

The Network Attenuator feature supports dynamic attenuation. It lets you add a delay (attenuation) in milliseconds for the download and upload streams. The new enhancement lets you do the following:

  • Apply variable attenuation
  • Apply static attenuation


Variable Attenuation

When a variable attenuation is applied during collection, a preloaded script is used and the attenuation speed changes during the collection. A step chart is displayed on the diagnostic chart for the variable speeds and the values match to the attenuation applied during the collection.


Static Attenuation

The following options are available for static attenuation:

  • Downlink
  • Uplink
  • Downlink and Uplink

A red straight line is displayed for downlink on the diagnostic chart. A blue straight like is displayed for uplink on the diagnostic chart.

Video Best Practices

This release has enhancements to a group of best practice tests that offer guidance on mobile development issues with video. A new tab “Video” is available on the analyzer where all the manifest and the video segments are listed on this tab. A new pop-up window is displayed where all the video segments are listed when the user sets the startup delay. The stalls are automatically detected after the startup delay is set.

Image Best Practices

This release has enhancements to the best practice tests in the area of image format. Video Optimizer converts all the images to WebP format (for Android) or Jpeg2000 format (for iOS) and it gives a “Pass” if there are no savings after the conversion. This best practice will give a “Pass” when there are no images with a savings of more than 15 percent, and a Fail if there is at least one image with more than 15 percent savings when converted.

Android Device Data Capture – CPU Temperature and GPS Events

This release includes Android device data capture and Diagnostic tab correlation, CPU Temperature, and location events.


CPU Temperature

A new option “CPU Temperature” is available under View/Options/CPU Temperature. The thermal temperature of the device is displayed on the diagnostic chart as the CPU Temperature. A green graph is plotted on the diagnostic chart.


GPS/Location events

GPS/location events information is collected from the device and displayed on the diagnostic chart. Active, Standby state is plotted on the graph. Pings are also marked on the diagnostic chart. The following information is available by hovering on the pings:

  • Time
  • Location info
  • Latitude
  • Longitude
  • Locality
  • Provider
Performance Enhancements

This release includes performance-related enhancements such as a faster launch for Video Optimizer and support for bigger traces.

Installation Enhancements

This release includes installation-related enhancements such as the vlcj media player, and an updated help document.


This release includes rebranding of the ARO Command Line Utility and folder structures to the Video Optimizer.

Video Parser Utility (Beta version)

The Video Parser utility significantly broadens the reach of video optimization by supporting different video formats. This tool has the ability to parse any streaming video URL to identify key streaming features using regular expressions. By using this tool, Video Optimizer can perform video stream analysis and allow the user to test any unencrypted stream of video. Different stream types like video on demand vs. live stream often have a different type of profile and characteristics.

What are the known issues in Release 1.1?
  • Network Attenuator
    • When no attenuation is applied, the diagnostics chart displays some irrelevant values.

  • iOS Issues
    • Video Analysis is not available for iOS devices. For this release video analysis is only available for Android.
    • Screen capture is failing while collecting a trace via Command line inertface for iOS devices.
    • A black screen is displayed on the video viewer as soon as the trace is opened instead of an image from the device on which the trace was collected.

  • Android Device Data Capture – CPU Temperature
    • CPU temperature is device dependent.

  • Video Best Practices
    • In line videos are sometimes captured as part of trace analysis and a single segment is displayed on the diagnostics chart. The user is able to select the segment.
    • When there are two manifest files in the video trace, the buffer graph for bytes and seconds are inaccurate.
    • “Show Video viewer” will still be available for traces with no videos and when clicked, it will open the previous trace video but it will not be playable.

  • Video Parser Utility
    • The “search success” message is displayed on top when you launch a new Video Parser Wizard from the menu.
    • In the Video Parser Wizard window, the result section of the wizard does not save the previously chosen XREF options for the data capture group when the next set of capture group is entered.
    • When a user sees a negative segment number, it means that there is no manifest in HLS and no recognized segment number is present in the request.
    • Analyzer is getting stuck while parsing the requests available in the Video requests under the Video tab.

View past release notes

Need Help with Video Optimizer?

Our Forum and Support Center can help you get answers to your questions fast and easy.

            Forum              Support Center