AVPro Movie Capture User Manual

AVProMovieCapture-UserManual

AVProMovieCapture-UserManual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 51

DownloadAVPro Movie Capture-User Manual
Open PDF In BrowserView PDF
AVPro Movie Capture

Unity plugin for real-time capture and
off-line rendering to AVI/MP4/PNG file

Version 3.6.8
Released 1 November 2018

Contents
1.
2.
3.
4.

Introduction
Features
System Requirements
Installation
4.1 Upgrade Notes
5. Codecs & Containers
5.1 Lagarith Codec
5.2 x264 Codec
5.3 Xvid Codec
5.4 MagicYuv Codec
5.5 Media Foundation H.264 Codec
5.6 AVI File Container
5.7 MP4 File Container
6. Usage
6.1 In-Editor Capture
6.2 In-Game Capture
6.3 Real-time Capturing
6.4 Offline Rendering
6.5 Webcam Recording
7. Components
8. Scripting
8.1 Basics
8.2 Custom Use
9. Tips
10. Support
11. About RenderHeads Ltd
11.1 Services
11.2 Our Unity Plugins

Appendix A - FAQ
Appendix B - Version History
Appendix C - Road Map

2 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

1. Introduction
AVPro Movie Capture is a plugin for Unity that allows real-time and off-line recording video
and audio, directly to disk as an AVI / MP4 / PNG file.

In-editor capturing

In-game capturing
In the past we used screenshots and captured videos using tools like Fraps, however we
wanted something completely integrated into Unity and so AVPro Movie Capture was born.

3 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

The asset package consists of the following elements:

●

Demo Scenes
○ ScreenCaptureDemo.unity - A simple demo showing how to use the
CaptureFromScreen component.
○ AlphaCaptureDemo.unity - A simple demo showing how to use the
CaptureFromCamera component to capture transparency.
CameraCaptureDemo.unity - A simple demo showing how to use the
CaptureFromCamera component.
4 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

○

●

●

●

●

Camera360CaptureDemo.unity - A simple demo showing how to use the
CaptureFromCapture360 component.
○ Camera360StereoCaptureDemo.unity - A simple demo showing how to use
the CaptureFromCapture360ODS component.
○ TextureCaptureDemo.unity - A simple demo showing how to use the
CaptureFromTexture component.
○ WebcamCaptureDemo.unity - A simple demo scene showing how to use the
CaptureFromTexture component to capture from WebCamTexture.
Plugins
○ AVProMovieCapture.dll - The native low-level plugin DLL for 32-bit and
64-bit Windows.
Component Scripts
○ CaptureFromScreen.cs - Drag ‘n drop component to allow easy capturing of
the entire scene including IMGUI.
○ CaptureFromCamera.cs - Drag ‘n drop component to allow easy capturing
from a camera but not IMGUI.
○ CaptureFromCamera360.cs - Drag ‘n drop component to allow easy
capturing from a camera in 360 degree equirectangular format, without
capturing any IMGUI.
○ CaptureFromTexture.cs - Drag ‘n drop component to allow easy capturing of
a dynamic texture.
○ UnityAudioCapture.cs - Drag ‘n drop component for capturing Unity audio
into a buffer for saving to the AVI file.
○ CaptureGUI.cs - Helper component that displays a GUI exposing the capture
options of CaptureBase
○ MotionBlur.cs - Utility component used to accumate motion blur.
○ MouseCursor.cs - Utility component to draw software cursor for cursor
capture
Editor Scripts
○ Various scripts to handle the drawing of the CaptureFromX components
○ CaptureEditorWindow.cs - Created an in-editor Window for capturing
directly from Unity without adding any components to your scene.
Internal Scripts
○ NativePlugin.cs - Wrapper interface to access capture functions in the DLL.
○ CaptureBase.cs - Base class

5 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

2. Features
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●

*NEW* Capture to PNG image sequence
Very easy to use
Optimised for high performance
Real-time capture and offline rendering
Rendering to 8K resolution
Works in the editor and also in standalone builds
Use any video codec you want
Equi-rectangular capture for 360 degree VR (mono and stereo)
Equi-rectangular capture for 180 degree VR (mono and stereo)
Omni-directional stereo (ODS) support for VR renders
Motion blur rendering
Linear and Gamma colour-spaces supported
Can capture alpha channel for creating transparent videos
Records audio directly from Unity or from a Windows recording device
Free version which allows up to 10 seconds per capture

3. System Requirements
●
●
●
●
●
●
●

Unity Pro 4.6 and above
Unity 5.0 and above
Unity 2017.1 and above
Unity 2018.1 and above
Desktop Microsoft Windows platform (32-bit and 64-bit)
Windows XP SP3 and higher
Codecs for any video formats you want to record to

3.1 Platforms not Supported
●
●
●
●
●
●
●

WebGL
WebPlayer
Mobile: Android, iOS, Windows Phone
Mac
Linux
Windows Store Apps (Note: Windows Metro apps don’t support DirectShow which
this plugin is built upon. This plugin only supports Windows desktop apps)
PS4 / XBox / Switch

6 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

4. Installation
1. Import the unitypackage file into your Unity project.
2. Ensure you have the relevant codecs installed for the formats you want to record to.

4.1 Upgrade Notes
If you are upgrading from a previous version, you must make sure Unity doesn’t already
have the DLL plugin files loaded, otherwise they will not be updated. The best way to do this
is:
1. Close all Unity instances
2. Open your project in a fresh Unity and import the new unitypackage immediately

4.2 Unity 4.x Install Differences
Unity 4.x has some different requirements for folder structure compared to Unity 5.x and
2017.x.
In Unity 4.x all native plugins (DLL, SO files) must be in Assets/Plugins folder

7 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

5. Codecs & Containers
AVPro Movie Capture doesn’t include any codecs and so relies on the codecs that are
already installed on your machine. Windows comes with a few codecs already, but most of
them are not ideal for real-time capture. You can install additional codecs on your machine..
Codec types supported:
● Microsoft DirectShow
○ All DirectShow codecs are supported
● Legacy VFW (Video for Windows)
○ All VFW codecs are supported
● Microsoft Media Foundation
○ We don’t yet support all MF codecs
○ The Microsoft H.264 video encoder is supported:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd797816(v=vs.85)
.aspx

8 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

There are many codecs out there, each with their own pros and cons. Some codecs are
great for real-time encoding, some are lossless and some achieve tiny file sizes using
expensive compression, so it is important to consider which codec you use and configure
them correctly for your needs.
Third-party codecs we recommend:
Codec

Real-time

Loss-less

File Size

Alpha Channel

Lagarith

Yes

Yes

Large

Yes*

MagicYUV

Yes

Yes

Large

Yes*

x264

Yes*

Yes*

Small - Medium

No

Xvid

Yes

No

Medium

No

* after configuring the codec
5.1 Lagarith Codec
Download from: http://lags.leetcode.net/codec.html
Lagarith is a great general purpose codec. It’s fast enough for real-time (due to great
multi-threading) and lossless. Naturally the files it generates are very large and not suitable
for sharing. We use Lagarith as an intermediate codec for real-time capturing and then
re-encode to something else like H.264 MP4 offline.
Always check your codec settings. You can do this directly in the plugin via the Configure
button, or in 3rd party software like Virtualdub (video > compression menu). Recommended
settings:
●
●

Enable “Use Multithreading”
Set Mode to RGB or RGBA if you need to capture alpha channel

