mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-08-09 07:14:52 +02:00
Fix:Force AAC when transcoding ALAC audio file streams #1372
This commit is contained in:
@ -71,6 +71,10 @@ class Stream extends EventEmitter {
|
||||
if (!this.tracks.length) return null
|
||||
return this.tracks[0].mimeType
|
||||
}
|
||||
get tracksCodec() {
|
||||
if (!this.tracks.length) return null
|
||||
return this.tracks[0].codec
|
||||
}
|
||||
get mimeTypesToForceAAC() {
|
||||
return [
|
||||
AudioMimeType.FLAC,
|
||||
@ -81,6 +85,11 @@ class Stream extends EventEmitter {
|
||||
AudioMimeType.WEBMA
|
||||
]
|
||||
}
|
||||
get codecsToForceAAC() {
|
||||
return [
|
||||
'alac'
|
||||
]
|
||||
}
|
||||
get userToken() {
|
||||
return this.user.token
|
||||
}
|
||||
@ -130,7 +139,7 @@ class Stream extends EventEmitter {
|
||||
}
|
||||
|
||||
async checkSegmentNumberRequest(segNum) {
|
||||
var segStartTime = segNum * this.segmentLength
|
||||
const segStartTime = segNum * this.segmentLength
|
||||
if (this.startTime > segStartTime) {
|
||||
Logger.warn(`[STREAM] Segment #${segNum} Request @${secondsToTimestamp(segStartTime)} is before start time (${secondsToTimestamp(this.startTime)}) - Reset Transcode`)
|
||||
await this.reset(segStartTime - (this.segmentLength * 2))
|
||||
@ -139,7 +148,7 @@ class Stream extends EventEmitter {
|
||||
return false
|
||||
}
|
||||
|
||||
var distanceFromFurthestSegment = segNum - this.furthestSegmentCreated
|
||||
const distanceFromFurthestSegment = segNum - this.furthestSegmentCreated
|
||||
if (distanceFromFurthestSegment > 10) {
|
||||
Logger.info(`Segment #${segNum} requested is ${distanceFromFurthestSegment} segments from latest (${secondsToTimestamp(segStartTime)}) - Reset Transcode`)
|
||||
await this.reset(segStartTime - (this.segmentLength * 2))
|
||||
@ -264,7 +273,11 @@ class Stream extends EventEmitter {
|
||||
|
||||
const logLevel = process.env.NODE_ENV === 'production' ? 'error' : 'warning'
|
||||
|
||||
const audioCodec = (this.mimeTypesToForceAAC.includes(this.tracksMimeType) || this.transcodeForceAAC) ? 'aac' : 'copy'
|
||||
let audioCodec = 'copy'
|
||||
if (this.transcodeForceAAC || this.mimeTypesToForceAAC.includes(this.tracksMimeType) || this.codecsToForceAAC.includes(this.tracksCodec)) {
|
||||
Logger.debug(`[Stream] Forcing AAC for tracks with mime type ${this.tracksMimeType} and codec ${this.tracksCodec}`)
|
||||
audioCodec = 'aac'
|
||||
}
|
||||
|
||||
this.ffmpeg.addOption([
|
||||
`-loglevel ${logLevel}`,
|
||||
|
Reference in New Issue
Block a user