X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fffmpeg-utils.ts;h=7c45f36326de30ba57b6d143d8e8258d9c2e8623;hb=8b60488020883c66d3831eacd030893ab184268f;hp=f8299c36f0b907809243a3a732d0c6ded293f3da;hpb=06215f15e0a9fea2ef95b8b49cb2b5868fb64017;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts index f8299c36f..7c45f3632 100644 --- a/server/helpers/ffmpeg-utils.ts +++ b/server/helpers/ffmpeg-utils.ts @@ -1,11 +1,11 @@ import * as ffmpeg from 'fluent-ffmpeg' import { join } from 'path' import { VideoResolution } from '../../shared/models/videos' -import { CONFIG, VIDEO_TRANSCODING_FPS, FFMPEG_NICE } from '../initializers' -import { unlinkPromise } from './core-utils' +import { CONFIG, FFMPEG_NICE, VIDEO_TRANSCODING_FPS } from '../initializers' import { processImage } from './image-utils' import { logger } from './logger' import { checkFFmpegEncoders } from '../initializers/checker' +import { remove } from 'fs-extra' function computeResolutionsToTranscode (videoFileHeight: number) { const resolutionsEnabled: number[] = [] @@ -90,7 +90,7 @@ async function generateImageFromVideoFile (fromPath: string, folder: string, ima logger.error('Cannot generate image from video %s.', fromPath, { err }) try { - await unlinkPromise(pendingImagePath) + await remove(pendingImagePath) } catch (err) { logger.debug('Cannot remove pending image path after generation error.', { err }) } @@ -236,7 +236,7 @@ namespace audio { } export namespace bitrate { - export const baseKbitrate = 384 + const baseKbitrate = 384 const toBits = (kbits: number): number => { return kbits * 8000 } @@ -274,7 +274,6 @@ namespace audio { * See https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_vbr */ async function standard (_ffmpeg) { - let _bitrate = audio.bitrate.baseKbitrate let localFfmpeg = _ffmpeg .format('mp4') .videoCodec('libx264') @@ -289,15 +288,6 @@ async function standard (_ffmpeg) { return localFfmpeg.noAudio() } - // we try to reduce the ceiling bitrate by making rough correspondances of bitrates - // of course this is far from perfect, but it might save some space in the end - if (audio.bitrate[_audio.audioStream['codec_name']]) { - _bitrate = audio.bitrate[_audio.audioStream['codec_name']](_audio.audioStream['bit_rate']) - if (_bitrate === -1) { - return localFfmpeg.audioCodec('copy') - } - } - // we favor VBR, if a good AAC encoder is available if ((await checkFFmpegEncoders()).get('libfdk_aac')) { return localFfmpeg @@ -305,5 +295,17 @@ async function standard (_ffmpeg) { .audioQuality(5) } - return localFfmpeg.audioBitrate(_bitrate) + // we try to reduce the ceiling bitrate by making rough correspondances of bitrates + // of course this is far from perfect, but it might save some space in the end + const audioCodecName = _audio.audioStream['codec_name'] + let bitrate: number + if (audio.bitrate[audioCodecName]) { + bitrate = audio.bitrate[audioCodecName](_audio.audioStream['bit_rate']) + + if (bitrate === -1) return localFfmpeg.audioCodec('copy') + } + + if (bitrate !== undefined) return localFfmpeg.audioBitrate(bitrate) + + return localFfmpeg }