Recommended Lagarith Settings

9 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

5.2 MagicYUV Codec
Download from: http://magicyuv.com/

MagicYUV is another fast codec for real-time capture.

5.3 x264 Codec
Download from: http://sourceforge.net/projects/x264vfw/
x264 is a highly tunable codec and suits almost any need. By default it’s set up for off-line
processing which produces tiny files but generally uses way too much CPU for real-time
capture. We tweak x264 for real-time capture and use it to directly generate video files
suitable for sharing. x264 can also be used with an MP4 muxer to generate MP4 files
instead of AVI files (see FAQ).
Always check your codec settings. You can do this directly in the plugin via the Configure
button, or in 3rd party software like Virtualdub (video > compression menu). Recommended
settings:
●
●
●
●
●
●

Preset: Fast/Veryfast/Superfast
Enable “Fast Decode”
Set “Ratefactor” to your desired quality level
Enable “VirtualDub Hack”
Set Debug “Log level” to None
Checking ‘Zero Latency’ can help with AV sync and also improve cross-platform
playback (for some reason).

Note: You may have to run this configuration twice - once for the 32-bit x264 config, and
again for the 64-bit x264 config. These settings are separate for 32bit and 64bit so if you’re
running 64-bit Unity it will use the 64-bit settings, but then if you build a 32-bit standalone
app it will use the 32-bit settings - so it is often best to just build the same “bitness” so you’re
using in Unity editor to avoid such confusion.

10 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

Recommended x264 settings for real-time capture
5.4 Xvid Codec
Download from: http://www.koepi.info/xvid.html
This codec is a bit old now, but if you want to use Xvid make sure to disable the option
“Display encoding status” under “Other options”.

11 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

Recommended Xvid settings for real-time capture

5.5 Media Foundation H.264 Codec
This codec is very useful if you want to quickly create shareable MP4 videos. It requires
Windows 7. Currently we don’t expose any options for this codec but these will be added in
the future.
5.6 AVI File Container
AVPro Movie Capture supports the AVI file container by default. AVI is a useful container for
capturing but isn’t ideal for sharing as it isn’t so well supported outside of Windows. AVI also
doesn’t properly support codecs with B-frames (such as H.264 / H.265). We find AVI a
useful intermediate container for captures and rendering.

5.7 MP4 File Container
The MP4 container must be the most widely supported file container, so it’s perfect for
sharing. AVPro Movie Capture does support writing to the MP4 container but there are

12 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

currently some limitations. If you’re using Windows 7 or above and you select the Media
Foundation H.264 codec, then you can write directly to MP4. If you want to use the x264
DirectShow codec and you want to write to MP4 then you must install a third-party splitter
(see FAQ).

13 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

6. Usage
6.1 In-Editor Capture
The editor components allow you to quickly and easily capture videos directly from inside the
Unity editor without modifying your scene. Simply open the AVPro Movie Capture editor
window:

You can now add this UI panel to your editor layout to allow one-click video captures, or
open and close it as needed.

In-editor capture window
This panel allows you to configure your recording options and codecs. All settings are

14 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

remembered between sessions so once it has been configured once you only need to press
the “Start Capture” button. Once a capture starts the statistics of the capture, capture
progress and controls are presented.

In-Editor capture session controls

6.2 In-Game Capture
You can add one of the components (CaptureFromScreen, CaptureFromCamera etc) to your
scene and trigger them to record directly from your game. This works in the editor and
standalone builds.

Components in the “Add Component” button
You can read more about these components in the next section.
15 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

6.3 Real-time Capturing
For real-time capturing the most important consideration is the codec choice. A codec
needs to be selected that is very fast so that it doesn’t affect the frame-rate of the game /
app being captured.
Lagarith and x264 codecs can be good choices for this and must be configured correctly.
The Microsoft H.264 codec can also work well. All codecs are software based, so doing
real-time 4K captures will require a powerful CPU. For high resolution captures it may be
better to use the offline rendering option.

6.4 Offline Rendering

For visuals that don’t require real-time input (cut-scenes, procedural / sequenced animations
etc) you have the option to record in offline/non-realtime mode. This mode allows you to
capture every frame of animation even if the playback runs very slowly and allows you to
capture to any desired frame rate.
For example you may have a mega complex/detailed sequence that renders very slowly in
Unity. You can use offline recording to render this to a 60fps video.
Offline rendering isn’t suitable for anything that requires real-time input.
Since this type of rendering can take a while, you can use the Auto Stop option to set how
many frames / seconds you want it to render for.
6.5 Webcam Recording
AVPro Movie Capture includes a demo scene that shows how to easily record a Unity
webcam to video file. It uses the CaptureFromTexture component as Unity’s
WebCamTexture is just a normal texture. If you want to capture the audio as well, make
sure to select the microphone, or leave the audio device index as -1 to use the default
microphone. Note that currently the H.264 MP4 codec doesn’t support microphone audio
and so the x264 codec must be used.

16 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

7. Components
7.1 CaptureFrom Components
The main components are all prefixed with “CaptureFrom”. They all share common settings:

●

Capture Mode
○ Selects between real-time capture or offline rendering mode

Start / Stop
●
●

●
●

Capture On Start
○ When this GameObject starts, make capture start immediately
Start Paused
○ When the capture starts, pauses it immediately. This allows the expensive
setup of the capture to be done ahead of time so that capturing simply
requires a call to Resume() to unpause the capture
Capture Toggle Key
○ Select a key to toggle the start and end of capturing
Stop Mode
○ Without a stop mode the capture will continue forever until it is stopped by the
user or script
○ You can set a stop mode to make the capture stop when it reaches either a
certain number of frames, or a duration in seconds

Output
●

Output Type

17 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

●
●

○ Select if you want to output to a video file, or a named pipe (see FAQ)
Folder
○ Select the folder to output to
File Name
○ Select the file name to output to, or set it to be auto generated
○ Be sure to set the correct file extension (avi or mp4)

Visual
●
●
●
●

●

●

●

Down Scale
○ Reduce the size of the final output
Frame Rate
○ The frame rate per second for output file
Flip Vertically
○ Flip the output image vertically (debug only)
Support Alpha
○ Enable if you want to export transparency. This will require that you use a
codec that supports alpha channel. Note that the CaptureFromScreen
component doesn’t support alpha. Unity doesn’t always render alpha (it is not
a compositing package), so you may need to use custom shaders on your
geometry to get the expected results
Use MF H.264 MP4 Codec
○ This option uses the Media Foundation H.264 codec. This requires that you
set the file extension to “mp4”.
Codec Search Priority
○ Allows you to list the names of codecs to search for. The first codec in the list
that it finds installed on the system will be the one used for encoding. This is
useful if you are deploying an app to a system you don’t have codec control
over so that it can look for a number of codecs before finally falling back to
uncompressed. If you want uncompressed simply add a blank entry to the list
Force Video Codec Index
○ Allows you to override the search priority list and select a codec directly by
index
18 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

●

Motion Blur
○ This is an experimental option which is available for offline rendering. It
accumulates frames in between the capture frames to create motion blur.
This is very useful for high quality rendering but it is very expensive as it is a
brute force approach to motion blur.

Audio
●

●

●

●

