Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
1e3329b
WIP: recording
todi1856 Sep 29, 2026
01c3eef
Merge remote-tracking branch 'origin/master' into livestream-video
todi1856 Oct 22, 2026
9d4f02d
apply review fixes
todi1856 Oct 23, 2026
e39845f
try making seek
todi1856 Oct 23, 2026
9438fa1
fix seeking while paused
todi1856 Oct 23, 2026
147a375
fix play after seeking
todi1856 Oct 23, 2026
0bea531
remove length
todi1856 Oct 23, 2026
0dd55f1
don't start automatically
todi1856 Oct 23, 2026
5aa696c
use state changing
todi1856 Oct 23, 2026
a5b3cc7
add seeking by 1 frame
todi1856 Oct 23, 2026
5690249
still try to make see work
todi1856 Oct 23, 2026
5ef7377
tests
todi1856 Oct 23, 2026
0b8b944
fix tests
todi1856 Oct 23, 2026
627b507
split logic
todi1856 Oct 23, 2026
2a870c9
clear button
todi1856 Oct 23, 2026
86cb58d
fix seeking
todi1856 Oct 23, 2026
596cfaf
Add test recording for the video player tests
todi1856 Oct 23, 2026
9d58996
Use different name for video tests
todi1856 Oct 23, 2026
54b9034
remove
todi1856 Oct 23, 2026
abb254d
delete
todi1856 Oct 23, 2026
ff9ef31
remove m_PreviewIsVideo
todi1856 Oct 26, 2026
f042fc8
Flash video instead of switching to it
todi1856 Oct 26, 2026
46ed651
disable capture list while video is being taken
todi1856 Oct 26, 2026
adaf11f
Consolidate into AllocateCapturePath
todi1856 Oct 26, 2026
56c2e18
docs
todi1856 Oct 26, 2026
266f247
improve drag
todi1856 Oct 26, 2026
05efe53
apply review
todi1856 Oct 28, 2026
17ae9a1
add tests for 0 frame video
todi1856 Oct 28, 2026
28c7c57
fix tests
todi1856 Oct 28, 2026
5b19ccc
more fixes
todi1856 Oct 28, 2026
981d648
better comment
todi1856 Oct 28, 2026
f62f0e2
Add a way to manually capture recording
todi1856 Oct 29, 2026
b296dfe
show recording gui
todi1856 Oct 29, 2026
1250889
optmize recording
todi1856 Oct 29, 2026
6c9bdd8
switch to constant frametime
todi1856 Oct 29, 2026
71a2453
Support rotation
todi1856 Oct 29, 2026
1398c06
get rid of screenrecord and use static frames
todi1856 Oct 29, 2026
07da047
remove unused
todi1856 Oct 29, 2026
dfb177e
widen the box
todi1856 Oct 29, 2026
5ede199
show framerate
todi1856 Oct 29, 2026
f0fbd38
allow recordings of 60 fps
todi1856 Oct 29, 2026
f7e1b7e
add missing references
todi1856 Oct 30, 2026
a34f2c4
Add profiler markers
todi1856 Oct 30, 2026
b36b394
add UnityEngine.TypeRegistryModule
todi1856 Oct 30, 2026
84b7f69
add max recording time + handle script reload on recording
todi1856 Oct 30, 2026
d75215b
apply review
todi1856 Oct 30, 2026
5a1faba
fix
todi1856 Oct 30, 2026
3f779e8
tweak developer mode UI
todi1856 Oct 30, 2026
e2e050f
Preserve video/screenshot selection after domain reload
todi1856 Oct 30, 2026
1090ca4
Fix being stuck on domain reload
todi1856 Oct 30, 2026
e9da491
apply review
todi1856 Oct 30, 2026
62463fe
apply fixes
todi1856 Oct 30, 2026
e9f84ae
restore zoom after domain reload
todi1856 Oct 30, 2026
e301374
restore zoom for live view after domain reload
todi1856 Oct 30, 2026
e2cef57
Add context menu for zoom badge
todi1856 Oct 30, 2026
e407608
make badge more visible
todi1856 Oct 30, 2026
6fd7192
respect device rotation when recording
todi1856 Oct 30, 2026
63b06b9
Add ability to capture squared videos
todi1856 Oct 30, 2026
547e27d
record display changes
todi1856 Oct 30, 2026
54638bd
Clip video, respect display & content
todi1856 Oct 30, 2026
9148ea1
better tooltip for square video
todi1856 Oct 30, 2026
cc42acf
add record touches functionality
todi1856 Oct 30, 2026
8386b10
use different colors for touch actions
todi1856 Oct 30, 2026
af3a26e
apply fix with test
todi1856 Oct 30, 2026
0ca3b08
reformat
todi1856 Oct 30, 2026
502ef21
fixate width for details ui
todi1856 Oct 30, 2026
294f36a
update docs
todi1856 Oct 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,5 @@
*.ttf binary
*.pdf binary
*.xcf binary
*.ico binary
*.ico binary
*.mp4 binary
2 changes: 2 additions & 0 deletions com.unity.mobile.android-logcat/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- The details beside a selected screenshot show the device, its Android version and display size, along with the image size, the file size and when it was captured. The device details read `Undefined` for a screenshot saved without them.
- The screenshot and the live view can be zoomed with Ctrl+Wheel (Cmd+Wheel on macOS), and the zoomed image moved with a Ctrl+middle mouse button drag or with the scrollbars that appear.
- The device screen can be viewed live from the Screen Capture window: select the "Live" row at the top of the screenshot list. Clicks, drags, the scroll wheel and typing are sent to the device as touch, scroll and key events, and Ctrl+A, Ctrl+C and Ctrl+V (Cmd on macOS) select all, copy and paste on the device using its own clipboard, and Back / Home / Overview buttons sit beside the image with the stream details.
- Screen recordings are now made from the live view, with **Take Recording** in the live view, instead of with `adb screenrecord`. They are saved as constant frame rate MP4 files beside the screenshots, at the live stream's **Max Frame Rate** (up to 60 fps), and follow the live view's rotation. A recording stops on its own after the **Time Limit** set in Preferences (10 minutes by default, up to 60). Recording is not available on Linux.
- Recordings can be played in the Screen Capture window, with play/pause, a time slider and buttons that step one frame back or forward.
- Tools->Open Terminal is now supported on Linux Editor.
- Fixed Tools->Open Terminal not opening a window on Windows Editor when running on CoreCLR.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ To open the Android Logcat Settings window in the Unity Editor, go to **Edit** >
* [Memory Window](#memory-window)
* [Packages](#packages)
* [Capture Settings](#capture-settings)
* [Recording](#recording)
* [Live Stream](#live-stream)
* [Stacktrace Regex](#stacktrace-regex)
* [Symbol Extensions](#symbol-extensions)
Expand Down Expand Up @@ -64,15 +65,23 @@ The default, `AndroidLogcat/Captures`, is a folder in your project, beside `Asse

Changing the folder takes effect immediately. Unity doesn't move existing captures to the new folder: they stay in the old folder, and the [Capture list](screen-capture-window-reference.md#capture-list) displays only the captures in the new folder. To keep using earlier captures, move them to the new folder yourself, together with their `.json` files.

### Recording

|**Setting**|**Description**|
|---|---|
|**Time Limit (minutes)**|Specifies how long a recording runs before it stops on its own, between 1 and 60 minutes. The default value is 10.|
|**Square Video**|Records a square video, as wide and tall as the longest side of the stream, so turning the device or unfolding a foldable keeps the picture at full size. When disabled, the video is the size of the screen when recording starts, and a turned or unfolded screen is scaled down to fit. Enabled by default.|
|**Record Touches**|Saves the clicks and drags you send from the live view with a recording. When the recording plays in the Screen Capture window, a marker shows where the screen was touched: green when pressed, blue while dragging, and white, fading, once released, or red if the touch was cancelled. Other video players don't show the markers. Enabled by default.|

### Live Stream

Use the **Live Stream** settings to control the [live view of the device's screen](screen-capture-live-stream.md). Streaming a display uses the device's CPU to compress each frame and the connection to your computer to carry it, so these settings trade image quality for both.
Use the **Live Stream** settings to control the [live view of the device's screen](screen-capture-live-stream.md). Recordings are made from the live view, so these settings also set the size and quality of a recording. Streaming a display uses the device's CPU to compress each frame and the connection to your computer to carry it, so these settings trade image quality for both.

|**Setting**|**Description**|
|---|---|
|**Max Size**|Specifies the longest side of the streamed image in pixels, between 256 and 2048. The device's display is scaled down to fit. The default value is 1024.|
|**JPEG Quality**|Specifies the quality of each streamed frame, between 1 and 100. Lower values produce smaller frames and use less bandwidth. The default value is 70.|
|**Max Frame Rate**|Specifies the highest number of frames per second the device sends, between 1 and 120. The device only sends a frame when its screen changes, so this is a limit rather than a rate. The default value is 30.|
|**Max Frame Rate**|Specifies the highest number of frames per second the device sends, between 1 and 60, and the frame rate recordings are made at. The device only sends a frame when its screen changes, so this is a limit rather than a rate. The default value is 30.|

These settings apply when a stream starts. To apply them to a stream that is already running, turn **Live** off and on again in the [Device Screen Capture window](screen-capture-window-reference.md#capture-list).

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@ This page explains how to use the [Screen Capture tool](screen-capture.md) to ca

1. Open the [Device Screen Capture window](screen-capture-window-reference.md).
2. In the [Toolbar](screen-capture-window-reference.md#toolbar), use **Device Selector** to specify the device to take a screenshot of.
3. Set **Screen Capture Mode** to **Screenshot**.
4. In the [Capture list](screen-capture-window-reference.md#capture-list), select **Live**, then select **Take Screenshot** in the [Live view details](screen-capture-window-reference.md#live-view-details). Alternatively, press **Ctrl+Shift+S** (macOS: **Cmd+Shift+S**) while the live view displays. The Screen Capture tool takes a screenshot of the connected device, displays it in the [Capture preview](screen-capture-window-reference.md#capture-preview), and adds it to the list.
5. To save a copy of the screenshot elsewhere on your computer, right-click its row in the Capture list, select **Copy To...**, and use the file explorer to choose the location. To copy several screenshots into one folder, select them first and then right-click.
3. In the [Capture list](screen-capture-window-reference.md#capture-list), select **Live**, then select **Take Screenshot** in the [Live view details](screen-capture-window-reference.md#live-view-details). Alternatively, press **Ctrl+Shift+S** (macOS: **Cmd+Shift+S**) while the live view displays. The Screen Capture tool takes a screenshot of the connected device, displays it in the [Capture preview](screen-capture-window-reference.md#capture-preview), and adds it to the list.
4. To save a copy of the screenshot elsewhere on your computer, right-click its row in the Capture list, select **Copy To...**, and use the file explorer to choose the location. To copy several screenshots into one folder, select them first and then right-click.

Every screenshot you capture is kept, so you don't have to save one before taking the next. Screenshots are named `<device id>_<number>.png` and are stored in your project, in `AndroidLogcat/Captures`, unless you set [Captures Folder](android-logcat-settings.md#capture-settings) to another folder. The default folder is outside `Assets` and isn't part of your build, so use **Copy To...**, or a captures folder of your own, for a screenshot you want to share.

Each screenshot is saved with a `.json` file of the same name beside it. The `.json` file records the device the screenshot came from and when it was captured. The device information includes the device name, ID, Android version, API level, ABI, and display size. The [Screenshot details](screen-capture-window-reference.md#screenshot-details) beside the image display this information. When you rename, delete, or copy a screenshot, the Screen Capture tool renames, deletes, or copies its `.json` file too, so a copy you save elsewhere still records the device it came from. A screenshot without a `.json` file still opens, and its device details display `Undefined`.
Each screenshot is saved with a `.json` file of the same name beside it. The `.json` file records the device the screenshot came from and when it was captured. The device information includes the device name, ID, Android version, API level, ABI, and display size. The [Capture details](screen-capture-window-reference.md#capture-details) beside the image display this information. When you rename, delete, or copy a screenshot, the Screen Capture tool renames, deletes, or copies its `.json` file too, so a copy you save elsewhere still records the device it came from. A screenshot without a `.json` file still opens, and its device details display `Undefined`.

To rename or delete a screenshot, or to show it in Explorer or Finder, use the [Capture list](screen-capture-window-reference.md#capture-list). To look at part of a screenshot more closely, [zoom into it](screen-capture-window-reference.md#zoom-into-the-image).

Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,26 @@
# Capture a video

This page explains how to use the [Screen Capture tool](screen-capture.md) to capture a video of the connected device's screen and save it as a file on your computer.
This page explains how to use the [Screen Capture tool](screen-capture.md) to record the connected device's screen.

1. Open the [Device Screen Capture window](screen-capture-window-reference.md).
2. In the [Toolbar](screen-capture-window-reference.md#toolbar), use **Device Selector** to specify to device to take a screenshot of.
3. Set **Screen Capture Mode** to **Video**.
4. Select **Capture**. The Screen Capture tool begins to capture a video of the connected device's screen.
5. When you want to finish the video, select **Stop**. The Screen Capture tool finishes capturing the video and displays it in the [Capture preview](screen-capture-window-reference.md#capture-preview).
6. Select **Save As** and use the file explorer to save the video file to your computer.
2. In the [Toolbar](screen-capture-window-reference.md#toolbar), use **Device Selector** to specify the device to record.
3. Select **Live** in the [Capture list](screen-capture-window-reference.md#capture-list) to view the device's screen.
4. Select **Take Recording** in the [Live view details](screen-capture-window-reference.md#live-view-details). The Screen Capture tool begins to record the device's screen, and the button becomes **Stop Recording**.
5. Select **Stop Recording** to finish. The recording is added to the [Capture list](screen-capture-window-reference.md#capture-list), and its row is briefly highlighted. Select the row to open it in the [Capture preview](screen-capture-window-reference.md#capture-preview). The Capture list is disabled while recording. Closing the window also stops the recording.
6. To keep a copy elsewhere, right-click the recording's row and select **Copy To...**.

Recordings are stored beside screenshots, in the folder set by [Captures Folder](android-logcat-settings.md#capture-settings), and are named `<device id>_<number>.mp4`.

A recording is made from the live view, so it shows the view as it is turned. The video is square, as wide and tall as the longest side of the stream, so turning the device, or unfolding a foldable, keeps the picture at full size. The rest of the square is black. To record at the size of the screen instead, disable **Square Video** in the [Recording settings](android-logcat-settings.md#recording). To record at a larger size or a higher quality, raise **Max Size** and **JPEG Quality** in the [Live Stream settings](android-logcat-settings.md#live-stream). Recordings play at the **Max Frame Rate** of the Live Stream settings, 30 frames per second by default. A higher rate records fast movement more smoothly, but costs more Editor time, and at a large **Max Size** the device may not deliver frames that fast. The device only sends a frame when its screen changes, so while the screen is still, the recording repeats the last frame. A recording stops on its own after the **Time Limit** in the [Recording settings](android-logcat-settings.md#recording), 10 minutes by default. It also stops, and is saved, when Unity reloads scripts, for example after a script is changed.

## Details

* When recording a video, the Screen Recorder Tool doesn't capture sound.
* The Screen Recorder Tool uses Unity's video player for the video preview. If your operating system is Windows, you might see `WindowsVideoMedia` warnings in the Editor console. This is because the video is not processed.
* If the entire video contains a static image, the video only contains one frame and the length of the video will be zero.
* Recording uses the Editor to encode the video, which takes some of its time while a recording runs. A larger stream costs more.
* The Linux Editor can't record, or play recordings back, because it doesn't support H.264 video.
* On Chrome OS, you can only capture the video from the sandboxed app which is the one you install manually via adb or Unity. You can't capture video from the desktop or from built-in apps.

## Additional resources

* [Device Screen Capture window reference](screen-capture-window-reference.md)
* [Capture a screenshot](screen-capture-screenshot.md)
* [Capture a screenshot](screen-capture-screenshot.md)
Loading