- Added support for flipped video: flip metadata is exposed via
InputVideoTrack.getFlip()(applied after rotation) and supported bidirectionally for ISOBMFF and Matroska, and flipping is now available across the whole API surface:VideoTrackMetadata.flip,VideoSampleInit.flip,VideoSample.flip,VideoSample.setFlip(), flip options for drawing video frames,VideoSampleTransformOptions.flip,VideoTransformOptions.flip,CanvasSinkOptions.flipandConversionVideoOptions.flip. Custom VideoSample transformers now also receive the flip as a transformation input, and it is a supported operation in@mediabunny/server. Flipping metadata can be automatically passed through in the Conversion API in the packet copy path. (#510) - Added
InputVideoTrack.getTransformationMatrix(): returns the raw 3x3 affine transformation matrix the track applies to its raw video frames. Rotation and flip are derived from this, but it can contain other transformations as well. This matrix can be written into new files viaVideoTrackMetadata.transformationMatrix. - Added automatic writing of the
btrt(bitrate) box when muxing ISOBMFF files - Added
BaseTrackMetadata.bitrateandBaseTrackMetadata.averageBitratefor providing bitrate guesstimates as metadata btrtbitrate metadata is now extracted from ISOBMFF files and exposed viaInputTrack.getBitrate()andInputTrack.getAverageBitrate()- Added a
frameRateoption to thecanEncodeVideohelper functions (#507) - Deprecated
OutputFormat.supportsVideoRotationMetadata, useOutputFormat.supportsVideoTransformationMetadatainstead. - Deprecated
ConversionVideoOptions.allowRotationMetadata, useConversionVideoOptions.allowTransformationMetadatainstead. - Fixed untranslated rotation matrices being written into ISOBMFF header boxes
- ISOBMFF demuxer now also respects the movie-global transformation matrix
- Fixed incorrect parsing of AES-128 IV in HLS (#509)
Output.finalize()failing now automatically transitions the Output to thecanceledstate (#506)