Capture Audio
○ Toggle to capture audio or not. It’s best for performance to only capture audio
when you need it
Audio Codec Priority
○ Allows you to list the names of codecs to search for. The first codec in the list
that it finds installed on the system will be the one used for encoding. This is
useful if you are deploying an app to a system you don’t have codec control
over so that it can look for a number of codecs before finally falling back to
uncompressed. If you want uncompressed simply add a blank entry to the list
Force Audio Codec Index
○ Allows you to override the search priority list and select a codec directly by
index
Force Audio Device Index
○ Set to -1 to just use the default microphone recording device, otherwise you
can set it to the index to select another device

Misc
●

●

●

Capture Mouse Cursor
○ This option is only aavilable when using the CaptureFromScreen component
and allows the mouse cursor to be captured. You have to specify a texture to
use for the cursor.
Minimum Disk Space MB
○ Set to -1 to ignore, otherwise it will keep checking the disk space and stop the
capture if the free disk space gets below this number of MB.
List Codecs On Startup
○ If this is enabled all of the videc codecs, audio codecs, and audio recording
19 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

devices will be logged to the console. This can be useful to see what
codecs/devices are available.
7.2 CaptureFromScreen Component
This is the preferred component for capturing as it simply captures everything on the screen
(backbuffer), including UI and IMGUI. The hardware mouse cursor is the only thing not
captured, but this component has an option to capture the mouse cursor by drawing it using
IMGUI.

To use, just add the component to any GameObject in your scene and configure the
component.
7.3 CaptureFromCamera Component
This component captures the rendering of a Unity camera (including post effects and uGUI).
IMGUI is not captured (for this you have to use CaptureFromScreen component). You can
capture from a single camera, or from multiple cameras if you have several cameras in your
scene that contribute to the final camera rendering. This component allows you to render at
a higher resolution than the app is running at, including 8K output (if the codec supports this
resolution).

20 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

To use, just add this component to any GameObject and assign which Camera it should
render.
If you want to render from multiple contributing cameras, select the “Use
Contributing Cameras” option, and then either manually add the cameras to the list or use
the “Find Contributing Cameras” button to fill automatically. The cameras must be listed
from first (lowest depth value) to last (highest depth value) rendering order.

7.4 CaptureFromCamera360 Component

This components allows you to capture full 360 degree views of your scene in
equi-rectangular format suitable for viewing in VR.

21 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

This component works by rendering to 6 faces of a cubemap (so 6 renders of the scene per
frame) and then resolving the cubemap into the final equi-rectangular image. Options are:
●
●
●
●
●
●

●

●

●

Camera
○ The camera to render from
Resolution
○ The resolution of the final output (before downscale)
Anti-aliasing
○ Anti-aliasing to use during rendering
Cubemap Resolution
○ The resoluton of the cubemap faces used during rendering
Cubemap Depth
○ The bit-depth of the cubemap used during rendering
Capture GUI
○ Whether or not this cubemap renderer needs to capture GUI or not.
Capturing GUI requires a slightly slower rendering path
Support Camera Rotation
○ Whether or not this capture needs to support camera rotation. Doing so
requires a slightly slower rendering path, but it is by default enabled
Stereo Rendering
○ Optionally you can select to create a stereo output in either top-bottom or
left-right packing formats. The left eye is always rendered first (top / left).
Note that this method of stereo rendering is just a fast approximation. For
higher quality stereo the ODS component should be used, but it is much
much slower.
Interpupillary Distance (IPD)
○ The distance between the pupils. This is set to 0.064 which is the standard
for an american male adult. You may wish to alter this if creating content for a
wide range of users and quality is important. This value is in meters and
assumes a scale of 1 unit = 1 meter.

22 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

7.5 CaptureFromCamera360ODS Component

This component allows accurate rendering of stereo 360 scenes to equi-rectangular format
via a technique called Omni-Directional Stereo (ODS) and based on this paper:
https://developers.google.com/vr/jump/rendering-ods-content.pdf

This component takes a very long time to render each frame and is only suitable for offline
rendering. This is due to the complex rendering method, but the stereo results are much
more accurate than using the stereo option in the CaptureFromCamera360 component.
This component always outputs a stereo image and shouldn’t be used for monoscopic
rendering. Options include:
23 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

●
●
●
●

●

●

●
●
●

Camera
○ The camera to render from
Resolution
○ The resolution of the final output (before downscale)
Anti-aliasing
○ Anti-aliasing to use during rendering
Interpupillary Distance (IPD)
○ The distance between the pupils. This is set to 0.064 which is the standard
for an american male adult. You may wish to alter this if creating content for a
wide range of users and quality is important. This value is in meters and
assumes a scale of 1 unit = 1 meter.
Pixel Slice Size
○ The size in pixels of each vertical slice.
Scene renders per frame = (Resolution.width / Pixel Slice)
Increasing this number will make rendering faster, but will decrease quality.
Usually best to leave this set to 1 pixel
Padding Size
○ The amount of padding in pixels to add to each vertical slice. If you’re using
post-process effects (bloom etc) then you may need to increase this above 1
so that these effects work.
Camera Clear Mode
○ How the camera clears
Camera Clear Color
○ The colour to clear the camera with
Camera Image Effects
○ Here you can add any Image Effects that are applied to your camera. These
effects will then get applied as the rendering is done.

Note that Unity may become unresponsive when using this component. This is because
each frame takes a long time to render so the Unity editor will only update at the end of each
frame. Hopefully we will improve this in the future to keep the UI responsive. It is best to set
the “Auto Stop” mode when using this component so that it will stop at the end of a
sequence without user intervention.
Also, please note that this capture component can use a ton of memory if the Unity profiler is
enabled due to how many rendering calls it does per frame. Even a simple scene can take
over 32GB of memory due to the profiler. You must disable the profiler completely when
using this component. This is done by opening the profiler, disabling the record option,
closing the profiler, remove the tab if it is docked, then restarting Unity.
7.6 CaptureFromTexture Component
This component captures from any Unity texture (Texture2D, RenderTexture,
WebCamTexture etc). The texture to capture is assigned via scripting by calling the
SetSourceTexture() method.

24 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

7.7 UnityAudioCapture Component
This component can be added to capture the audio from Unity. This must be added to a
GameObject that contains the AudioListener you want to record (usually Main Camera). The
CaptureFrom component must then be connected to this component via the “Audio Capture”
field. This component should be disabled when it is added to the scene so that the
CaptureFrom component can enable it when required.
One thing to be noted about this component is that it is implemented as a filter, therefore
enabling bypass effects on an AudioSource would exclude that AudioSource from being
captured.
7.8 CaptureGUI Component

This component renders a GUI to the game view (using IMGUI) to control the CaptureFrom
component. It allows the codecs to be selected, capture resolution and frame rate to be
chosen and the capture itself to be controlled via Start / Pause / Resume / Stop buttons.
This component is included as it can be useful but it is intended as more of an example than
something to include in your builds.

7.9 MouseCursor Component
This utility component can be added when using the CaptureFromScreen component when
capturing of the mouse cursor is desired. It renders a software mouse cursor using IMGUI.
You may see who cursors on screen - one will be your standard hardware cursor, and the
other will be this software cursor. Only the software cursor is captured to video. This
component must be assigned to the “Mouse Cursor” field in the CaptureFromScreen
component.
25 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

7.10 MotionBlur Component
This utility component is added automatically when the motion blur option is selected from
the CaptureFrom component. This is not usually added or used manually.

26 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

