Files

37 lines
1.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultOnAudioTrackHandler = void 0;
const media_parser_1 = require("@remotion/media-parser");
const can_reencode_audio_track_1 = require("./can-reencode-audio-track");
const DEFAULT_BITRATE = 128000;
const defaultOnAudioTrackHandler = async ({ track, defaultAudioCodec, logLevel, canCopyTrack, }) => {
const bitrate = DEFAULT_BITRATE;
if (canCopyTrack) {
media_parser_1.MediaParserInternals.Log.verbose(logLevel, `Track ${track.trackId} (audio): Can copy track, therefore copying`);
return Promise.resolve({ type: 'copy' });
}
// The idea is that for example for GIFs, we will return defaultAudioCodec = null
if (defaultAudioCodec === null) {
media_parser_1.MediaParserInternals.Log.verbose(logLevel, `Track ${track.trackId} (audio): Container does not support audio, dropping audio`);
return Promise.resolve({ type: 'drop' });
}
const canReencode = await (0, can_reencode_audio_track_1.canReencodeAudioTrack)({
audioCodec: defaultAudioCodec,
track,
bitrate,
sampleRate: null,
});
if (canReencode) {
media_parser_1.MediaParserInternals.Log.verbose(logLevel, `Track ${track.trackId} (audio): Cannot copy, but re-encode, therefore re-encoding`);
return Promise.resolve({
type: 'reencode',
bitrate,
audioCodec: defaultAudioCodec,
sampleRate: null,
});
}
media_parser_1.MediaParserInternals.Log.verbose(logLevel, `Track ${track.trackId} (audio): Can neither re-encode nor copy, failing render`);
return Promise.resolve({ type: 'fail' });
};
exports.defaultOnAudioTrackHandler = defaultOnAudioTrackHandler;