Back to Remotion

canCopyAudioTrack()

packages/docs/docs/webcodecs/can-copy-audio-track.mdx

4.0.4632.9 KB
Original Source

:::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().

Examples

tsx
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
}
tsx
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'};
  },
});

API

inputCodec

string <TsType type="MediaParserAudioCodec" source="@remotion/media-parser" />

The codec of the input audio track.

inputContainer

string <TsType type="MediaParserContainer" source="@remotion/media-parser" />

The container format of the input media.

outputContainer

string <TsType type="ConvertMediaContainer" source="@remotion/webcodecs" />

The container format of the output media.

outputAudioCodec

string | 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.

Return value

Returns a boolean.

See also