How to Record High-Framerate Screen Video on Android Using ADB screenrecord

Android provides a built-in command-line screen capture binary named screenrecord accessible through the Android Debug Bridge (ADB). While the native Android Quick Settings screen recorder is convenient for quick captures, the ADB screenrecord utility grants developers and power users precise control over encoding bitrates, custom resolutions, hardware display targets, and diagnostic metadata overlays. Because encoding runs directly on the device hardware video encoder (OMX/Codec2), capture introduces negligible overhead.

Prerequisites and Environment Setup

Before recording, ensure developer access is configured on the target Android device and host computer:

  • Enable Developer Options by tapping Build Number seven times under Settings > About Phone.
  • Toggle USB Debugging to On under Settings > System > Developer Options.
  • Connect the phone or tablet to your computer via USB and authorize the host computer prompt.
  • Ensure the platform-tools package is installed and accessible in your system path.

Verify that ADB detects your device:

adb devices

Executing a Standard Screen Recording

The basic screenrecord command requires specifying a destination path on the device internal storage (typically /sdcard/):

adb shell screenrecord /sdcard/recording.mp4

The recording begins immediately. To stop capturing, press Ctrl + C in the terminal. The binary finishes writing the MP4 file header and saves the file to the specified device directory.

To transfer the finished video to your computer, use adb pull:

adb pull /sdcard/recording.mp4 ./recording.mp4

To clean up device storage after transferring:

adb shell rm /sdcard/recording.mp4

Configuring Bitrate and Video Quality

By default, screenrecord encodes video at a bitrate of 4 Mbps (4,000,000 bits per second). For high-motion gameplay or fine interface typography, increasing the bitrate ensures crisp video quality without compression artefacts.

Use the --bit-rate flag to set a custom transfer rate up to 24 Mbps (24,000,000 bps):

adb shell screenrecord --bit-rate 16000000 /sdcard/high_quality.mp4

You can also use shorthand mega-bit notation on newer Android releases:

adb shell screenrecord --bit-rate 16M /sdcard/high_quality.mp4

For low-storage captures or documentation sharing, lower the bitrate accordingly:

adb shell screenrecord --bit-rate 2M /sdcard/compressed.mp4

Setting Custom Resolutions and Orientation

By default, screenrecord captures at the device native screen resolution. On 1440p or 4K devices, recording at full resolution can generate large files. The --size flag downscales or rescales the output stream to standard dimensions.

To record in standard 1080p (1920×1080) on a device in portrait orientation:

adb shell screenrecord --size 1080x1920 /sdcard/1080p_capture.mp4

To record in 720p (720×1280) for lightweight bug reports:

adb shell screenrecord --size 720x1280 /sdcard/720p_capture.mp4

To rotate the capture stream 90 degrees counter-clockwise (useful for landscape application testing):

adb shell screenrecord --rotate /sdcard/rotated_capture.mp4

Setting Fixed Time Limits and Diagnostic Overlays

The screenrecord command enforces a maximum continuous duration of 180 seconds (3 minutes) by default to prevent storage exhaustion. You can set a custom duration in seconds using the --time-limit flag.

To automatically capture a 30-second benchmark or animation run:

adb shell screenrecord --time-limit 30 /sdcard/30sec_test.mp4

When diagnosing software bugs or rendering lag, enable the --bugreport flag. This embeds two visual diagnostic layers:

  • A semi-transparent visual frame at the top displaying time, frame number, and hardware timestamps.
  • Visual tracking markers highlighting frame drops and encoder delays.
adb shell screenrecord --bugreport --time-limit 45 /sdcard/bug_session.mp4

Targeting Secondary and Foldable Displays

Modern Android foldables, automotive head units, and desktop emulation modes (such as Samsung DeX) utilize multiple virtual or physical display panels. The --display-id flag allows recording secondary screens.

First, list all active display IDs via dumpsys SurfaceFlinger:

adb shell dumpsys SurfaceFlinger --display-id

Once you identify the secondary display ID (for example, display ID 1 for an external monitor or outer cover screen):

adb shell screenrecord --display-id 1 /sdcard/secondary_screen.mp4

Automating adb shell screenrecord inside testing scripts provides a reliable method to document automated UI tests, benchmark animation fluidness, and produce clean video guides directly from the Android graphics pipeline.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.