[mirotalksfu] - improvements, update dep

هذا الالتزام موجود في:
Miroslav Pejic
2024-05-31 15:00:47 +02:00
الأصل 2859818759
التزام 78fff65ae5
6 ملفات معدلة مع 43 إضافات و18 حذوفات

عرض الملف

@@ -42,7 +42,7 @@ dependencies: {
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon * @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 * @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com * @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.4.41 * @version 1.4.42
* *
*/ */

عرض الملف

@@ -1,6 +1,6 @@
{ {
"name": "mirotalksfu", "name": "mirotalksfu",
"version": "1.4.41", "version": "1.4.42",
"description": "WebRTC SFU browser-based video calls", "description": "WebRTC SFU browser-based video calls",
"main": "Server.js", "main": "Server.js",
"scripts": { "scripts": {
@@ -67,7 +67,7 @@
}, },
"devDependencies": { "devDependencies": {
"node-fetch": "^3.3.2", "node-fetch": "^3.3.2",
"nodemon": "^3.1.1", "nodemon": "^3.1.2",
"prettier": "3.2.5" "prettier": "3.2.5"
} }
} }

عرض الملف

@@ -1333,6 +1333,11 @@ hr {
align-items: center; /* Center vertically */ align-items: center; /* Center vertically */
} }
.container-flex {
display: flex;
flex-direction: column;
}
/* Custom avatar audio UI */ /* Custom avatar audio UI */
#audio-container { #audio-container {

عرض الملف

@@ -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 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 * @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com * @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.4.41 * @version 1.4.42
* *
*/ */
@@ -1460,6 +1460,9 @@ function handleButtons() {
showFreeAvatars = e.currentTarget.checked; showFreeAvatars = e.currentTarget.checked;
rc.getAvatarList(); rc.getAvatarList();
}; };
avatarQuality.onchange = (e) => {
VideoAI.quality = e.target.value;
};
refreshVideoDevices.onclick = async () => { refreshVideoDevices.onclick = async () => {
await refreshMyVideoDevices(); await refreshMyVideoDevices();
userLog('info', 'Refreshed video devices', 'top-end'); userLog('info', 'Refreshed video devices', 'top-end');

عرض الملف

@@ -9,7 +9,7 @@
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon * @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 * @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com * @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.4.41 * @version 1.4.42
* *
*/ */
@@ -3852,11 +3852,13 @@ class RoomClient {
? `<span class="message-data-time">${time}, ${getFromName} ( me ) </span>` ? `<span class="message-data-time">${time}, ${getFromName} ( me ) </span>`
: `<span class="message-data-time">${time}, ${getFromName} </span>`; : `<span class="message-data-time">${time}, ${getFromName} </span>`;
const formatMessage = this.formatMsg(getMsg);
console.log('FormatMessage', formatMessage);
const speechButton = this.isSpeechSynthesisSupported const speechButton = this.isSpeechSynthesisSupported
? `<button ? `<button
id="msg-speech-${chatMessagesId}" id="msg-speech-${chatMessagesId}"
class="mr5" class="mr5"
onclick="rc.speechMessage(false, '${getFromName}', '${this.formatMsg(getMsg)}')"> onclick="rc.speechText('${formatMessage}')">
<i class="fas fa-volume-high"></i> <i class="fas fa-volume-high"></i>
</button>` </button>`
: ''; : '';
@@ -4097,10 +4099,14 @@ class RoomClient {
} }
speechText(msg) { speechText(msg) {
const speech = new SpeechSynthesisUtterance(); if (VideoAI.active) {
speech.text = msg; this.streamingTask(msg);
speech.rate = 0.9; } else {
window.speechSynthesis.speak(speech); const speech = new SpeechSynthesisUtterance();
speech.text = msg;
speech.rate = 0.9;
window.speechSynthesis.speak(speech);
}
} }
chatToggleBg() { chatToggleBg() {

عرض الملف

@@ -884,6 +884,7 @@ access to use this app.
<div id="tabVideoAI" class="tabcontent"> <div id="tabVideoAI" class="tabcontent">
<div class="avatarsVideoAI"> <div class="avatarsVideoAI">
<video id="avatarVideoAIPreview" src="" controls="yes"></video> <video id="avatarVideoAIPreview" src="" controls="yes"></video>
<hr />
<table class="settingsTable"> <table class="settingsTable">
<tr id="avatars"> <tr id="avatars">
<td class=".width-180"> <td class=".width-180">
@@ -904,19 +905,29 @@ access to use this app.
</td> </td>
</tr> </tr>
</table> </table>
<div id="avatarVideoAIcontainer"></div> <hr />
<div> <div class="container-flex">
<select id="avatarVoiceIDs" name="avatarVoiceIDs"> <div id="avatarVideoAIcontainer"></div>
<select id="avatarQuality" class="form-select text-light bg-dark">
<option value="low">Avatar Quality - Low</option>
<option value="medium" selected>Avatar Quality - Medium</option>
<option value="hight">Avatar Quality - Hight</option>
</select>
<select
id="avatarVoiceIDs"
name="avatarVoiceIDs"
class="form-select text-light bg-dark"
>
<option value="">Select Avatar Voice</option></select <option value="">Select Avatar Voice</option></select
><br /><br /> ><br />
<div id="audio-container"> <div id="audio-container">
<audio id="avatarPreviewAudio" controls></audio> <audio id="avatarPreviewAudio" controls></audio>
</div> </div>
<br />
<button id="avatarVideoAIStart" class="btn-primary">
<i class="fas fa-play"></i> Start Avatar Session
</button>
</div> </div>
<br />
<button id="avatarVideoAIStart" class="btn-primary">
<i class="fas fa-play"></i> Start Video Avatar Session
</button>
</div> </div>
</div> </div>