Skip to content

Commit

Permalink
[mirotalkbro] - refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
miroslavpejic85 committed Jan 17, 2025
1 parent dfd92c9 commit 55679e3
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 37 deletions.
2 changes: 1 addition & 1 deletion app/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
* @license For open source under AGPL-3.0
* @license For private project or commercial purposes contact us at: [email protected]
* @author Miroslav Pejic - [email protected]
* @version 1.0.80
* @version 1.0.81
*/

require('dotenv').config();
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mirotalkbro",
"version": "1.0.80",
"version": "1.0.81",
"description": "P2P WebRTC audio, video and screen live broadcast",
"main": "app/server.js",
"scripts": {
Expand Down
26 changes: 4 additions & 22 deletions public/js/broadcast.js
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,7 @@ function toggleVideo() {
const color = getMode === 'dark' ? 'white' : 'black';
videoBtn.style.color = videoBtn.style.color == 'red' ? color : 'red';
videoOff.style.visibility = videoBtn.style.color == 'red' ? 'visible' : 'hidden';
window.stream.getVideoTracks()[0].enabled = !window.stream.getVideoTracks()[0].enabled;
broadcastStream.getVideoTracks()[0].enabled = !broadcastStream.getVideoTracks()[0].enabled;
sendToViewersDataChannel('video', { visibility: videoOff.style.visibility });
}

Expand Down Expand Up @@ -792,7 +792,7 @@ videoFpsSelect.onchange = applyVideoConstraints;

function applyVideoConstraints() {
const videoConstraints = getVideoConstraints();
window.stream
broadcastStream
.getVideoTracks()[0]
.applyConstraints(videoConstraints)
.then(() => {
Expand All @@ -801,9 +801,9 @@ function applyVideoConstraints() {
localStorage.videoFpsSelectedIndex = videoFpsSelect.selectedIndex;
})
.catch((error) => {
console.error('setVideoQuality Error', error.name, error.message);
videoQualitySelect.selectedIndex = localStorage.videoQualitySelectedIndex;
videoFpsSelect.selectedIndex = localStorage.videoFpsSelectedIndex;
console.error('setVideoQuality', error);
popupMessage(
'warning',
'Video quality/fps',
Expand Down Expand Up @@ -862,7 +862,6 @@ function getStream() {
};
const constraints = screenShareEnabled ? screenConstraints : cameraConstraints;

stopWindowStream();
stopBroadcastStream();

if (screenShareEnabled) {
Expand All @@ -888,8 +887,6 @@ function getStream() {
}

function gotStream(stream) {
window.stream = stream;
broadcastStream = stream;
if (!screenShareEnabled) {
audioSelect.selectedIndex = [...audioSelect.options].findIndex(
(option) => option.text === stream.getAudioTracks()[0].label,
Expand All @@ -911,13 +908,12 @@ function gotScreenStream(stream) {
if (audioTabTrack) tracksToInclude.push(audioTabTrack);
if (audioTrack) tracksToInclude.push(audioTrack);
const newStream = new MediaStream(tracksToInclude);
window.stream = newStream;
broadcastStream = newStream;
attachStream(newStream);
socket.emit('broadcaster', broadcastID);
}

function attachStream(stream) {
broadcastStream = stream;
video.srcObject = stream;
video.playsInline = true;
video.autoplay = true;
Expand All @@ -926,12 +922,6 @@ function attachStream(stream) {
video.controls = false;
}

function hasVideoOrAudioTracks(stream) {
const hasVideo = stream && stream.getVideoTracks().length > 0;
const hasAudio = stream && stream.getAudioTracks().length > 0;
return { hasVideo, hasAudio };
}

function stopBroadcastStream() {
if (broadcastStream) {
broadcastStream.getTracks().forEach((track) => {
Expand All @@ -940,14 +930,6 @@ function stopBroadcastStream() {
}
}

function stopWindowStream() {
if (window.stream) {
window.stream.getTracks().forEach((track) => {
track.stop();
});
}
}

function handleError(error) {
console.error('Error', error);
if (screenShareEnabled) {
Expand Down
27 changes: 14 additions & 13 deletions public/js/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,18 @@ function getUUID4() {
);
}

function hasVideoOrAudioTracks(mediaStream) {
const hasVideo = mediaStream && mediaStream.getVideoTracks().length > 0;
const hasAudio = mediaStream && mediaStream.getAudioTracks().length > 0;
return { hasVideo, hasAudio };
}

function hasAudioTrack(mediaStream) {
if (!mediaStream) return false;
const audioTracks = mediaStream.getAudioTracks();
return audioTracks.length > 0;
return mediaStream && mediaStream.getAudioTracks().length > 0;
}

function hasVideoTrack(mediaStream) {
if (!mediaStream) return false;
const videoTracks = mediaStream.getVideoTracks();
return videoTracks.length > 0;
return mediaStream && mediaStream.getVideoTracks().length > 0;
}

function saveDataToFile(dataURL, fileName) {
Expand Down Expand Up @@ -217,21 +219,20 @@ function goOutFullscreen() {
}

function logStreamSettingsInfo() {
const stream = window.stream;
let streamInfo = [];
if (stream.getVideoTracks()[0]) {
if (broadcastStream.getVideoTracks()[0]) {
streamInfo.push({
video: {
label: stream.getVideoTracks()[0].label,
settings: stream.getVideoTracks()[0].getSettings(),
label: broadcastStream.getVideoTracks()[0].label,
settings: broadcastStream.getVideoTracks()[0].getSettings(),
},
});
}
if (stream.getAudioTracks()[0]) {
if (broadcastStream.getAudioTracks()[0]) {
streamInfo.push({
audio: {
label: stream.getAudioTracks()[0].label,
settings: stream.getAudioTracks()[0].getSettings(),
label: broadcastStream.getAudioTracks()[0].label,
settings: broadcastStream.getAudioTracks()[0].getSettings(),
},
});
}
Expand Down

0 comments on commit 55679e3

Please sign in to comment.