Who is this for?

This is an introductory topic for developers who want to measure resource usage of applications on Windows on Arm devices using FFmpeg.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Measure application resource usage using FFmpeg and PowerShell
  • Benchmark a video encoding task
  • Monitor CPU, memory, and power consumption during a video decode task

Prerequisites

Before starting, you will need the following:

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll use FFmpeg and PowerShell on Windows on Arm to compare native Arm64 and emulated x86_64 video workloads. First, you’ll encode a test video, then run scripts that sample CPU, memory, and battery data during decoding. You’ll save the measurements to CSV files and repeat the runs with each FFmpeg build to make side-by-side comparisons.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
Which FFmpeg executable should I pass to the scripts for Arm64 versus x86_64?
Set the exePath parameter to the specific FFmpeg or FFplay binary that you want to run. Use the Arm64-native build for Arm execution, or point to an x86_64 build to run under Windows instruction emulation.
How do I know the resource monitoring script is recording data?
While the decode task runs, the script writes samples to a CSV file. Check that the CSV file appears and grows over time, and that it contains headers and rows with CPU and memory values.
What should I check if FFmpeg fails to encode or decode the sample video?
Verify the input and output file paths and confirm the arguments match the media you’re using. Ensure exePath points to a valid FFmpeg or FFplay binary and review the console output for specific errors.
Where does the script save the CSV files and what should be in them?
The output file name and path are defined in each script. Open the script to confirm or change the location. Expect timestamped rows with the recorded metrics, such as CPU and memory for resource sampling, or battery-related fields for power sampling.
How do I run a like-for-like comparison between the Arm64 and x86_64 builds?
Use the same media file, the same command arguments, and the same sampling settings for both runs. Point exePath to each build in turn and compare the resulting CSV files.
Next