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
  • VLC 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
The 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
    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
    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

      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 Video Optimizer for testing, analyzing, and optimizing your application.
AT&T Video Optimizer Command Line Interface Guide
  • Provides detailed instructions on how to use command line access to make Video Optimizer easier to integrate with other tools.
  • Lists the system prerequisites for using the AT&T Video Optimizer Command Line Interface, tells you how to prepare your device for testing with Video Optimizer, and shows you how to use Video Optimizer from the command line.
  • Includes a complete summary of all the Video Optimizer Command Line Interface commands and error messages.
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.2 (07/28/17)

Before you download Video Optimizer 1.2, make sure that you meet the following system requirements for your operating system:


Video Optimizer 1.2 System Requirements
  • 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
  • VLC media player
  • Wireshark


Video Optimizer 1.2 Features

This release extends the following features to be released with Video Optimizer 1.2:


New video tab

A new table called ‘Video Results Summary’ is available under the video tab and it includes all the chosen video related information such as Stalls, Start-up delay, Buffer occupancy, Segments info, Bytes buffer/Seconds buffer, IP sessions/addresses, Maximum concurrent sessions, TCP connections, Redundancy etc. It also allows to manage and analyze multiple manifest files in the same trace. ‘Start-up delay reminder’ option is now available whenever we have video in the traffic for analysis. ‘Maximum Concurrent sessions’ is another option available in video tab that will display the maximum number of concurrent video sessions.


Network Attenuator

The user can apply cellular network simulation precisely with Throughput which is in ‘kbps’ instead of delay in ‘ms’. Also notification messages are displayed on the phone denoting applied speed. The user is able to create own profile with required values and use it during trace collection.


UI Window for User Configurable Best Practices

This is a new UI added to the tool to help users choose the best practices they want to test against depending on the application type. This option is available under File/preferences and once the selection is made, analysis will apply to the selected best practices. ADB path can be found under preferences instead of File menu. Additionally, we limit the video segments to be displayed in the diagnostics graph only when any of the Video best practices or any of the Image best practices such as Compression, Metadata or Format is selected for analysis.


New Best Practice: Multiple simultaneous connections to one IP range

This is a new best practice added under “Connections” best practices group that reports unnecessary connections. It checks if the multiple connections can be consolidated into one single connection – which would speed up content delivery and leave connection capacity for additional content. Ensuring that your mobile application’s load can be handled by your back-end server is an important test to follow before you launch your service.


Video Parser

Video parser has the ability to parse any streaming video manifest or video URL to identify key streaming features. Using this tool VO can perform video stream analysis and will allow the user to test any non-encrypted stream of video. Streaming apps often change their profile which causes the developers to stop analyzing the application. Different stream types like video on demand vs. live stream often have a different type of profile and characteristics. This makes individual custom coding untenable for long term sustainability of the tool.


DNS packets capture

Video Optimizer will capture all the DNS packets.


Known Issues in Release 1.2


Video Tab

IP addresses/IP Sessions fields in the Video tab will display all the sessions and addresses related to the entire traffic, not particular for the video traffic. Additionally, it doesn’t update when manifest selection changes.
In the Video Results Summary table under Video tab, the values will remain, even if the manifest file(s) is deselected after setting the startup delay. Workaround is for the user to set the start-up delay/reselect the startup delay of a movie they would like to analyze.
The fields ‘Network Comparison’, ‘ IP sessions’, ‘IP Address’ and ‘Mbytes Total’ under the video results summary table are displaying results for all videos regardless of video selection.
For Non-DRM traces, video frame thumbnails are displayed only on a Mac platform. For Windows/Linux we show blobs.


DNS Packets

Analyzer displays DNS packets as UDP.


Miscellaneous issues

Unresponsive UI due to specific traces causing exceptions. Workaround is to restart the application.
Diagnostics tab is sorting the column ‘Remote IP End Point’ alphabetically instead of numerically.


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