From 18520e4368c00050fb1fa0d30dc1121de635574b Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Mon, 1 Jul 2024 22:38:01 +0200 Subject: [PATCH] [mirotalksfu] - fix ffmpeg in Docker --- Dockerfile | 1 + app/src/RtmpFile.js | 5 +++-- app/src/RtmpStreamer.js | 5 +++-- app/src/RtmpUrl.js | 5 +++-- app/src/Server.js | 2 +- app/src/config.template.js | 2 ++ package.json | 3 +-- public/js/Room.js | 4 ++-- public/js/RoomClient.js | 2 +- 9 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9a7fc233..b05610b6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,7 @@ RUN apt-get update \ build-essential \ python3 \ python3-pip \ + ffmpeg \ && rm -rf /var/lib/apt/lists/* # Copy package.json and install npm dependencies diff --git a/app/src/RtmpFile.js b/app/src/RtmpFile.js index 66380947..1e16e1b9 100644 --- a/app/src/RtmpFile.js +++ b/app/src/RtmpFile.js @@ -1,8 +1,9 @@ 'use strict'; +const config = require('./config'); +const ffmpegPath = config.server.rtmp && config.server.rtmp.ffmpeg ? config.server.rtmp.ffmpeg : '/usr/bin/ffmpeg'; const ffmpeg = require('fluent-ffmpeg'); -const ffmpegInstaller = require('@ffmpeg-installer/ffmpeg'); -ffmpeg.setFfmpegPath(ffmpegInstaller.path); +ffmpeg.setFfmpegPath(ffmpegPath); const Logger = require('./Logger'); const log = new Logger('RtmpFile'); diff --git a/app/src/RtmpStreamer.js b/app/src/RtmpStreamer.js index 0ac6c90b..16756b90 100644 --- a/app/src/RtmpStreamer.js +++ b/app/src/RtmpStreamer.js @@ -1,9 +1,10 @@ 'use strict'; +const config = require('./config'); const { PassThrough } = require('stream'); const ffmpeg = require('fluent-ffmpeg'); -const ffmpegInstaller = require('@ffmpeg-installer/ffmpeg'); -ffmpeg.setFfmpegPath(ffmpegInstaller.path); +const ffmpegPath = config.server.rtmp && config.server.rtmp.ffmpeg ? config.server.rtmp.ffmpeg : '/usr/bin/ffmpeg'; +ffmpeg.setFfmpegPath(ffmpegPath); const Logger = require('./Logger'); const log = new Logger('RtmpStreamer'); diff --git a/app/src/RtmpUrl.js b/app/src/RtmpUrl.js index a53d1f39..bb9e9e8a 100644 --- a/app/src/RtmpUrl.js +++ b/app/src/RtmpUrl.js @@ -1,8 +1,9 @@ 'use strict'; +const config = require('./config'); +const ffmpegPath = config.server.rtmp && config.server.rtmp.ffmpeg ? config.server.rtmp.ffmpeg : '/usr/bin/ffmpeg'; const ffmpeg = require('fluent-ffmpeg'); -const ffmpegInstaller = require('@ffmpeg-installer/ffmpeg'); -ffmpeg.setFfmpegPath(ffmpegInstaller.path); +ffmpeg.setFfmpegPath(ffmpegPath); const Logger = require('./Logger'); const log = new Logger('RtmpUrl'); diff --git a/app/src/Server.js b/app/src/Server.js index 84370dee..50c304f8 100644 --- a/app/src/Server.js +++ b/app/src/Server.js @@ -44,7 +44,7 @@ dependencies: { * @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon * @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970 * @author Miroslav Pejic - miroslav.pejic.85@gmail.com - * @version 1.4.76 + * @version 1.4.77 * */ diff --git a/app/src/config.template.js b/app/src/config.template.js index daffb25b..afc58fc2 100644 --- a/app/src/config.template.js +++ b/app/src/config.template.js @@ -76,6 +76,7 @@ module.exports = { - apiSecret: The API secret for streaming WebRTC to RTMP through the MiroTalk API. - expirationHours: The number of hours before the RTMP URL expires. Default is 4 hours. - dir: Directory where your video files are stored to be streamed via RTMP. + - ffmpeg: Path of the ffmpeg installation on the system (which ffmpeg) Important: Ensure your RTMP server is operational before proceeding. You can start the server by running the following command: - Start: npm run nms-start - Start the RTMP server. @@ -94,6 +95,7 @@ module.exports = { apiSecret: 'mirotalkRtmpApiSecret', expirationHours: 4, dir: 'rtmp', + ffmpeg: '/usr/bin/ffmpeg', }, }, middleware: { diff --git a/package.json b/package.json index 49e0fe71..e7eae5b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mirotalksfu", - "version": "1.4.76", + "version": "1.4.77", "description": "WebRTC SFU browser-based video calls", "main": "Server.js", "scripts": { @@ -55,7 +55,6 @@ "node": ">=18" }, "dependencies": { - "@ffmpeg-installer/ffmpeg": "^1.1.0", "@sentry/integrations": "7.114.0", "@sentry/node": "7.114.0", "axios": "^1.7.2", diff --git a/public/js/Room.js b/public/js/Room.js index 3c047166..032c280b 100644 --- a/public/js/Room.js +++ b/public/js/Room.js @@ -11,7 +11,7 @@ if (location.href.substr(0, 5) !== 'https') location.href = 'https' + location.h * @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon * @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970 * @author Miroslav Pejic - miroslav.pejic.85@gmail.com - * @version 1.4.76 + * @version 1.4.77 * */ @@ -4032,7 +4032,7 @@ function showAbout() { imageUrl: image.about, customClass: { image: 'img-about' }, position: 'center', - title: 'WebRTC SFU v1.4.76', + title: 'WebRTC SFU v1.4.77', html: `
diff --git a/public/js/RoomClient.js b/public/js/RoomClient.js index e6e6e997..45971ca7 100644 --- a/public/js/RoomClient.js +++ b/public/js/RoomClient.js @@ -9,7 +9,7 @@ * @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon * @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970 * @author Miroslav Pejic - miroslav.pejic.85@gmail.com - * @version 1.4.76 + * @version 1.4.77 * */