packages/docs/docs/webcodecs/can-copy-audio-track.mdx
:::warning We are phasing out Remotion WebCodecs and are moving to Mediabunny! :::
Part of the @remotion/webcodecs package.
:::warning Unstable API: This package is experimental. We might change the API at any time, until we remove this notice. :::
Given an AudioTrack, determine if it can be copied to the output without re-encoding.
You can obtain an AudioTrack using parseMedia() or during the conversion process using the onAudioTrack callback of convertMedia().
import {parseMedia} from '@remotion/media-parser';
import {canCopyAudioTrack} from '@remotion/webcodecs';
const {tracks, container} = await parseMedia({
src: 'https://remotion.media/BigBuckBunny.mp4',
fields: {
tracks: true,
container: true,
},
});
const audioTracks = tracks.filter((t) => t.type === 'audio');
for (const track of audioTracks) {
canCopyAudioTrack({
inputCodec: track.codecEnum,
outputContainer: 'webm',
inputContainer: container,
outputAudioCodec: null,
}); // bool
}
import {convertMedia, canCopyAudioTrack} from '@remotion/webcodecs';
await convertMedia({
src: 'https://remotion.media/BigBuckBunny.mp4',
container: 'webm',
videoCodec: 'vp8',
audioCodec: 'opus',
onAudioTrack: async ({track, outputContainer, inputContainer}) => {
const canCopy = canCopyAudioTrack({
inputCodec: track.codecEnum,
outputContainer,
inputContainer,
outputAudioCodec: null,
});
if (canCopy) {
return {type: 'copy'};
}
// Just to keep the example brief, in reality, you would re-encode the track here
return {type: 'drop'};
},
});
inputCodecstring <TsType type="MediaParserAudioCodec" source="@remotion/media-parser" />
The codec of the input audio track.
inputContainerstring <TsType type="MediaParserContainer" source="@remotion/media-parser" />
The container format of the input media.
outputContainerstring <TsType type="ConvertMediaContainer" source="@remotion/webcodecs" />
The container format of the output media.
outputAudioCodecstring | null <TsType type="ConvertMediaAudioCodec" source="@remotion/webcodecs" />
The desired audio codec of the output media. If null, it means you don't care about the audio codec as long as it can be copied.
Returns a boolean.