aboutsummaryrefslogtreecommitdiffhomepage
path: root/server
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2018-08-14 15:38:09 +0200
committerChocobozzz <me@florianbigard.com>2018-08-14 15:53:06 +0200
commiteed24d26db4c8363d5e5874841ee0c4f5fa275a8 (patch)
treec066346ebdc58b4175f5d8b53fe7fa90f82f3f0f /server
parente63dbd426e67672b4014c2a3ac3a227fbe26e886 (diff)
downloadPeerTube-eed24d26db4c8363d5e5874841ee0c4f5fa275a8.tar.gz
PeerTube-eed24d26db4c8363d5e5874841ee0c4f5fa275a8.tar.zst
PeerTube-eed24d26db4c8363d5e5874841ee0c4f5fa275a8.zip
Don't set a bitrate on unknown audio input
Diffstat (limited to 'server')
-rw-r--r--server/helpers/ffmpeg-utils.ts26
-rw-r--r--server/tests/api/videos/multiple-servers.ts8
2 files changed, 18 insertions, 16 deletions
diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts
index f8299c36f..8936005e0 100644
--- a/server/helpers/ffmpeg-utils.ts
+++ b/server/helpers/ffmpeg-utils.ts
@@ -236,7 +236,7 @@ namespace audio {
236 } 236 }
237 237
238 export namespace bitrate { 238 export namespace bitrate {
239 export const baseKbitrate = 384 239 const baseKbitrate = 384
240 240
241 const toBits = (kbits: number): number => { return kbits * 8000 } 241 const toBits = (kbits: number): number => { return kbits * 8000 }
242 242
@@ -274,7 +274,6 @@ namespace audio {
274 * See https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_vbr 274 * See https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_vbr
275 */ 275 */
276async function standard (_ffmpeg) { 276async function standard (_ffmpeg) {
277 let _bitrate = audio.bitrate.baseKbitrate
278 let localFfmpeg = _ffmpeg 277 let localFfmpeg = _ffmpeg
279 .format('mp4') 278 .format('mp4')
280 .videoCodec('libx264') 279 .videoCodec('libx264')
@@ -289,15 +288,6 @@ async function standard (_ffmpeg) {
289 return localFfmpeg.noAudio() 288 return localFfmpeg.noAudio()
290 } 289 }
291 290
292 // we try to reduce the ceiling bitrate by making rough correspondances of bitrates
293 // of course this is far from perfect, but it might save some space in the end
294 if (audio.bitrate[_audio.audioStream['codec_name']]) {
295 _bitrate = audio.bitrate[_audio.audioStream['codec_name']](_audio.audioStream['bit_rate'])
296 if (_bitrate === -1) {
297 return localFfmpeg.audioCodec('copy')
298 }
299 }
300
301 // we favor VBR, if a good AAC encoder is available 291 // we favor VBR, if a good AAC encoder is available
302 if ((await checkFFmpegEncoders()).get('libfdk_aac')) { 292 if ((await checkFFmpegEncoders()).get('libfdk_aac')) {
303 return localFfmpeg 293 return localFfmpeg
@@ -305,5 +295,17 @@ async function standard (_ffmpeg) {
305 .audioQuality(5) 295 .audioQuality(5)
306 } 296 }
307 297
308 return localFfmpeg.audioBitrate(_bitrate) 298 // we try to reduce the ceiling bitrate by making rough correspondances of bitrates
299 // of course this is far from perfect, but it might save some space in the end
300 const audioCodecName = _audio.audioStream['codec_name']
301 let bitrate: number
302 if (audio.bitrate[audioCodecName]) {
303 bitrate = audio.bitrate[audioCodecName](_audio.audioStream['bit_rate'])
304
305 if (bitrate === -1) return localFfmpeg.audioCodec('copy')
306 }
307
308 if (bitrate !== undefined) return localFfmpeg.audioBitrate(bitrate)
309
310 return localFfmpeg
309} 311}
diff --git a/server/tests/api/videos/multiple-servers.ts b/server/tests/api/videos/multiple-servers.ts
index 58381a0e5..cab096a12 100644
--- a/server/tests/api/videos/multiple-servers.ts
+++ b/server/tests/api/videos/multiple-servers.ts
@@ -209,19 +209,19 @@ describe('Test multiple servers', function () {
209 files: [ 209 files: [
210 { 210 {
211 resolution: 240, 211 resolution: 240,
212 size: 342000 212 size: 187000
213 }, 213 },
214 { 214 {
215 resolution: 360, 215 resolution: 360,
216 size: 433000 216 size: 278000
217 }, 217 },
218 { 218 {
219 resolution: 480, 219 resolution: 480,
220 size: 538000 220 size: 383000
221 }, 221 },
222 { 222 {
223 resolution: 720, 223 resolution: 720,
224 size: 861000 224 size: 706000
225 } 225 }
226 ], 226 ],
227 thumbnailfile: 'thumbnail', 227 thumbnailfile: 'thumbnail',