mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-08-14 13:47:16 +02:00
Merge branch 'master' of https://github.com/advplyr/audiobookshelf into oidc
This commit is contained in:
commit
27f498ffae
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "audiobookshelf-client",
|
"name": "audiobookshelf-client",
|
||||||
"version": "1.6.64",
|
"version": "1.6.65",
|
||||||
"description": "Audiobook manager and player",
|
"description": "Audiobook manager and player",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "audiobookshelf",
|
"name": "audiobookshelf",
|
||||||
"version": "1.6.64",
|
"version": "1.6.65",
|
||||||
"description": "Self-hosted audiobook server for managing and playing audiobooks",
|
"description": "Self-hosted audiobook server for managing and playing audiobooks",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -532,7 +532,7 @@ class Server {
|
|||||||
var exists = await fs.pathExists(outputDirectory)
|
var exists = await fs.pathExists(outputDirectory)
|
||||||
if (exists) {
|
if (exists) {
|
||||||
Logger.error(`[Server] Upload directory "${outputDirectory}" already exists`)
|
Logger.error(`[Server] Upload directory "${outputDirectory}" already exists`)
|
||||||
return res.status(500).error(`Directory "${outputDirectory}" already exists`)
|
return res.status(500).send(`Directory "${outputDirectory}" already exists`)
|
||||||
}
|
}
|
||||||
|
|
||||||
await fs.ensureDir(outputDirectory)
|
await fs.ensureDir(outputDirectory)
|
||||||
|
@ -63,9 +63,12 @@ class Stream extends EventEmitter {
|
|||||||
return this.tracks[0].ext.toLowerCase().slice(1)
|
return this.tracks[0].ext.toLowerCase().slice(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fmp4 does not work on iOS devices: https://github.com/advplyr/audiobookshelf-app/issues/85
|
||||||
|
// Workaround: Force AAC transcode for FLAC
|
||||||
get hlsSegmentType() {
|
get hlsSegmentType() {
|
||||||
var hasFlac = this.tracks.find(t => t.ext.toLowerCase() === '.flac')
|
return 'mpegts'
|
||||||
return hasFlac ? 'fmp4' : 'mpegts'
|
// var hasFlac = this.tracks.find(t => t.ext.toLowerCase() === '.flac')
|
||||||
|
// return hasFlac ? 'fmp4' : 'mpegts'
|
||||||
}
|
}
|
||||||
|
|
||||||
get segmentBasename() {
|
get segmentBasename() {
|
||||||
@ -333,7 +336,9 @@ class Stream extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const logLevel = process.env.NODE_ENV === 'production' ? 'error' : 'warning'
|
const logLevel = process.env.NODE_ENV === 'production' ? 'error' : 'warning'
|
||||||
const audioCodec = (this.hlsSegmentType === 'fmp4' || this.tracksAudioFileType === 'opus' || this.transcodeForceAAC) ? 'aac' : 'copy'
|
|
||||||
|
const audioCodec = (this.tracksAudioFileType === 'flac' || this.tracksAudioFileType === 'opus' || this.transcodeForceAAC) ? 'aac' : 'copy'
|
||||||
|
|
||||||
this.ffmpeg.addOption([
|
this.ffmpeg.addOption([
|
||||||
`-loglevel ${logLevel}`,
|
`-loglevel ${logLevel}`,
|
||||||
'-map 0:a',
|
'-map 0:a',
|
||||||
@ -354,8 +359,8 @@ class Stream extends EventEmitter {
|
|||||||
]
|
]
|
||||||
if (this.hlsSegmentType === 'fmp4') {
|
if (this.hlsSegmentType === 'fmp4') {
|
||||||
hlsOptions.push('-strict -2')
|
hlsOptions.push('-strict -2')
|
||||||
// var fmp4InitFilename = Path.join(this.streamPath, 'init.mp4')
|
var fmp4InitFilename = Path.join(this.streamPath, 'init.mp4')
|
||||||
var fmp4InitFilename = 'init.mp4'
|
// var fmp4InitFilename = 'init.mp4'
|
||||||
hlsOptions.push(`-hls_fmp4_init_filename ${fmp4InitFilename}`)
|
hlsOptions.push(`-hls_fmp4_init_filename ${fmp4InitFilename}`)
|
||||||
}
|
}
|
||||||
this.ffmpeg.addOption(hlsOptions)
|
this.ffmpeg.addOption(hlsOptions)
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
const ffprobe = require('node-ffprobe')
|
const ffprobe = require('node-ffprobe')
|
||||||
const Path = require('path')
|
|
||||||
|
if (process.env.FFPROBE_PATH) {
|
||||||
|
ffprobe.FFPROBE_PATH = process.env.FFPROBE_PATH
|
||||||
|
}
|
||||||
|
|
||||||
const AudioProbeData = require('../scanner/AudioProbeData')
|
const AudioProbeData = require('../scanner/AudioProbeData')
|
||||||
|
|
||||||
@ -278,11 +281,7 @@ function parseProbeData(data, verbose = false) {
|
|||||||
|
|
||||||
// Updated probe returns AudioProbeData object
|
// Updated probe returns AudioProbeData object
|
||||||
function probe(filepath, verbose = false) {
|
function probe(filepath, verbose = false) {
|
||||||
var options = {}
|
return ffprobe(filepath)
|
||||||
if (process.env.FFPROBE_PATH) {
|
|
||||||
options.path = process.env.FFPROBE_PATH
|
|
||||||
}
|
|
||||||
return ffprobe(filepath, options)
|
|
||||||
.then(raw => {
|
.then(raw => {
|
||||||
var rawProbeData = parseProbeData(raw, verbose)
|
var rawProbeData = parseProbeData(raw, verbose)
|
||||||
if (!rawProbeData || !rawProbeData.audio_stream) {
|
if (!rawProbeData || !rawProbeData.audio_stream) {
|
||||||
|
Loading…
Reference in New Issue
Block a user