8. Scripting
8.1 Basics
All scripts use the namespace: RenderHeads.Media.AVProMovieCapture
All CaptureFrom components derive from the CaptureBase class. CaptureBase includes
most of the functionality, such as controlling when the capture starts and stops. Commonly
used methods include:
●
●

●
●
●

●
●

bool StartCapture()
○ Starts a capture
void QueueStartCapture()
○ The same as StartCapture() but should be used when calling from a UI
element (eg button)
bool PauseCapture()
○ Pauses a capture
bool ResumeCapture()
○ Resumes a paused capture
bool CancelCapture()
○ Stops a capture immediately. Unlike StopCapture() it doesn’t wait for any
pending frames to complete compression.
bool StopCapture()
○ Stops a capture
void QueueStopCapture()
○ The same as StopCapture() but should be used when calling from a UI
element (eg button)

All settings are publically available in the scripts so they can easily be set in code before
starting a capture.
8.2 Custom Usage
If you want to go beyond the component you can access the functionality of the
AVProMovieCapture DLL directly or edit CaptureBase.cs to make your changes. You can
also derive a new class from CaptureBase to make your own capture component (see the
other components to see how this is done).
The DLL has the following functions which are wrapped in NativePlugin.cs:
Global Methods
bool Init();
Global initialisation for the plugin. Returns false if unsuccessful.

27 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

void Deinit();
Global deinitialisation for the plugin.
Enumeration Methods
int GetNumAVIVideoCodecs();
Returns the number of DirectShow video codecs on the system.
int GetNumAVIAudioCodecs();
Returns the number of DirectShow audio codecs on the system.
int GetNumAVIAudioInputDevices();
Returns the number of DirectShow audio input devices on the system.
string GetAVIVideoCodecName(int index);
Returns "Invalid" if unsuccessful, otherwise results the name of the video codec at index.
string GetAVIAudioCodecName(int index);
Returns "Invalid" if unsuccessful, otherwise results the name of the audio codec at index.
string GetAVIAudioInputDeviceName(int index);
Returns "Invalid" if unsuccessful, otherwise results the name of the audio input device at
index.
Recorder Methods
int CreateRecorderAVI(string filename, uint width, uint height, int frameRate, int
format, bool isTopDown, int videoCodecIndex, bool hasAudio, int audioSampleRate,
int audioChannelCount, int audioInputDeviceIndex, int audioCodecIndex, bool
isRealTime, bool useMediaFoundationH264, bool supportAlpha);
Creates a recorder instance to generating AVI files. An integer is returned which is a unique
value specific to this instance of the recorder.
bool Start(int handle);
Starts/resumes recording. Handle is the handle of the recorder instance.
void Pause(int handle);
Pauses recording.
void Stop(int handle);
Stops recording. Handle is the handle of the recorder instance.
void FreeRecorder(int handle);
Releases the instance of the recorder.
Encoding Methods
28 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

bool IsNewFrameDue(int handle);
Let’s us know whether the encoder is ready for another frame.
void SetTexturePointer(int handle, System.IntPtr texture);
Sets the pointer for the texture to be captured
void EncodeFrame(int handle, System.IntPtr data);
Sends frame to be encoded. “data” points to an array of width x height and with a bit-depth
of 32 for RGBA32 videos and 16 for YUY2 videos.
void EncodeAudio(int handle, System.IntPtr data, uint length);
Sends audio to be encoded.
void EncodeFrameWithAudio(int handle, System.IntPtr videoData, System.IntPtr
audioData, uint audioLength);
Sends visual and audio frame to be encoded.
Notes
The render thread is also invoked by GL.IssuePluginEvent which is used to grab the
currently set texture pointer and send it to the encoder.
For an example of how to use the API, see ScriptCaptureDemo.cs

9. Tips
For best results we recommend:
1. Use the Media Foundation H.264 video codec where possible. This is a lossy codec
but it should be suitable for most use cases.
2. Install and use the Lagarith video codec. It is a free lossless codec with excellent
performance. It does produce quite large files though so you may need to convert it
to another format before sharing/uploading. You need to configure the Lagarith
codec and enable multi-threading and null frames.
3. If you need to convert videos from one codec to another you can use VirtualDub,
FFMPEG from the command-line, or Handbrake.
4. Install and use the X264 VFW video codec. It is fairly fast and produces videos of a
very small file size. If you’re recording at a high resolution though you’ll need a very
fast CPU for this codec.
5. If a specified codec couldn’t be found, a warning is generated and uncompressed
29 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

video will be produced.
6. For best real-time capture performance create a build and do your captures from the
build running in full-screen exclusive mode (set in the Player Settings).
7. Capture a resolution that has a width that is a multiple of 16. This should allow best
cache usage and SIMD instructions to be used during memcpy.

30 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

10. Support
Please contact us if you are in need of support or have any comments/suggestions
regarding this product.
Website: http://www.renderheads.com/portfolio/UnityAVProMovieCapture/
Support website: http://www.renderheads.com/contact/
Forum: http://forum.unity3d.com/threads/120717-Released-AVPro-Movie-Capture
Feedback: https://goo.gl/forms/WB9W9v4vQtez6B1Y2
Email: unitysupport@renderheads.com
10.1 Bug Reporting
If you are reporting a bug, please include any relevant information and details so that we
may remedy the problem as fast as possible. Useful information includes:
1. Unity version
2. Operating system
3. GPU model
4. Rendering API (DX9 / DX11 / OpenGL)
5. AVPro Movie Capture plugin version
6. Screenshot of the bug
7. Output log
8. Which codec you are using
9. Which plugin component you are using (eg CaptureFromScreen)
10. A copy of the captured video file (if relevant)

31 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

11. About RenderHeads Ltd

RenderHeads Ltd is an award winning creative and technical company that has been
designing and building cutting edge technology solutions since its formation in 2006. We
specialise in creating unique interactive audio-visual software for installations at auto shows,
museums, shows and expos.
11.1 Services
●
●
●

Unity plugin development
Unity game / interaction / augmented reality development
Unity consulting

11.2 Jobs at RenderHeads
We’re always looking for creative technical people to join our team. RenderHeads is an
innovative software company that develops interactive experiences lead by high-end
technology and beautiful graphics. We have created installations for Nike, Ford, Nissan, Dell,
Intel, PwC, Shell, Cisco, and others. Our work also appears in the National Maritime
Museum Greenwich, Museum of Science and Industry Manchester, Sheikh Abdullah Al
Salem Cultural Centre Science Museum Kuwait and Guiness Storehouse Ireland.
We create games for museums and brands, bespoke AR, VR and huge video wall
experiences for shows, real-time visualisations for events and audio-visual products for
developers and the broadcast industry. All of the software we develop is unique, and our
clients have high expectations. We work with some of the latest hardware and software
technologies, and each project gives us a new opportunity to explore the edge of possibility.
RenderHeads offer a flexible working opportunity with remote or in-office working. We have
offices in Cape Town, South Africa and Glasgow, Scotland, and team members working
remotely from around the world.
If you’re looking for a new opportunity to push the limits and create awesomeness, please
read through the requirements below and email us at jobs@renderheads.com. Send us your
CV and links to showreel, past projects or code examples.
General Requirements
● You must be able to show a history of making software, either by professional

32 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

●
●
●

experience or personal projects
Pragmatic software development approach - we ship software frequently
Either very strong technical skills, or a mix of creative and technical skills
Good communication skills - most of our communication is online, via
Slack/Skype/Hangouts and email/Google Docs

