[mirotalk] - fix audio issue

This commit is contained in:
Miroslav Pejic
2025-10-31 09:13:01 +01:00
parent ee29e63e6d
commit e48a6abb50
5 changed files with 60 additions and 94 deletions
+1 -1
View File
@@ -45,7 +45,7 @@ dependencies: {
* @license For commercial use or closed source, contact us at license.mirotalk@gmail.com or purchase directly from CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.6.08
* @version 1.6.09
*
*/
+34 -84
View File
@@ -1,15 +1,15 @@
{
"name": "mirotalk",
"version": "1.6.08",
"version": "1.6.09",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mirotalk",
"version": "1.6.08",
"version": "1.6.09",
"license": "AGPL-3.0",
"dependencies": {
"@mattermost/client": "10.12.0",
"@mattermost/client": "11.0.4",
"@ngrok/ngrok": "1.5.2",
"@sentry/node": "^10.22.0",
"axios": "^1.13.1",
@@ -26,7 +26,7 @@
"helmet": "^8.1.0",
"httpolyglot": "0.1.2",
"js-yaml": "^4.1.0",
"jsdom": "^27.0.1",
"jsdom": "^27.1.0",
"jsonwebtoken": "^9.0.2",
"nodemailer": "^7.0.10",
"openai": "^6.7.0",
@@ -45,6 +45,12 @@
"sinon": "^21.0.0"
}
},
"node_modules/@acemir/cssom": {
"version": "0.9.19",
"resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.19.tgz",
"integrity": "sha512-Pp2gAQXPZ2o7lt4j0IMwNRXqQ3pagxtDj5wctL5U2Lz4oV0ocDNlkgx4DpxfyKav4S/bePuI+SMqcBSUHLy9kg==",
"license": "MIT"
},
"node_modules/@apm-js-collab/code-transformer": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/@apm-js-collab/code-transformer/-/code-transformer-0.8.2.tgz",
@@ -108,9 +114,9 @@
}
},
"node_modules/@asamuzakjp/dom-selector": {
"version": "6.7.2",
"resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.2.tgz",
"integrity": "sha512-ccKogJI+0aiDhOahdjANIc9SDixSud1gbwdVrhn7kMopAtLXqsz9MKmQQtIl6Y5aC2IYq+j4dz/oedL2AVMmVQ==",
"version": "6.7.3",
"resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.3.tgz",
"integrity": "sha512-kiGFeY+Hxf5KbPpjRLf+ffWbkos1aGo8MBfd91oxS3O57RgU3XhZrt/6UzoVF9VMpWbC3v87SRc9jxGrc9qHtQ==",
"license": "MIT",
"dependencies": {
"@asamuzakjp/nwsapi": "^2.3.9",
@@ -227,9 +233,9 @@
}
},
"node_modules/@csstools/css-syntax-patches-for-csstree": {
"version": "1.0.14",
"resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz",
"integrity": "sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==",
"version": "1.0.15",
"resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.15.tgz",
"integrity": "sha512-q0p6zkVq2lJnmzZVPR33doA51G7YOja+FBvRdp5ISIthL0MtFCgYHHhR563z9WFGxcOn0WfjSkPDJ5Qig3H3Sw==",
"funding": [
{
"type": "github",
@@ -243,9 +249,6 @@
"license": "MIT-0",
"engines": {
"node": ">=18"
},
"peerDependencies": {
"postcss": "^8.4"
}
},
"node_modules/@csstools/css-tokenizer": {
@@ -301,12 +304,12 @@
}
},
"node_modules/@mattermost/client": {
"version": "10.12.0",
"resolved": "https://registry.npmjs.org/@mattermost/client/-/client-10.12.0.tgz",
"integrity": "sha512-O+PRXXoR/8VXsMuE6ShsWAt/iuvCdyFhXtsJxYCeBrfg99L22lvTaIxE8xZN8lVDIOwJI9jYxFgb8CTGND/l9Q==",
"version": "11.0.4",
"resolved": "https://registry.npmjs.org/@mattermost/client/-/client-11.0.4.tgz",
"integrity": "sha512-LOAvveY0ud+OzUrE1LzWCnAswbMrvlGglpDqtVXcOuNhWdhHWmj+YHyLPOxBEJ78QIGhI0nJJ4kd+jc0vgd+1g==",
"license": "MIT",
"peerDependencies": {
"@mattermost/types": "10.12.0",
"@mattermost/types": "11.0.4",
"typescript": "^4.3.0 || ^5.0.0"
},
"peerDependenciesMeta": {
@@ -316,9 +319,9 @@
}
},
"node_modules/@mattermost/types": {
"version": "10.12.0",
"resolved": "https://registry.npmjs.org/@mattermost/types/-/types-10.12.0.tgz",
"integrity": "sha512-FGTpj7enl+2M9ElUyivW46K7j0/eGh6vrfPsw/C64W55In3yyal6YhLRv1UTGGSdmGwtLwZuFuv3Ot/kCIY8Jw==",
"version": "11.0.4",
"resolved": "https://registry.npmjs.org/@mattermost/types/-/types-11.0.4.tgz",
"integrity": "sha512-aFjwp5rBVO9Holb07RPYCzj1YbBB8Jgqu9sfdMID1MitweR7kaRODWWBeIwVU4RZYM52HvlRlYzxHK/BuhiA/A==",
"license": "MIT",
"peer": true,
"peerDependencies": {
@@ -2119,9 +2122,9 @@
}
},
"node_modules/cssstyle": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.1.tgz",
"integrity": "sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==",
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.2.tgz",
"integrity": "sha512-zDMqXh8Vs1CdRYZQ2M633m/SFgcjlu8RB8b/1h82i+6vpArF507NSYIWJHGlJaTWoS+imcnctmEz43txhbVkOw==",
"license": "MIT",
"dependencies": {
"@asamuzakjp/css-color": "^4.0.3",
@@ -3536,13 +3539,14 @@
}
},
"node_modules/jsdom": {
"version": "27.0.1",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.0.1.tgz",
"integrity": "sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==",
"version": "27.1.0",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.1.0.tgz",
"integrity": "sha512-Pcfm3eZ+eO4JdZCXthW9tCDT3nF4K+9dmeZ+5X39n+Kqz0DDIABRP5CAEOHRFZk8RGuC2efksTJxrjp8EXCunQ==",
"license": "MIT",
"dependencies": {
"@asamuzakjp/dom-selector": "^6.7.2",
"cssstyle": "^5.3.1",
"@acemir/cssom": "^0.9.19",
"@asamuzakjp/dom-selector": "^6.7.3",
"cssstyle": "^5.3.2",
"data-urls": "^6.0.0",
"decimal.js": "^10.6.0",
"html-encoding-sniffer": "^4.0.0",
@@ -3550,7 +3554,6 @@
"https-proxy-agent": "^7.0.6",
"is-potential-custom-element-name": "^1.0.1",
"parse5": "^8.0.0",
"rrweb-cssom": "^0.8.0",
"saxes": "^6.0.0",
"symbol-tree": "^3.2.4",
"tough-cookie": "^6.0.0",
@@ -3563,7 +3566,7 @@
"xml-name-validator": "^5.0.0"
},
"engines": {
"node": ">=20"
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"canvas": "^3.0.0"
@@ -3922,25 +3925,6 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/negotiator": {
"version": "0.6.4",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
@@ -4405,6 +4389,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"dev": true,
"license": "ISC"
},
"node_modules/picomatch": {
@@ -4420,35 +4405,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/postgres-array": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
@@ -4768,12 +4724,6 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
"node_modules/rrweb-cssom": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
"integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==",
"license": "MIT"
},
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "mirotalk",
"version": "1.6.08",
"version": "1.6.09",
"description": "A free WebRTC browser-based video call",
"main": "server.js",
"scripts": {
@@ -41,7 +41,7 @@
"license": "AGPL-3.0",
"homepage": "https://github.com/miroslavpejic85/mirotalk",
"dependencies": {
"@mattermost/client": "10.12.0",
"@mattermost/client": "11.0.4",
"@ngrok/ngrok": "1.5.2",
"@sentry/node": "^10.22.0",
"axios": "^1.13.1",
@@ -57,7 +57,7 @@
"he": "^1.2.0",
"helmet": "^8.1.0",
"httpolyglot": "0.1.2",
"jsdom": "^27.0.1",
"jsdom": "^27.1.0",
"jsonwebtoken": "^9.0.2",
"js-yaml": "^4.1.0",
"nodemailer": "^7.0.10",
+1 -1
View File
@@ -75,7 +75,7 @@ let brand = {
},
about: {
imageUrl: '../images/mirotalk-logo.gif',
title: 'WebRTC P2P v1.6.08',
title: 'WebRTC P2P v1.6.09',
html: `
<button
id="support-button"
+21 -5
View File
@@ -15,7 +15,7 @@
* @license For commercial use or closed source, contact us at license.mirotalk@gmail.com or purchase directly from CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.6.08
* @version 1.6.09
*
*/
@@ -2430,9 +2430,25 @@ async function handleOnTrack(peer_id, peers) {
break;
case 'audio':
console.log(`[ON TRACK] - CLASSIFIED AS AUDIO -> ${peer_name}`);
remoteAudioStream && hasAudioTrack(inbound)
? attachMediaStream(remoteAudioStream, inbound)
: loadRemoteMediaStream(inbound, allPeers || peers, peer_id, 'audio');
// Audio track can arrive before video case creates the element
if (remoteAudioStream && remoteAudioStream.srcObject) {
// Element exists and already has a stream, replace it
console.log(`[ON TRACK] - Replacing existing audio stream for ${peer_name}`);
attachMediaStream(remoteAudioStream, inbound);
} else if (remoteAudioStream && !remoteAudioStream.srcObject) {
// Element exists but no stream yet, attach this one
console.log(`[ON TRACK] - Attaching audio stream to existing element for ${peer_name}`);
attachMediaStream(remoteAudioStream, inbound);
// Ensure audio plays
remoteAudioStream.play().catch((err) => {
console.warn('[AUDIO] Autoplay prevented, setting up fallback:', err);
handleAudioFallback(remoteAudioStream, peer_name);
});
} else {
// Element doesn't exist, create it
console.log(`[ON TRACK] - Creating new audio element for ${peer_name}`);
loadRemoteMediaStream(inbound, allPeers || peers, peer_id, 'audio');
}
break;
default:
break;
@@ -12193,7 +12209,7 @@ function showAbout() {
Swal.fire({
background: swBg,
position: 'center',
title: brand.about?.title && brand.about.title.trim() !== '' ? brand.about.title : 'WebRTC P2P v1.6.08',
title: brand.about?.title && brand.about.title.trim() !== '' ? brand.about.title : 'WebRTC P2P v1.6.09',
imageUrl: brand.about?.imageUrl && brand.about.imageUrl.trim() !== '' ? brand.about.imageUrl : images.about,
customClass: { image: 'img-about' },
html: `