Update merge for m4b files, add progress event for local audiobooks

This commit is contained in:
advplyr 2021-09-11 19:59:48 -05:00
parent beaa1e14bb
commit c30955f909
5 changed files with 18 additions and 2 deletions

View File

@ -1,6 +1,6 @@
{
"name": "audiobookshelf-client",
"version": "1.1.3",
"version": "1.1.4",
"description": "Audiobook manager and player",
"main": "index.js",
"scripts": {

View File

@ -1,6 +1,6 @@
{
"name": "audiobookshelf",
"version": "1.1.3",
"version": "1.1.4",
"description": "Self-hosted audiobook server for managing and playing audiobooks.",
"main": "index.js",
"scripts": {

View File

@ -117,6 +117,7 @@ class DownloadManager {
const logLevel = process.env.NODE_ENV === 'production' ? 'error' : 'warning'
var ffmpegOptions = [`-loglevel ${logLevel}`]
var ffmpegOutputOptions = []
if (requiresEncode) {
ffmpegOptions = ffmpegOptions.concat([
@ -128,6 +129,10 @@ class DownloadManager {
])
} else {
ffmpegOptions.push('-c copy')
if (download.ext === '.m4b') {
Logger.info('Concat m4b\'s use -f mp4')
ffmpegOutputOptions.push('-f mp4')
}
}
if (download.includeMetadata) {
@ -153,6 +158,7 @@ class DownloadManager {
var workerData = {
inputs: ffmpegInputs,
options: ffmpegOptions,
outputOptions: ffmpegOutputOptions,
output: download.fullPath,
}

View File

@ -205,6 +205,7 @@ class Server {
socket.on('open_stream', (audiobookId) => this.streamManager.openStreamSocketRequest(socket, audiobookId))
socket.on('close_stream', () => this.streamManager.closeStreamRequest(socket))
socket.on('stream_update', (payload) => this.streamManager.streamUpdate(socket, payload))
socket.on('progress_update', (payload) => this.audiobookProgressUpdate(socket.sheepClient, payload))
socket.on('download', (payload) => this.downloadManager.downloadSocketRequest(socket, payload))
socket.on('test', () => {
socket.emit('test_received', socket.id)
@ -230,6 +231,14 @@ class Server {
res.sendStatus(200)
}
audiobookProgressUpdate(client, progressPayload) {
if (!client || !client.user) {
Logger.error('[Server] audiobookProgressUpdate invalid socket client')
return
}
client.user.updateAudiobookProgressFromStream(progressPayload)
}
async authenticateSocket(socket, token) {
var user = await this.auth.verifyToken(token)
if (!user) {

View File

@ -19,6 +19,7 @@ workerData.inputs.forEach((inputData) => {
})
if (workerData.options) ffmpegCommand.addOption(workerData.options)
if (workerData.outputOptions && workerData.outputOptions.length) ffmpegCommand.addOutputOption(workerData.outputOptions)
ffmpegCommand.output(workerData.output)
var isKilled = false