Positions we have available:
Video Software Developer
● You would be developing in-house camera and video related software,
including our AVPro series of Unity plugins, related to cross-platform video
playback, streaming, capture and encoding
● Required experience:
■ Strong C++
■ Multi-threaded programming
● Ideal experience:
■ C# and Unity
■ AVFoundation / Media Foundation / DirectShow / libAV / ffmpeg /
gstreamer
■ DeckLink / NDI SDK
■ Low-level MP4 / H.264 / H.265 / HEVC / HLS / DASH / RTSP / RTP
■ Shader development
■ Camera / broadcast experience
■ 360 video workflows
■ 360 audio technologies
Interactive Software Developer
● You would be creating software for a wide variety of technically challenging
and creative projects, and implementing cool interactive experiences using
the latest technologies
● Features of our typical projects:
■ Most development is in Unity
■ Visualisation and effects
■ Educational games
■ VR experience development
■ Integration with cameras, sensors and hardware
■ UI and animation development
● Required experience:
■ C# and Unity
■ SVN / Git
● Ideal experience:
■ iOS / Android development
■ An interest in UI and UX
■ An interest in improving workflow / tools
■ Shadertoy and other graphics rendering tech
■ Ability to travel (for on-site installations)
33 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

Senior Software Developer
● You would oversee the progress of the other developers in your team: making
sure everyone is on track, helping to instill good development practices,
helping to grow everyone’s experience and skills
● You would tackle some of the more difficult programming problems and make
sure that the final software is of high quality
● You would also help to scope and plan the approaches for new projects,
working closely with the other senior members
● Required experience:
○ Many years of software development
○ Many projects/products released
○ Optimisation
○ Unity and C#
● Ideal experience:
○ Graphics programming
○ An interest in improving workflow / tools (Jenkins, CI, Dev ops)

11.3 Our Unity Plugins
Many of the apps and projects we develop require features that Unity doesn’t yet provide, so
we have created several tools and plugins to extend Unity which are now available on the
Unity Asset Store. They all include a free trial or demo version that you can download
directly from the website here:
http://renderheads.com/product-category/for-developers/
11.3.1 AVPro Video
Powerful cross-platform video playback solution for Unity, featuring support for
Windows, OS X, iOS, Android and tvOS.

11.3.2 AVPro Movie Capture
Video capture to AVI files direct from the GPU and encoded to files using DirectShow
codecs. Features include 4K captures, lat-long (equirectangular) 360 degree captures,
off-line rendering and more. Windows only.
11.3.3 AVPro Live Camera
Exposes high-end webcams, tv cards and video capture boards to Unity via DirectShow.
Windows only.
11.3.4 AVPro DeckLink

34 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

Integrates DeckLink capture card functionality into Unity, allowing users to send and receive
high-definition uncompressed video data to and from these capture cards.

35 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

Appendix A - FAQ (Frequently Asked Questions)
1. How do I update to the latest version of this plugin?
If you have purchased this plugin from the Unity Asset Store then you simply login to
the store and check if there is a new version to update to. Make sure you do some
from a newly opened Unity and without using the plugin, otherwise the native DLL
plugin file can becomes locked and won’t update.
2. Does this plugin record the audio from Unity?
Yes, if you use the UnityAudioCapture component you can record audio directly from
Unity.
3. Where are my movie captures stored?
By default the components auto-generate a filename each time you run a capture.
These files are stored in the root of your project (the folder above “Assets”). You can
always disable auto-generation of filenames in the component and specify your own
file name and location for a capture.
4. How do I record in-game audio and microphone audio at the same time?
Currently this plugin only supports recording audio from a single Windows audio
device. There is a “trick” you can use though. In Windows 7 (and perhaps Vista) you
may be able to set your microphone to play through the speakers by going to:
Control Panel -> Sound -> Recording -> Select your microphone -> right click ->
Properties -> Listen -> check "Listen to this device".
You should then hear your microphone recording through your speakers. It’s
recommended to use headphones during recording to prevent feedback from the
speakers into the microphone.
5. How do I prevent Unity from freezing after doing a recording using the Xvid
MPEG4 codec?
Open the configuration for the Xvid MPEG4 codec and go to the “other options” page
and make sure “Display encoding status” is not selected.
6. I’m using Autodesk ScaleForm and it’s glitching, how do I get it to record
properly?
ScaleForm doesn’t seem to like it when render settings (window size, vsync count)
are changed while the app/game is running. This plugin removes vsync during

36 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

recordings which breaks the ScaleForm rendering. Just run your app/game using a
quality settings that doesn’t have vsync.
7. How can I encode to MP4 container file instead of AVI?
You can either use the Media Foundation H.264 codec, or you can use the x264
DirectShow codec which requires a MP4 muxer to be installed:
You need to download the following codec: http://www.gdcl.co.uk/mpeg4/
Install it from the command-line using “regsvr32 mp4mux.dll” command via an
Administrator command-prompt. In the AVPro Movie Capture plugin specify your
target file name ending with “.mp4”.
Here are some alternative installation
instructions:
a. Download the mpeg4.zip file from http://www.gdcl.co.uk/mpeg4/
b. Extract the zip to somewhere on your system (eg C:\Tools\mpeg4)
c. Create a file called register.bat and edit it in notepad and paste the following:
regsvr32.exe C:\Tools\mpeg4\x86\mp4mux.dll
regsvr32.exe C:\Tools\mpeg4\x64\mp4mux.dll
pause
d. Save the file and close notepad
e. Right click on the register.bat file and choose “Run as administrator”
f. The script should run and register all 4 DLLs to your system
Note that the MP4 container only support certain video and audio codecs
(unlike AVI). We recommend using x264vfw video codec and Uncompressed
/ ADPCM audio codec. You may need to disable audio recording if you aren’t
using the recommended audio codec.
8. I have compiled the scripts into a DLL and am now experiencing some
unexpected behaviour.
Some of our scripts have Unity version-specific preprocessor defines which
determine how they compile (eg UNITY_5_2). Usually when you build an external
DLL these defines are missing and so the incorrect version of the code can be
compiled. You need to add the appropriate compiler defines to your build.
9. My videos aren’t capturing correctly, or they appear upside-down
This can happen when Unity is using OpenGL emulation in the editor (which can
happen when your built target is set to other platforms such as Android, iOS etc).
Check your Edit > Graphics Emulation settings to make sure no emulation is being
used. Check your File > Build Settings and for best results set this to “PC, Mac &
Linux Standalone” then press “Switch Platform” and restart Unity.
37 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

10. The plugin crashes when it starts, what could be causing this?
The first thing the plugin does is enumerates all of the video and audio codecs and
audio recording devices installed on your system. It is possible that there’s a
problem with one of these. Try uninstalling all 3rd party codecs you have installed.
Once you have it working you can being reinstalling the codecs again. We have
found that the professional version of the Cinepak codec can caused this issue.
11. Why is my floating point accuracy changing, especially related to epsilon
values when using Mathf.Approximately()?
We’ve seen rare cases where enumeration of 3rd party codecs changing the FPU
state which can affect Unity’s Mathf.Approximately() method. We saw this with the
x264vfw codec, but it has been fixed in the latest version we tested (July 2017).
Otherwise you can try uninstalling other 3rd party codecs.
12. How can I fix issues when also using the AVPro Live Camera plugin?
We’ve had reports that if you adjust the script execution order then the two plugins
will work better together:

