Audio encoding fixes
This commit is contained in:
parent
a5b65b067e
commit
b97992294f
1 changed files with 10 additions and 6 deletions
|
@ -4,6 +4,7 @@ const termkit = require('terminal-kit')
|
|||
class Encoder {
|
||||
settings
|
||||
encoder
|
||||
#maxOpusBitrate = 500 //kbits
|
||||
constructor(settings, currentSetting) {
|
||||
this.settings = settings
|
||||
}
|
||||
|
@ -28,8 +29,12 @@ class Encoder {
|
|||
*/
|
||||
async encodeAudio(path, out) {
|
||||
let [duration, resolution] = await this.#getDurationAndResolution(path)
|
||||
const audioBitRate = Math.round(62000 / duration)
|
||||
let audioBitRate = Math.round(this.settings.size_limit / duration)
|
||||
if (audioBitRate > this.#maxOpusBitrate) {
|
||||
audioBitRate = this.#maxOpusBitrate
|
||||
}
|
||||
this.encoder = exec(`ffmpeg -y -i "${path}" -c:a libvorbis -b:a ${audioBitRate}k "${out}.ogg"`)
|
||||
console.log(`ffmpeg -y -i "${path}" -c:a libvorbis -b:a ${audioBitRate}k "${out}.ogg"`)
|
||||
return [duration, out, undefined]
|
||||
}
|
||||
|
||||
|
@ -47,14 +52,13 @@ class Encoder {
|
|||
let [duration, resolutionHeight] = await this.#getDurationAndResolution(path)
|
||||
|
||||
//Calculates video bitrate to fit right under 8mb 1:7 audio:video. 8Mb * 8 = 64000(8mb) - 1000 for overhead, *0.95 to leave space for container.
|
||||
const maxOpusBitrate = 256 //kbits
|
||||
|
||||
let audioBitRate = Math.round((this.settings.size_limit / 8 * 1 / duration) * 0.95)
|
||||
let videoBitRate = Math.round((this.settings.size_limit / 8 * 7 / duration) * 0.95)
|
||||
//if maxOpusBitrate reached, cap the audio bit rate and give the rest of the bits to video
|
||||
if (audioBitRate > maxOpusBitrate) {
|
||||
videoBitRate += audioBitRate - maxOpusBitrate
|
||||
audioBitRate = maxOpusBitrate
|
||||
//if this.#maxOpusBitrate reached, cap the audio bit rate and give the rest of the bits to video
|
||||
if (audioBitRate > this.#maxOpusBitrate) {
|
||||
videoBitRate += audioBitRate - this.#maxOpusBitrate
|
||||
audioBitRate = this.#maxOpusBitrate
|
||||
}
|
||||
|
||||
let command = ""
|
||||
|
|
Loading…
Reference in a new issue