From 72953a2529c2b2e13d3f29af3aec6fa54e4e6329 Mon Sep 17 00:00:00 2001 From: NoobishSVK Date: Fri, 22 Mar 2024 22:15:27 +0100 Subject: [PATCH] hotfix for ffmpeg --- server/datahandler.js | 30 ++++++------------------------ server/stream/index.js | 10 ++++++---- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/server/datahandler.js b/server/datahandler.js index 93643ab..6ca82a8 100644 --- a/server/datahandler.js +++ b/server/datahandler.js @@ -260,14 +260,14 @@ function handleData(ws, receivedData) { for (const receivedLine of receivedLines) { switch (true) { - case receivedLine.startsWith('P'): + case receivedLine.startsWith('P'): // PI Code modifiedData = receivedLine.slice(1); legacyRdsPiBuffer = modifiedData; if (dataToSend.pi.length >= modifiedData.length || dataToSend.pi == '?') { dataToSend.pi = modifiedData; } break; - case receivedLine.startsWith('T'): + case receivedLine.startsWith('T'): // Frequency modifiedData = receivedLine.substring(1).split(",")[0]; if((modifiedData / 1000).toFixed(3) == dataToSend.freq) { @@ -285,11 +285,11 @@ function handleData(ws, receivedData) { dataToSend.pi = '?'; } break; - case receivedLine.startsWith('Z'): + case receivedLine.startsWith('Z'): // Antenna dataToSend.ant = receivedLine.substring(1); initialData.ant = receivedLine.substring(1); break; - case receivedLine.startsWith('G'): + case receivedLine.startsWith('G'): // EQ / iMS (RF+/IF+) const mapping = filterMappings[receivedLine]; if (mapping) { initialData.eq = mapping.eq; @@ -298,7 +298,7 @@ function handleData(ws, receivedData) { dataToSend.ims = mapping.ims; } break; - case receivedLine.startsWith('W'): + case receivedLine.startsWith('W'): // Bandwidth console.log(receivedLine); break; case receivedLine.startsWith('Sm'): @@ -313,7 +313,7 @@ function handleData(ws, receivedData) { case receivedLine.startsWith('SM'): processSignal(receivedLine, false, true); break; - case receivedLine.startsWith('R'): + case receivedLine.startsWith('R'): // RDS HEX modifiedData = receivedLine.slice(1); dataToSend.rds = true; @@ -375,19 +375,6 @@ function showOnlineUsers(currentUsers) { initialData.users = currentUsers; } -function convertSignal(dBFS, fullScaleVoltage = 1, inputImpedance = 300) { - // Convert dBFS to voltage - let voltage = Math.pow(10, dBFS / 20) * fullScaleVoltage; - - // Convert voltage to microvolts - let uV = voltage * 1e6; - - // Convert microvolts to dBuV - let dBf = 20 * Math.log10(uV / Math.sqrt(2) / Math.sqrt(inputImpedance)); - - return dBf.toFixed(2); -} - function processSignal(receivedData, st, stForced) { const modifiedData = receivedData.substring(2); const parsedValue = parseFloat(modifiedData); @@ -397,13 +384,8 @@ function processSignal(receivedData, st, stForced) { initialData.st_forced = stForced; if (!isNaN(parsedValue)) { - /*if (serverConfig.device && serverConfig.device === 'sdr') { - dataToSend.signal = convertSignal(parsedValue); - initialData.signal = convertSignal(parsedValue); - } else {*/ dataToSend.signal = parsedValue.toFixed(2); initialData.signal = parsedValue.toFixed(2); - //} if(dataToSend.signal > dataToSend.highestSignal) { dataToSend.highestSignal = dataToSend.signal; diff --git a/server/stream/index.js b/server/stream/index.js index a5b95d7..7dcfd07 100644 --- a/server/stream/index.js +++ b/server/stream/index.js @@ -5,20 +5,22 @@ const { configName, serverConfig, configUpdate, configSave } = require('../serve const { logDebug, logError, logInfo, logWarn, logFfmpeg } = require('../console'); function enableAudioStream() { + var ffmpegParams; var ffmpegCommand; serverConfig.webserver.webserverPort = Number(serverConfig.webserver.webserverPort); - const command = ffmpeg.replace(/\\/g, '\\\\'); const flags = `-fflags +nobuffer+flush_packets -flags low_delay -rtbufsize 6192 -probesize 32`; const codec = `-acodec pcm_s16le -ar 48000 -ac ${serverConfig.audio.audioChannels}`; const output = `-f s16le -fflags +nobuffer+flush_packets -packetsize 384 -flush_packets 1 -bufsize 960`; if (process.platform === 'win32') { // Windows - ffmpegCommand = `${flags} -f dshow -audio_buffer_size 50 -i audio="${serverConfig.audio.audioDevice}" ${codec} ${output} pipe:1 | node server/stream/3las.server.js -port ${serverConfig.webserver.webserverPort + 10} -samplerate 48000 -channels ${serverConfig.audio.audioChannels}`; + ffmpegCommand = ffmpeg.replace(/\\/g, '\\\\'); + ffmpegParams = `${flags} -f dshow -audio_buffer_size 50 -i audio="${serverConfig.audio.audioDevice}" ${codec} ${output} pipe:1 | node server/stream/3las.server.js -port ${serverConfig.webserver.webserverPort + 10} -samplerate 48000 -channels ${serverConfig.audio.audioChannels}`; } else { // Linux - ffmpegCommand = `${flags} -f alsa -i "${serverConfig.audio.softwareMode && serverConfig.audio.softwareMode == true ? 'plug' : ''}${serverConfig.audio.audioDevice}" ${codec} ${output} pipe:1 | node server/stream/3las.server.js -port ${serverConfig.webserver.webserverPort + 10} -samplerate 48000 -channels ${serverConfig.audio.audioChannels}`; + ffmpegCommand = 'ffmpeg'; + ffmpegParams = `${flags} -f alsa -i "${serverConfig.audio.softwareMode && serverConfig.audio.softwareMode == true ? 'plug' : ''}${serverConfig.audio.audioDevice}" ${codec} ${output} pipe:1 | node server/stream/3las.server.js -port ${serverConfig.webserver.webserverPort + 10} -samplerate 48000 -channels ${serverConfig.audio.audioChannels}`; } consoleCmd.logInfo("Using audio device: " + serverConfig.audio.audioDevice); @@ -26,7 +28,7 @@ function enableAudioStream() { // If an audio device is configured, start the stream if(serverConfig.audio.audioDevice.length > 2) { - const childProcess = spawn(command, [ffmpegCommand], { shell: true }); + const childProcess = spawn(ffmpegCommand, [ffmpegParams], { shell: true }); childProcess.stdout.on('data', (data) => { logFfmpeg(`stdout: ${data}`);