13. How can I create transparent videos with an alpha channel?
a. Select a video codec that supports alpha channels:
i. Uncompressed
ii. Lagarith
iii. Cineform
b. If you use Lagarith make sure it’s configured to Mode=RGBA and enable
“Use Multithreading”.
c. Use the CaptureFromCamera component and make sure “Support Alpha” is
ticked. Or if you use the Editor Window select “Camera” as the source type
and make sure “Support Alpha” is ticked on the Visual tab.

38 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

d. Set the background colour of your capture camera and set the alpha value to
zero.
e. Set the capture camera clear flags to “Solid Color”
14. How can I include the mouse cursor in my captures?
The Windows mouse cursor is a hardware cursor and is not rendered as part of Unity
- so it is not captured by default. You would need to assign a software mouse cursor
texture which you can do in Player Settings, or you can use the MouseCursor
component included. Only the CaptureFromScreen component supports capture of
this mouse cursor.
15. How can I output to a named pipe?
This is an experimental feature that allows the captured video to be written to a
named pipe. This allows other software to listen for the incoming video frames.
Change the CaptureFrom component Output Type to “Named Pipe”.

Using FFmpeg you can connect to the named pipe:
ffmpeg.exe -y -f rawvideo -codec rawvideo -s 640x480 -r 30 -pix_fmt rgb32 -i
\\.\pipe\test_pipe -an -c:v libx264 -pix_fmt yuv420p output.mp4
You must start the capture and then run ffmpeg, otherwise it will not find the named
pipe. Currently it only outputs in rgb32 format and you need to specify the resolution
and frame rate. Audio isn’t supported.
Another example showing how to stream a video:
ffmpeg -r 30 -vcodec rawvideo -f rawvideo -pix_fmt yuv420p -s 1280x720 -i
\\.\pipe\test_pipe -an -f rtp rtp://127.0.0.1:9090
16. Why is CaptureFromScreen just rendering black in Unity?
Make sure you don’t have any other “Game” views open, especially ones for other
display targets.

39 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

Appendix B - Version History

●

Version 3.6.8 - 1 November 2018
○

●

Bug fixes
■ Fixed a crash bug that sometimes happened when stopping the
capture due to a threading issue

Version 3.6.7 - 4 September 2018
○ Bug fixes
■

●

Version 3.6.6 - 23 July 2018
○ Improvements
■

●

Added faster and more accurate stereo 360 rendering via adding
support for Unity 2018.1’s stereo cubemap rendering to the
CaptureFromCamera360 component

Version 3.6.5 - 9 July 2018
○ Bug fixes
■

●

Fixed a memory leak that would happen at the end of each capture

Fixed bug with audio capture of Unity audio (regression since 3.6.0)

Version 3.6.4 - 7 July 2018
○ Improvements

PNG exporter now supports exporting without alpha
Bug fixes
■ Fixed the PNG writer for high resolutions
■

○

●

Version 3.6.2 - 6 July 2018
○ Improvements
■

●

Exported PNG files now more compatible (eg Photoshop After Effects,
Premiere, Nuke etc)

Version 3.6.0 - 28 June 2018
○ Improvements

Simultaneous captures are now supported (BETA)
Bug fixes
■ Fixed some codecs (such as MagicYUV) not being enumerated
■ Fixed errors when stopping a Stereo ODS capture from the Capture
Window
■

○

●

Version 3.5.2 - 1 June 2018
○ Improvements
■

MP4 encoding can now applies the “fast start” patch which moves the
‘moov’ atom to the start of the file. This allows these videos to be
directly streamed from websites or servers
40 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

The Movie Capture window is now persistent allowing it to capture
across scene changes
■ Added new persistent option to prevent CaptureFrom components
being destroyed during scene loads
Bug fixes
■ Fixed instantiation issue where OnDestroy() would unload the entire
plugin
■

○

●

Version 3.5.0 - 25 May 2018
○ Improvements
■

Added image sequence output mode with fast PNG support

Moved all capture functions from Update() to LateUpdate() to fix
issues where some game logic hadn’t been applied before the capture
Bug fixes
■ Fixed issue where using Final IK with the “Fix Transforms” field ticked
would result in the IK not being applied
■ Fixed issue where first frame of wouldn’t capture when using
timelapse
Other
■ Enabled compiler optimisations in native plugin
■ Many UI improvements
■ Corrected documentation steps for exporting transparent video
■

○

○

●

Version 3.4.4 - 23 May 2018
○ Improvements

Added new timelapse field to allow videos to be captured at a fraction
of the rate at which they will be played back. The field timelapseScale
controls this. If your video frame rate is set to 30 and timelapseScale
is set to 2 then it will capture only at 15fps, but generate a 30fps video
Bug fixes
■ Fixed rare issue where render functions could become null
■ Blocked FFDShow codec from enumerating as this old codec is quite
buggy and could cause crashes
Other
■ Improved version number function
■

○

○

●

Version 3.4.2 - 17 May 2018
○ Improvements
■

Added new 180 degree capture mode to the 360 and 360ODS capture
components

41 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

○

○

●

Bug fixes
■ CaptureFromCamera component now includes contributing cameras
that are disabled in case they are enabled later
■ Script execution order of capture components changed from 100 to
29000 so capture happens later than user scripts
Other
■ “View last capture” button now coloured to improve workflow

Version 3.4.0 - 14 May 2018
○ Improvements

CaptureFromTexture now has logic to signal when the texture has
changed, making texture capture more controllable, and capturing
from webcam textures produce smoother results
■ CaptureFromCamera UI improved to make working with contributing
cameras easier
■ API: videoCodecPriority field changed to a property so that it correctly
calls SelectCodec() when changed
■ API: forceGpuFlush added to force the GPU to flush during each
capture, which causes less latency but can reduce performance
■ Better codec enumeration so non-compressors are no longer
included, and Logitech’s old video encoder is now excluded as it
causes problems on some systems and isn’t generally useful
Bug fixes
■ Fixed issue when using MF H.264 codec where pausing didn’t
properly pause the internal clock
Other
■ Webcam demo changed to only capture a single camera at once since
multi-source capture isn’t working currently, and to use the new
manual signal with CaptureFromTexture to make sure no frames are
missing or duplicated
■

○

○

●

Version 3.3.2 - 23 February 2018
○ Improvements

UnityAudioCapture component can now be attached to other objects
besides the AudioListener, such as the AudioSource component, and
it can mute the audio once it has grabbed it
Bug fixes
■ Fixed a bug where RenderTextures with generate mipmaps enabled
couldn’t be captured
■ Fixed 360 stereo ODS capture problem with some image effects (such
as HBAO) which needed reactivation
■ Fixed some shaders that had been automatically upgraded for newer
versions of Unity so they’re backwardly compatible again
Other
■ Updated all copyright messages to 2018
■ Tested with Unity 2018.1.0b8
■

○

○

42 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

■

●

Version 3.3.1 - 10 December 2017
○ Bug fixes
■

●

Fixed shader compile error in Unity 2017.3 when single pass
instanced stereo mode is enabled for VR rendering

Version 3.3 - 9 November 2017
○ Improvements
■
■

●

Now also uploading versions using Unity 5.5 and 5.6 to prevent the
script/shader upgrade warnings

Major performance improvements by no longer stalling the GPU
during capturing
The mouse cursor now has an offset value for the hotspot and a scale
slider

Version 3.2 - 5 October 2017
○ Improvements

