Skip to main content

defaultOnVideoTrackHandler()

This is the default function if no onVideoTrack handler is provided to convertMedia().
You may use this function if you want to customize part of the track transformation logic, but fall back to the default behavior for the rest.

Falling back to the default behavior
tsx
import {convertMedia, defaultOnAudioTrackHandler} from'@remotion/webcodecs';
awaitconvertMedia({
src: 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
container: 'webm',
onAudioTrack: (params) => {
// Custom logic for handling video tracks
// ...
// Fall back to the default behavior
returndefaultOnAudioTrackHandler(params);
},
});

Algorithm

The default behavior is as follows:

  • Check if the track can be copied without re-encoding, if true, then do that.
  • Determine the video codec to be used - either videoCodec which was passed to convertMedia() or the default codec for the container.
  • Check if the track can be re-encoded with the chosen video codec, if true, then do that.
  • If the track can be neither copied nor re-encoded, then fail the render.
    You may alternatively return {type: 'drop'} to remove the video track, but still succeed the other tracks.
Source code for defaultOnVideoTrackHandler
tsx
import {canReencodeVideoTrack, getDefaultVideoCodec, ConvertMediaOnVideoTrackHandler, VideoOperation} from'@remotion/webcodecs';
exportconstdefaultOnVideoTrackHandler:ConvertMediaOnVideoTrackHandler=async ({track, defaultVideoCodec, logLevel, outputContainer, rotate, inputContainer, canCopyTrack, resizeOperation}):Promise<VideoOperation> => {
if (canCopyTrack) {
returnPromise.resolve({type: 'copy'});
}
// If for example exporting to audio, the default video codec will be null
if (defaultVideoCodec ===null) {
returnPromise.resolve({type: 'drop'});
}
constcanReencode=awaitcanReencodeVideoTrack({
videoCodec: defaultVideoCodec,
track,
resizeOperation,
rotate,
});
if (canReencode) {
returnPromise.resolve({
type: 'reencode',
videoCodec: defaultVideoCodec,
rotation: rotate - track.rotation,
});
}
returnPromise.resolve({type: 'fail'});
};

See also

AltStyle によって変換されたページ (->オリジナル) /