Changelog
Tracking changes.
0.0.21
- Fixed
WebException: The request was aborted: The request was canceled
when building for Android.
0.0.20
- Added support for streaming from USB UVC cameras on iOS and iPadOS (#135).
- Added
VideoKitRecorder.CaptureScreenshot
method for capturing a screenshot image to aJPEG
media asset (#132). - Fixed unrecoverable error when recording
webm
videos on WebGL. - Fixed sporadic crash when stopping recording from camera device on iOS (#131).
- Fixed Unity Editor freezing when recording video with audio (#128).
- Refactored
MediaType
enum toMediaAsset.MediaType
. - Refactored
MediaAsset.Narrate
instance method toMediaAsset.FromSpeechPrompt
static method. - Removed
PixelBuffer.CopyTo(PixelBuffer, PixelBuffer)
method overload for alpha blending images.
0.0.19
- Added more descriptive resolution enum labels in
VideoKitRecorder
andVideoKitCameraManager
(#130). - Fixed VideoKit not functioning on iOS due to internet unreachability errors (#127).
- Fixed
Some items were not destroyed
error when exiting play mode in the Unity Editor. - Fixed
ArgumentException
error when recording videos on the free plan (#129).
0.0.18
- Added experimental support for recording Apple ProRes4444 with Alpha on iOS and macOS (#89).
- Added experimental support for recording AV1 videos on Android 14+.
- Added experimental support for visionOS (#109).
- Added
PixelBuffer
struct for working with pixel buffers. - Added
AudioBuffer
struct for working with audio buffers. - Added
MediaRecorder.Append(PixelBuffer)
method to append a video frame to a recorder. - Added
MediaRecorder.Append(AudioBuffer)
method to append an audio frame to a recorder. - Added
MediaRecorder.width
property for getting the recorder video width. - Added
MediaRecorder.height
property for getting the recorder video height. - Added
MediaRecorder.sampleRate
property for getting the recorder audio sample rate. - Added
MediaRecorder.channelCount
property for getting the recorder audio channel count. - Added
MediaRecorder.CanCreate
static method to check whether a recorder with the given format can be created. - Added
MediaRecorder.CanAppend<T>
static method to check whether the given format supports encodingT
buffers. - Added
CameraDevice.depthStreamingSupported
property to check whether a camera device supports streaming depth. - Added
VideoKitRecorder.AudioMode.AudioSource
enumeration member for recording audio from an in-game audio source. - Added
VideoKitRecorder.audioListener
field for specifying an audio listener to record audio from. - Added
VideoKitRecorder.audioSource
field for specifying an audio source to record audio from. - Added
MediaAsset.assets
property for inspecting child assets of sequence assets. - Added
MediaAsset.Read
method for reading pixel buffers or audio buffers from a media asset (#103). - Added
MediaAsset.FromStreamingAssets
static method for creating a media asset from a file in streaming assets. - Added support for recording 120FPS and 240FPS videos with
VideoKitRecorder
component on iOS. - Added
PrivacyInfo.xcprivacy
iOS privacy manifest inVideoKit.framework
(#118). - Improved MP4 and HEVC recording performance on Windows.
- Drastically reduced Android native library size from 9.3MB to 3.7MB.
- Fixed crash when calling
MediaDevice.CheckPermissions
method on Android (#83). - Fixed
CameraDevice.focusPointSupported
property always returningfalse
on Android (#93). - Fixed front
CameraDevice
preview being wrongly flipped on certain Android devices (#45). - Fixed recording failures for long recordings due to timestamp drift (#67).
- Fixed
ArgumentNullException
when setting theVideoKitCameraManager.facing
beforeStartRunning
is called. - Fixed intermittent crash when ending video recording with microphone audio on Android (#101).
- Fixed bug in
MediaAsset.Share
method where a provided message is not shared with the asset. - Fixed Android manifest merging error when using other libraries that support native sharing.
- Fixed Android Live Wallpaper crash in apps that use VideoKit (#94, #96).
- Fixed potential crash on failed async GPU readback (thanks Clemens!).
- Updated
RealtimeClock
clock to use native high-resolution, monotonic clock for more precise timestamps (#67). - Updated default
videoBitRate
inVideoKitRecorder
andMediaRecorder
classes to 20 megabits per second (#88). - Refactored
MediaDevice.UniqueID
field touniqueId
. - Refactored
MediaDevice.ExposureModeSupported
method toMediaDevice.IsExposureModeSupported
. - Refactored
MediaDevice.FocusModeSupported
method toMediaDevice.IsFocusModeSupported
. - Refactored
MediaDevice.WhiteBalanceModeSupported
method toMediaDevice.IsWhiteBalanceModeSupported
. - Refactored
MediaDevice.VideoStabilizationModeSupported
method toMediaDevice.IsVideoStabilizationModeSupported
. - Refactored
MediaRecorder.FinishWriting
method to returnTask<MediaAsset>
instead ofTask<string>
. - Refactored
VideoKit.Assets.MediaAsset
class toVideoKit.MediaAsset
. - Refactored
VideoKit.Devices.MediaDevice
class toVideoKit.MediaDevice
. - Refactored
VideoKit.Devices.CameraDevice
class toVideoKit.CameraDevice
. - Refactored
VideoKit.Devices.AudioDevice
class toVideoKit.AudioDevice
. - Refactored
VideoKit.Recorders.Clocks.IClock
interface toVideoKit.Clocks.IClock
. - Refactored
VideoKit.Recorders.Clocks.FixedIntervalClock
class toVideoKit.Clocks.FixedClock
. - Refactored
VideoKit.Recorders.Clocks.RealtimeClock
class toVideoKit.Clocks.RealtimeClock
. - Refactored
VideoKit.MediaFormat
enumeration toVideoKit.Recorders.MediaRecorder.Format
. - Refactored
VideoKit.Assets.MediaAsset.AssetType
enumeration toVideoKit.MediaAsset.MediaType
. - Refactored
VideoKit.Recorders.Inputs.AudioInput
class toVideoKit.Sources.SceneAudioSource
. - Refactored
VideoKit.Recorders.Inputs.CameraInput
class toVideoKit.Sources.SceneCameraSource
. - Refactored
VideoKit.Recorders.Inputs.ScreenInput
class toVideoKit.Sources.ScreenSource
. - Refactored
VideoKit.MediaAsset
class to no longer implementIEnumerable<MediaAsset>
. - Removed
AudioAsset
class. Use theMediaAsset
class instead. - Removed
ImageAsset
class. Use theMediaAsset
class instead. - Removed
VideoAsset
class. Use theMediaAsset
class instead. - Removed
TextAsset
class. Use theMediaAsset
class instead. - Removed
MediaSequenceAsset
class. Use theMediaAsset
class instead. - Removed
VideoKit.Devices.CameraImage
struct. UseVideoKit.PixelBuffer
struct instead. - Removed
VideoKit.Devices.AudioBuffer
struct. UseVideoKit.AudioBuffer
struct instead. - Removed
TextureInput
class. UsePixelBuffer.FromTexture
static method instead. - Removed
AsyncTextureInput
class. UsePixelBuffer.FromTexture
static method instead. - Removed
GLESTextureInput
class. Unity now supports performing async GPU readbacks on OpenGLES 3+. - Removed
CropTextureInput
class. UseTextureSource.cropRect
property to crop texture being recorded. - Removed
WatermarkTextureInput
class. UseTextureSource.watermark
andTextureSource.watermarkRect
properties to watermark texture being recorded. - Removed
VideoKitExtensions
class. - Removed
VideoKitCameraManager.image
property. - Removed
VideoKitCameraManager.imageFeature
property. - Removed
VideoKitCameraManager.pixelBuffer
property. UseVideoKitCameraManager.texture.GetRawTextureData<T>
method. - Removed
VideoKitCameraManager.Capabilities.AI
enumeration member because it is now always enabled. - Removed
VideoKitCameraManager.Capabilities.FaceDetection
enumeration member. - Removed
VideoKitCameraManager.Capabilities.PoseDetection
enumeration member. - Removed
VideoKitRecorder.RecorderAction.Delete
enumeration member. Manually delete the media asset if desired. - Removed
MediaRecorder.frameSize
property. UseMediaRecorder.width
andMediaRecorder.height
properties instead. - Removed
CameraOutput.image
property. - Removed
AudioOutput.buffer
property. - Removed
Image.device
property. - Removed
AudioBuffer.device
property. - Removed
Image.Clone
method. - Removed
AudioBuffer.Clone
method. - Removed
MediaRecorder.CommitFrame
method. UseMediaRecorder.Append(Image)
method instead. - Removed
MediaRecorder.CommitSamples
method. UseMediaRecorder.Append(AudioBuffer)
method instead.
0.0.17
- Fixed C# compiler error on iOS.
0.0.16
- Added 32-bit
x86
architecture support on Android (#75). - Fixed
NullReferenceException
on startup when running on Windows (#78). - Fixed crash when calling
MediaAsset.SaveToCameraRoll
on macOS (#85). - Changed
VideoKitAudioManager.OnAudioBuffer
event type fromUnityEvent
to a plainevent
(#69). - Removed
MediaDeviceFilters
class. - Reduced minimum requirement to macOS 10.15 (#84).
0.0.15
- Added
MediaAsset.ToValue
method for creating Function prediction values from media assets. - Added
VideoKitAudioManager.OnAudioBuffer
event for receiving audio buffers from audio devices. - Added
VideoKitCameraManager.OnCameraImage
event for receiving camera images directly from the streaming camera device. - Added
VideoKitCameraManager.texture
property for accessing the camera preview texture. - Added
VideoKitCameraManager.pixelBuffer
property for accessing the camera preview pixel buffer. - Added
VideoKitCameraManager.humanTexture
property for accessing the camera human texture. - Added
VideoKitCameraManager.imageFeature
property for accessing the camera preview as an ML feature. - Added
VideoKitRecordButton.OnStartRecording
event. - Added
VideoKitRecordButton.OnStopRecording
event. - Fixed
MediaAsset.path
property containing invalid characters on Windows. - Fixed
MediaAsset.Share
task never completing when exception is raised on Android. - Fixed
MediaAsset.Share
failing for apps that use Vuforia on Android. - Fixed
MediaAsset.SaveToCameraRoll
method failing because of missing write permissions on older versions of Android. - Fixed
MediaAsset.FromFile
method failing on WebGL due to URL mishandling. - Fixed
CameraDevice.WhiteBalanceModeSupported
always returning false forWhiteBalanceMode.Continuous
on Android. - Fixed
CameraDevice.videoStabilizationMode
getter property causing hard crash on some Android devices. - Fixed
DllNotFoundException
when importing VideoKit in Linux editor. - Fixed rare crash due to frame rate setting when
CameraDevice.Discover
is invoked. - Fixed rare crash when recording is started when rendering with OpenGL ES3 on Android.
- Fixed rare crash when entering play mode in the Unity Editor because the app domain is reloaded.
- Removed
IMediaOutput
interface. - Removed
SampleBuffer
struct. UseAudioBuffer
struct instead. - Removed
VideoKitAudioManager.OnSampleBuffer
event. UseOnAudioBuffer
event instead. - Removed
CameraImage
parameter fromVideoKitCameraManager.OnCameraFrame
event.
0.0.14
- Added audio captioning using AI with the
AudioAsset.Caption
method. - Added ability to parse an arbitrary
struct
from text using AI with theTextAsset.To
method. - Added ability to pick images and videos from the camera roll with the
MediaAsset.FromCameraRoll<T>
method. - Added
MediaAsset
class for loading, inspecting, and sharing media. - Added
TextAsset
class for loading, inspecting, and extracting models from text. - Added
ImageAsset
class for loading, modifying, and sharing images. - Added
VideoAsset
class for loading, inspecting, and sharing videos. - Added
AudioAsset
class for loading, inspecting, and sharing audio. - Added
MediaRecorder
class to consolidate working with recorders. - Added
MediaFormat
enumeration for identifying and working with media formats. - Added
AudioDevice.Discover
static method for discovering available microphones. - Added
CameraDevice.Discover
static method for discovering available cameras. - Added
CameraDevice.exposureDuration
property to get the current camera exposure duration in seconds. - Added
CameraDevice.ISO
property to get the current camera exposure sensitivity. - Added
VideoKitProjectSettings
class for managing VideoKit settings in the current Unity project. - Added
VideoKitRecorder.frameRate
property for setting the frame rate of recorded GIF images. - Added
VideoKitRecordButton.recorder
property for getting and setting the recorder on which the button acts. - Added automatic camera pausing and resuming when app is suspended and resumed in
VideoKitCameraManager
. - Added native sharing support on macOS.
- Added native sharing support on WebGL for browsers that are WebShare compliant.
- Fixed
VideoKitRecorder.Resolution._240xAuto
,_720xAuto
, and_1080xAuto
constants resulting in incorrect resolutions. - Fixed visible artifacts when recording camera that only clears depth or doesn't clear at all (#32).
- Fixed camera permissions not being requested when calling
CameraDevice.CheckPermissions
on fresh Android app install. - Fixed
CameraDevice
preview stream being frozen in the Safari browser on macOS. - Fixed
CameraDevice
focus being lost when settingFocusMode.Locked
on Android. - Fixed
mimeType not supported
exception when creating aWEBMRecorder
in the Safari browser. - Fixed
std::bad_function_call
exception whenAudioDevice.StopRunning
is called on WebGL. - Fixed
CommitFrame
exception when recording audio to aWAV
file withVideoKitRecorder
class. - Fixed media preview in native share UI not showing when sharing an image or video on Android.
- Updated
VideoKitCameraManager.StartRunning
method to return aTask
that can be awaited. - Updated
VideoKitAudioManager.StartRunning
method to return aTask
that can be awaited. - Updated
VideoKitRecorder.StartRecording
method to return aTask
that can be awaited. - Updated
JPEGRecorder.FinishWriting
to return path to all recorded image files separated byPath.PathSeparator
character. - Refactored
IMediaDevice
interface toMediaDevice
class. - Refactored
MediaDeviceCriteria
class toMediaDeviceFilters
. - Refactored
DeviceLocation
enumeration toMediaDevice.Location
. - Refactored
PermissionStatus
enumeration toMediaDevice.PermissionStatus
. - Refactored
VideoKitCameraManager.Capabilities.MachineLearning
enumeration member toCapabilities.AI
. - Removed
IMediaRecorder
interface. UseMediaRecorder
class instead. - Removed
MP4Recorder
class. UseMediaRecorder.Create
withMediaFormat.MP4
instead. - Removed
HEVCRecorder
class. UseMediaRecorder.Create
withMediaFormat.HEVC
instead. - Removed
GIFRecorder
class. UseMediaRecorder.Create
withMediaFormat.GIF
instead. - Removed
WAVRecorder
class. UseMediaRecorder.Create
withMediaFormat.WAV
instead. - Removed
WEBMRecorder
class. UseMediaRecorder.Create
withMediaFormat.WEBM
instead. - Removed
JPEGRecorder
class. UseMediaRecorder.Create
withMediaFormat.JPEG
instead. - Removed
MediaDeviceQuery
class. UseAudioDevice.Discover
andCameraDevice.Discover
methods. - Removed
SharePayload
class. UseMediaAsset.Share
method instead. - Removed
SavePayload
class. UseMediaAsset.SaveToCameraRoll
method instead. - Removed
AudioSpectrumOutput
class. - Removed
IEquatable
interface inheritance fromMediaDevice
class. - Removed
AudioDevice.Equals
method as audio devices no longer define a custom equality method. - Removed
CameraDevice.Equals
method as camera devices no longer define a custom equality method. - Removed
VideoKitRecorder.frameDuration
property. UseVideoKitRecorder.frameRate
property instead. - Removed
VideoKitRecorder.Format
enumeration. UseMediaFormat
enumeration instead. - Removed
VideoKitRecordButton.OnTouchDown
event. - Removed
VideoKitRecordButton.OnTouchUp
event. - Updated top-level namespace from
NatML.VideoKit
toVideoKit
. - VideoKit now requires iOS 13+.
- VideoKit now requires macOS 11+.
0.0.13
- Fixed crash when rapidly switching cameras on WebGL (#23).
- Fixed rare memory exception when discovering audio devices on WebGL (#24).
- Fixed
VideoKitCameraManager.StopRunning
not stopping camera device on Safari (#25).
0.0.12
- Fixed resolution and frame rate settings not being set when restarting
VideoKitCameraManager
(#19). - Fixed
VideoKitCameraManager
error when switching scenes in WebGL (#17). - Fixed
VideoKitRecorder.prepareOnAwake
setting still causing stutter on first recording (#20).
0.0.11
- Added GPU acceleration for background removal capability in
VideoKitCameraManager
on Android. - Added
VideoKitCameraManager.frameRate
property for setting the camera preview frame rate. - Added
VideoKitRecordButton
UI prefab for building recording UIs similar to Instagram. - Added
VideoKitRecorder.Destination.Playback
enumeration member for immediately playing back recorded media. - Added help URLs to VideoKit components in the Unity inspector.
- Fixed
VideoKitCameraManager.device
property ignoring new values when the manager is not running. - Fixed sporadic crash when using
HumanTexture
capability withVideoKitCameraManager
. - Fixed crash when creating a
WEBMRecorder
with audio on WebGL. - Removed
VideoKitRecorder.OrientationMode
enumeration. - Removed
VideoKitRecorder.AspectMode
enumeration.
0.0.10
- Added support for realtime background removal using machine learning. See the docs.
- Added
MatteKitPredictor
for predicting a human texture from a given image. - Added
VideoKitCameraManager.facing
property for specifying a desired camera facing. - Added
VideoKitCameraManager.Facing
enumeration for specifying a desired camera facing. - Fixed camera preview being vertically mirrored when streaming the front camera on Android devices.
- Refactored
VideoKitRecorder.Resolution._2K
enumeration member toResolution._2560xAuto
. - Refactored
VideoKitRecorder.Resolution._4K
enumeration member toResolution._3840xAuto
. - Refactored
VideoKitCameraManager.cameraDevice
property toVideoKitCameraManager.device
. - Refactored
VideoKitAudioManager.audioDevice
property toVideoKitAudioManager.device
.
0.0.9
- Upgraded to NatML 1.1.
0.0.8
- Added
VideoKitRecorder.Resolution.Custom
resolution preset for specifying custom recording resolution. - Added
VideoKitRecorder.customResolution
property for setting custom recording resolution. - Added
VideoKitCameraView.focusMode
setting for specifying how to handle camera focus gestures. - Added
VideoKitCameraView.exposureMode
setting for specifying how to handle camera exposure gestures. - Added
VideoKitCameraView.zoomMode
setting for specifying how to handle camera zoom gestures. - Fixed bug where VideoKit components could not be added in the Unity 2022 editor.
- Removed
VideoKitCameraFocus
component. UseVideoKitCameraView.focusMode
setting instead. - Removed
VideoKitCameraZoom
component. UseVideoKitCameraView.zoomMode
setting instead.
0.0.7
- Added
VideoKitRecorder.frameSkip
property for recording everyn
frames during recording. - Fixed
VideoKitRecorder.StartRecording
throwing error on Android with OpenGL ES3. - Fixed
VideoKitRecorder
exception when stopping recording session on WebGL. - Fixed
NullReferenceException
inVideoKitRecorder
when stopping recording withoutaudioManager
assigned. - Refactored
VideoKitAudioManager.SampleRate._160000
toSampleRate._16000
.
0.0.6
- Added
VideoKitAudioManager
component for managing streaming audio from audio devices. - Added
VideoKitRecorder.RecordingSession
struct for receiving richer information about a completed recording session. - Added
VideoKitRecorder.audioManager
property for managing recording audio from audio devices. - Added
VideoKitRecorder.Resolution._320x240
resolution preset. - Added
VideoKitRecorder.Resolution._480x320
resolution preset. - Fixed
VideoKitRecorder
not allowing developer to selectDestination.PromptUser
destination. - Fixed
VideoKitRecorder
incorrect video size orientation when usingResolution.Screen
andOrientation.Portrait
. - Refactored
VideoKitRecorder.orientation
property toVideoKitRecorder.orientationMode
. - Refactored
VideoKitRecorder.aspect
property toVideoKitRecorder.aspectMode
. - Refactored
VideoKitRecorder.videoKeyframeInterval
property toVideoKitRecorder.keyframeInterval
. - Refactored
VideoKitCameraManager.OnFrame
event toOnCameraFrame
. - Removed
VideoKitRecorder.OnRecordingFailed
event. UseOnRecordingCompleted
event instead.
0.0.5
- Added
VideoKitRecorder.videoBitRate
property for specifying the video bitrate for applicable formats. - Added
VideoKitRecorder.videoKeyframeInterval
property for specifying the keyframe interval for applicable formats. - Added
VideoKitRecorder.audioBitRate
property for specifying the audio bitrate for applicable formats.
0.0.4
- Added
CropTextureInput
for recording a cropped area of the recording. - Added
WatermarkTextureInput
for adding a watermark to recorded videos. - Added
VideoKitRecorder.VideoMode.CameraDevice
video mode for recording videos directly from a camera device. - Added
VideoKitRecorder.destinationPathPrefix
property for specifying recording directory. - Added
VideoKitRecorder.Resolution._2K
resolution preset for recording at 2K WQHD. - Added
VideoKitRecorder.Resolution._4K
resolution preset for recording at 4K UHD. - Added
VideoKitCameraView.OnPresent
event to be notified when the view presents the camera preview to the user. - Added
VideoKitCameraFocus
UI component for focusing a camera device with tap gestures. - Fixed
CameraFrame.feature
property returning new feature instance on every access. - Refactored
MicrophoneInput
class toAudioDeviceInput
. - Refactored
VideoKitRecorder.AudioMode.Microphone
enumeration member toAudioMode.AudioDevice
.
0.0.3
- Fixed
NullReferenceException
when running camera withCapabilities.MachineLearning
enabled. - Fixed rare crash when using running camera with
Capabilities.HumanTexture
enabled. - Fixed recording session not being ended when
VideoKitRecorder
component is disabled or destroyed.
0.0.2
- Added
VideoKitCameraManager.Resolution.Default
resolution preset to leave camera resolution unchanged. - Added
VideoKitCameraManager.Capabilities.DepthTexture
enumeration member for streaming camera depth. - Added
MicrophoneInput
recorder input for recording audio frames from anAudioDevice
. - Added implicit conversion from
CameraFrame
toCameraImage
. - Fixed
CameraFrame.image
being uninitialized inVideoKitCameraManager.OnFrame
. - Refactored
VideoKitCameraManager.Play
method toStartRunning
. - Refactored
VideoKitCameraManager.Stop
method toStopRunning
. - Removed
CameraFrame.width
property. UseCameraFrame.image.width
instead. - Removed
CameraFrame.height
property. UseCameraFrame.image.height
instead. - Removed
CameraFrame.pixelBuffer
property. - Removed
CameraFrame.timestamp
property. - Removed
VideoKitCameraManager.Capabilities.PixelData
enumeration member.
0.0.1
- First pre-release.