CaptureFromCamera now supports camera chains where multiple
cameras contribute to the final render
■ Improved compatibility with older systems by not relying on some
Media Foundation DLLs
■ Added a new option “_supportTextureRecreate” which now defaults to
“off” which improves performance by removing a per-frame GPU sync
point. Enable this option if you need to support texture recreation
during a capture (for example when the GPU device is lost due to
window resize or alt-tab when using exclusive fullscreen mode)
■ Improved inspector UI for audio source selection
■ Added MF H.264 capture option to CaptureGUI
Bug fixes
■ Fixed some ODS 360 capture settings not being applied
■

○

●

Version 3.14 - 7 September 2017
○ Improvements

Added new UI button to view the captured video immediately instead
of via Windows Explorer
■ Improved support for capturing when using OpenGL emulation, which
can happen when having the build platform not set to Windows
Standalone
■ CaptureFromScreen component generates less garbage by caching
the YieldInstruction
■ Improved encoded time display
■ Improved error messages
■ Improvements to UI
Bug fixes
■ Fixed bug where capture window could not set the file name or
extension
■ Fixed bug where Capture Window would add UnityAudioOutput
■

○

43 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

■
●

Version 3.12 - 30 August 2017
○ Bug fixes
■
○

CaptureFromTexture and CaptureFromCamera360 components now
no longer accumulate and render when capture is paused

Minor
■

■
■
■
■

●

component to the main camera instead of to the GameObject with the
AudioListerner
Fixed the encoded time information for real-time captures

Added helpful warning when using the profiler with 360 Camera ODS
component. Have the profiler completely disabled (disable record,
close the window, remove the tab and restart Unity), otherwise it will
use too much memory when using ODS component.
Added new “about” section to inspector
Added a better check for plugin version mismatches
Some improved texture cleanup and discards
Improved camera 360 demo script to make cubes fall away instead of
disappear

Version 3.10 - 27 August 2017
○ Upgrade Notes

