Back to Remotion

canReencodeAudioTrack()

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

4.0.4752.5 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 re-encoded to another track.

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 {canReencodeAudioTrack} from '@remotion/webcodecs';

const {tracks} = await parseMedia({
  src: 'https://remotion.media/BigBuckBunny.mp4',
  fields: {
    tracks: true,
  },
});

const audioTracks = tracks.filter((t) => t.type === 'audio');

for (const track of audioTracks) {
  await canReencodeAudioTrack({
    track,
    audioCodec: 'opus',
    bitrate: 128000,
    sampleRate: null,
  });
}
tsx
import {convertMedia, canReencodeAudioTrack} from '@remotion/webcodecs';

await convertMedia({
  src: 'https://remotion.media/BigBuckBunny.mp4',
  container: 'webm',
  videoCodec: 'vp8',
  audioCodec: 'opus',
  onAudioTrack: async ({track}) => {
    const canReencode = await canReencodeAudioTrack({
      track,
      audioCodec: 'opus',
      bitrate: 128000,
      sampleRate: null,
    });

    if (canReencode) {
      return {type: 'reencode', audioCodec: 'opus', bitrate: 128000, sampleRate: null};
    }

    return {type: 'drop'};
  },
});

API

track

A AudioTrack object.

audioCodec

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

bitrate

number

The bitrate with which you'd like to re-encode the audio track.

sampleRate

number | null

The sample rate with which you'd like to re-encode the audio track. If the sampleRate is null, the sample rate of the original track will be used.

Return value

Returns a Promise<boolean>.

See also