37 lines
1.7 KiB
JavaScript
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;
|