If upgrading from version 2.x then you must delete all of the files for
any previous copies of AVPro Movie Capture in your project before
importing this version. This is because many files have been renamed
and the folder structure has changed significantly.
Improvements
■ A preview of the captured frames is now displayed
■ Pause during offline rendering now pauses Unity by settings
Time.timeScale to zero
■ Various minor UI and other improvements
Bug fixes
■ Fixed deferred rendering support for stereo ODS component
■ Fixed motion blur timing and sample count issues
■ Fixed disabling MSAA when using deferred rendering with stereo ODS
component
■ Fixed some anti-aliasing and cubemap depth states not being set
sometimes
■ Added a workaround for a bug in Unity 5.6.0 - 5.6.1 (#902409)
■ Noted a bug in Unity 2017.1.0 - 2017.2.0 in CaptureFromCamera360
that causes the background to render white when camera clear mode
is set to solid colour
■

○

○

●

Version 3.01 - 21 August 2017
○ Upgrade Notes
■

If upgrading from version 2.x then you must delete all of the files for
any previous copies of AVPro Movie Capture in your project before

44 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

○

○

●

importing this version. This is because many files have been renamed
and the folder structure has changed significantly.
Improvements
■ Added named pipe output option to the Capture Window and
improvements to the inspector
Bug fixes
■ Fixed some bugs related to using named pipes
■ Fixed some rare null exceptions that could happen when upgrading
from previous version which used specific codec indices

Version 3.0 - 11 August 2017
○ Upgrade Notes

If upgrading from version 2.x then you must delete all of the files for
any previous copies of AVPro Movie Capture in your project before
importing this version. This is because many files have been renamed
and the folder structure has changed significantly.
Improvements
■ Added Unity 2017 support
■ UI revamped to be easier to use and better looking
■ Huge code cleanup: moved everything into a namespace, classes
renamed, code documentation improved, documentation updated etc
■ Added new Omni-Directional Stereo (ODS) capture component for
capturing stereo 360 in a more accurate way. This new method is
much slower and is intended for off-line rendering only. Based on:
https://developers.google.com/vr/jump/rendering-ods-content.pdf
■ Added options to automatically stop the capture / render after a certain
number of frames or seconds
■ Performance improvements, the capture no longer forces Unity to run
at the capture rate
■ Exposed the Camera360 stereo options in the AVPro Movie Capture
window
■ CaptureFromCamera and CaptureFromCamera360 components no
longer require to be attached to a GameObject with a Camera. The
camera can be set manually via the exposed field. If no camera is
assigned it will try to find the Camera component on the same
GameObject.
■ The free trial version is now on the Unity Asset Store and allows for 10
seconds of capture without any watermarking.
Bug fixes
■ Fixed audio capture in Camera360 component
■ Fixed captures trying to use MSAA and Deferred rendering together
■ Fixed a bug where “Start Paused” option would be ignored
■ Fixed issue where UnityAudioCapture component would be enabled
when capture started with StartPaused option and Pause/Resume
wouldn’t toggle enabled status of UnityAudioCapture component
■ Fixed “Open Last Capture” sometimes not storing the last capture
■

○

○

45 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

●

Version 2.99 - 11 April 2017
○ Improvements

Added stereo rendering support to the 360 camera capture
component. 360 captures can now be rendered in mono, stereo
top-bottom or stereo left-right
Bug fixes
■ Fixed a memory leak in the Media Foundation recorder
■

○

●

Version 2.98 - 7 April 2017
○ Improvements

Texture capture component is now much faster
Motion blur capture now works with the Surround 360 and Texture
capture components
■ Added option to include mouse cursor in the capture
■ Texture capture demo improved
■ Increased capture resolution limit from 8K to 16K
Bug fixes
■ Fixed audio delay when capturing webcam and microphone
■ Removed dependency on Media Foundation so older versions of
Windows are supported again
■ Various fixes made to the motion blur component
■
■

○

●

Version 2.96 - 6 March 2017
○ Improvements

360 surround capture can now render uGUI elements when canvas is
set to camera or world modes.
■ 360 surround capture now supports camera rotation
■ Fixed 360 surround capture orientation, as it was flipped horizontally
■ Improved motion blur support in 360 camera capture
■ Added Media Foundation capture option to Editor window
UI / Workflow
■ Editor window UI improvements, including context hiding and usage
warnings
Bug fixes
■ Fixed FromCamera capture bug where build captures would render
black to the screen
■ Fixed bug where editor window would unnecessarily spawn
AudioCapture component
■ Fixed bug where audio capture component would be accessed when it
shouldn’t
■ Fixed crash bug in webcam demo
■

○

○

●

Version 2.94 - 27 September 2016
○ Fixed issue where camera captures would freeze when vsync changed

●

Version 2.92 - 26 September 2016
46 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

○
○
○
●

Fixed support for capturing transparency
Improved robustness for enumeration of buggy audio devices
Update documentation

Version 2.90 - 16 September 2016

○

○

○

○
○

New Features
■ New 360 degree equi-rectangular capture for VR
■ Better support for VR capture
■ Real motion blur feature for added quality to offline captures (BETA)
■ Captures from Camera can now be higher resolution than displayed
allowing capture resolutions over 3840x2160
■ Captures from Camera can now have custom anti-aliasing settings
■ Experimental Media Foundation H.264 (MP4) encoder
Changes
■ Added 75, 90 and 120 FPS capture modes for VR
■ Added variables to disable vsync and frame rate changing
■ Stop function now has parameter to skip processing of any pending
frames - useful for canceling a capture quickly. Also added new
CancelCapture() function which stops capturing fast and deletes the
capture file.
■ Better capture of physics simulations in off-line capture mode
■ Now stops recording when disk space is too low instead of crashing
■ Added setting to start capturing in a paused state
■ Dropped support for older versions of Unity, project now built with
Unity 4.6
■ Tested up to Unity 5.4
■ Project files rearranged
UI / Workflow
■ Editor window layout improvements
■ Component editor layout improvements
Optimisations
■ Capture from Camera and RenderTexture much faster
Bug fixes
■ Fixed linear color-space capture issues
■ Fixed crash bug on 64-bit builds when creating lots of captures
■ Fixed audio recording latency issue when using pause/resume
■ Fixed audio capture from Unity non-threaded issue causing clicks in
recordings
■ Fixed codecs not showing config options sometimes

●

Version 2.72 - Monday 15 June 2015
○ Fixed Unity 5.1 support

●

Version 2.70 - Wednesday 27 May 2015
○ Fixed 64-bit VFW video codec enumeration issue
○

Fixed issue where multiple codecs could not be used at once

47 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

○
○
○
●

Version 2.64 - Saturday 18th April 2015
○ Unity 4.6 and 5.0 support added
○
○
○
○
○
○

●

○
○

○
○

○
○
○
○
○

Minor improvements to UI

Version 2.46 - Monday 8 January 2014
○ Added recording stats (file size and time)
○
○
○

●

Added script to automatically copy the DLL files during installation
Added better output path options
Added support for more YCbCr formats
Improved in-editor GUI to allow capturing from specific camera
Various minor fixes to the demos
Fixed some script issues on non Windows platforms

Version 2.48 - Wednesday 15 January 2014
○ Fixed crash bug when system has no codecs or devices
○

●

Removed usage of deprecated Unity functions
Added display of output frame resolution to UI
Video file now deleted before recording to prevent AVI bloat

Version 2.5 - Monday 24 February 2014
○ Added new trial version
○

●

Unity audio capture now supports speaker modes other than stereo
Improved error reporting
Improved vsync handling

Version 2.52 - Thursday 27 February 2014
○ Fixed unnamed scene recording bug
○

●

DX11 GPU red-blue swap and downscaling
Dropped official Unity 3.x support, minimum version supported is now 4.0
Fixed audio recording freeze bug
Better plugin folder structure
Faster watermarking
Added experimental writing to ‘named pipes’

Version 2.55 - Monday 28 July 2014
○ Unity 4.5 support
○

●

Improved demo capture dialog so it shows recording stats
Improved webcam demo to allow recording of multiple webcams
Fixed crash bug in watermarking

Improved recording stats GUI
Fixed editor launch crash bug when using non Windows built settings
Added OpenGL emulation notes to FAQ for captures appearing upside-down

Version 2.44 - Monday 6 January 2014
○ Fixed editor error message when launching configure dialogs

48 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

●

Version 2.42 - Monday 30 December 2013
○ Fixed y-flip bug
○
○

●

Version 2.4 - Friday 27 December 2013
○ Added codec configuration dialog support detection
○
○
○
○

●

○
○

○
○
○

○
○
○
○

Added audio recording directly from Unity
Fixed GL.IssuePluginEvent() conflict bug with other AVPro plugins
Fixed DX11 recording in Unity 4.0
Fixed bug in audio codec listing
Renamed and restructured code

Version 1.8 - Tuesday 18 December 2012
○ Added audio codec enumeration
○
○
○

●

Fixed some platform #if issues

Version 2.0 - Monday 12 March 2013
○

●

Added support for Unity 4.2
Added automatic DLL swap for 64-bit builds
Fixed some material leaks
Fixed DX11 colour swap and flip bug

Version 2.02 - Monday 18 March 2013
○ Added Unity 4.1 support
○

●

Scene capture no longer requires a camera
Added new EditorWindow widget for easier capturing from Editor
Improved documentation for best codec settings

Version 2.2 - Thursday 22 August 2013
○ Added support for writing to MP4 container
○

●

Reduced CPU usage of new EditorWindow widget
Improved codec lists in new EditorWindow widget
EditorWindow can now play the scene to start recording
Improved documentation

Version 2.3 - Wednesday 4 December 2013
○ Added proper fast native DX11 support
○

●

Fixed camera capture bug using wrong texture size
Fixed DX11 viewport capture bug

Added Unity 4.0 support
GUI improved
Added more demos

Version 1.6 - Thursday 6 September 2012
○ Added ability to pause movie capture
○
○

Scene capture resolution can differ from Screen resolution
Inspector: displays capture rate and has buttons to control capture

49 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

○
○
○
○
○
○
●

Less CPU usage
Optimisation: removed software RB channel swap
Optimisation: removed per-frame memcpy
Optimisation: removed vertical flip
GUI layout improved
Lots of source cleaning up

Version 1.5 - Monday 6 June 2012
○ Improved smoothness of captures significantly.
○
○
○

64-bit Windows support added.
Added GUI to easily set up recordings (taken from previous demo scene).
Added code to detect dropped frames during encoding.

●

Version 1.4 - Thursday 15 March 2012
○ Much faster capturing due to new Unity 3.5 native API features.

●

Version 1.3 - Friday 17 February 2012
○ Added audio for testing audio recording.
○

●

Autodetection of loopback audio devices.

Version 1.2 - Saturday 4 February 2012
○ Added ability to capture GUI.
○
○
○
○
○
○
○
○
○

Added audio capture.
Added resizing to half, quarter, eighth resolution.
Improved capture performance and smoothness by only preparing the frame
capture data when the encoder requires it.
Automatic disable of vsync helps performance.
Rounding to multiple of 4 resolution to help codec compatibility.
Added ability to set target frame rate (15, 24, 30, 60).
Added ability to set own file name.
Video codecs can now be configured.
Fixed various minor bugs.

●

Version 1.1 - Tuesday 24 January 2012
○ Removed Vista/Win7 dependency (WMV).

●

Version 1.0 - Thursday 17 January 2012
○ Initial release submitted to Asset Store.

Appendix C - Road Map
●

Version 3.x -?
○
○
○
○

Expose MF H.265 codec
Enumeration of MF codec parameters
Safer threaded GPU rendering path
Multi-capture instances at once
50 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd

○
○
○
●

Capture only a region of the screen/texture
Export depth and other deferred channels
Add estimated file size and time to render progress

Version 4.x - ?
○ ← Your suggestion here
○
○
○
○
○
○
○
○
○

○
○
○
○
○
○

Add support for specifying regions?
Improve code documentation?
Recompile with newer version of VS?
Super-resolution for “screen” capture?
Fix H.264 initial freeze bug?
Support floating point audio to integer conversion?
Add audio delay support?
Bicubic downscaling?
Investigate windowed mode and vsync-on capture bugs
Embed DirectShow MP4/MOV container support
Fix mp3 audio recording if possible
GPU context manager
GPU context per recorder
Commandbuffer support for ordering to exclude IMGUI
Motion blur demo scene

51 / 51
AVPro Movie Capture © 2012-2018 RenderHeads Ltd



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : No
Page Count                      : 51
Creator                         : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
Producer                        : Skia/PDF m68
Create Date                     : 2018:10:31 19:51:40+00:00
Modify Date                     : 2018:10:31 19:51:40+00:00
EXIF Metadata provided by EXIF.tools

Navigation menu