Coder Social home page Coder Social logo

miroslavpejic85 / mirotalkc2c Goto Github PK

View Code? Open in Web Editor NEW
215.0 6.0 57.0 2.15 MB

✨WebRTC - C2C - Real-time cam-2-cam video calls & screen sharing, end-to-end encrypted, to embed in any website with a simple iframe.

Home Page: https://c2c.mirotalk.com

License: GNU Affero General Public License v3.0

JavaScript 73.98% Dockerfile 0.38% CSS 12.82% HTML 8.46% Shell 2.50% PHP 1.10% Python 0.75%
e2e mirotalk video-conference webrtc webrtc-call webrtc-demo self-hosted low-latency collaboration video-conferencing

mirotalkc2c's People

Contributors

miroslavpejic85 avatar zzysonny avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mirotalkc2c's Issues

Iframe available options

Using the iframe so that the user drops into a preset room name would be useful. Currently it seems that one must include a username in such a preset url in the iframe, which isn't ideal. Any pointers or approach to how one does this is appreciated.
mahalo from Mauna Loa

how to set videosource explicitly ?

hi ! thanks for sharing amazing project.

i`m on raspberry pi and i want to start up not only with usb-camera (everything works with c270 logitech).
my path to csi camera looks like - device: /base/soc/i2c0mux/i2c@1/ov5647@36
and i do not know how to add it to videosources.

as far as i see the main file is - mirotalkc2c/frontend/js/client.js
and there i see:

navigator.mediaDevices.enumerateDevices().then((devices) => {
                videoDevices = devices.filter(
                    (device) => device.kind === 'videoinput' && device.deviceId !== 'default',
                );

how to add my device explicitly ?

ngrok use on raspberry pi

hi !
u tried ngrok to access local raspberry pi with grey IP. i seems connection established
Screenshot_8
but i do not see any video-audio of a client. I see only myself in mirotalkc2c.

In local net - everything is OK.

to check this out:
i followed steps https://docs.mirotalk.com/mirotalk-c2c/ngrok/
but got start it working like follows:

start ngrok:
ngrok http https://localhost:8080

in ~/mirotalkc2c
npm start 

start browser
libcamerify firefox -new-window https://localhost:8080/join?room=test&name=a

what is going wrong ?

RFE: configurable video resolution and framerate

It seems the default video constraints are 1280x720@30 and there is an option to set 3840x2160@60. Some computers are too noisy even when encoding at 1280x720 (e.g. firefox not using HW acceleration). It would be nice if the resolution and framerate could be set directly in the UI.

how to rotate video ? [SOLVED]

as i have camera 90 output i have to rotate video output.
at start i think of using another js script to access html element by id and change it:

 // Access DOM element object
const rotated = document.getElementById('rotated');
// Rotate element by 90 degrees clockwise
rotated.style.transform = 'rotate(90deg)';

but it doesnt work.

later i found the solution.
just need to add
transform: rotate(90deg);
to
/home/pi/mirotalkc2c/frontend/css/client.css
in section:

.myVideoWrap {
    position: absolute;
    transform: rotate(90deg);
    z-index: 5;
    top: 10px;
    left: 10px;
    width: var(--my-video-wrap-width);
    height: var(--my-video-wrap-height);
    border: var(--border);
    border-radius: var(--border-radius);
}

here we are!
Screenshot_1

function roomIsBusy

I assume that tweaking (roomPeersCount > 2) to any number that may perform acceptably (my use-case might be audio-only mesh, which would seem to perform well enough for up to at least 8?)
Still, I'm wondering what value was being considered when this governer was coded in. Could be insightful. thanks

About encryption

What encryption method is used for end-to-end encryption? In which file?

iOS and Firefox - GetUserMedia Error

Error

  • I noticed on iOS c2c.mirotalk.com that the GetUserMedia request fails and causes an error. And never requests camera or microphone permissions. The browser is not aware of the camera or microphone permissions either before this error happens.

GetUserMedia - Meet needs access to the camera and microphone. Click the locked camera and microphone icon in your browser's address bar, before joining room and NotAllowedError: The request is nt allowed by the user agent or the platform in the current context, possibly because the user denied permission.
IMG_8386

Reproduce:

  • Grab an iOS device
  • Firefox
  • c2c.mirotalk.com or any self-hosted setup w/ latest commits
  • Enter Any Room name and username.
  • See screenshot attached.

Fix Ideas

  • I thought this would have been related to the /socket-io websocket not being properly forwarded. But that is not the case and websockets are setup as per the readme at docs.mirotalk.com
  • MiroTalk P2P works fine on same iOS device with Firefox. There must be compatibility code not copied from P2P to C2C repository.

Notes:

  • These reproduction steps work fine on same iOS device with Safari app. Must be an issue with Firefox compatibility.
  • MiroTalk P2P works fine on same iOS device with Firefox. There must be compatibility code not copied from P2P to C2C repository.
  • Works fine on Android and Google Chrome app.

Work around:

  • Use Safari app on iOS device

Feature Request - Version Stamp .env_template

Makes it easier to work out when we need to update our working .env.

At the moment, I diff my working .env and the new .env_template each time I pull a new version which takes time as my working file is heavily modified with other stuff for my integration setup.

This would also apply to P2P and SFU's app/src/config.template.js

Administration and users

I would like to be able to prevent anyone to create a room without my consent.

But I would also like to allow people that I allow to participate in a visioconference.

It would be great to be able to have an administrator account, and to have a random string generator for creating random rooms' name so that it can then be accessed only by those who have the link.

This would prevent unwanted access and unecessary spam of the server on-premises like AWS EC2 and prevent having a bill that would go too far.

Audio Indicator

Kudos on a simplified and exceptional way to do this! To me anyway, a mesh approach feels a lot better than wrestling with a SFU and the rest. Particularly in terms of audio-only connections, it would be great to have access to the magic sauce of the speaker's audio signal lighting like in mirotalk, or better yet, in the clubhouse fashion. As you have kept it in vanilla js maybe I can figure it out. Any pointers are much appreciated. Thanks for sharing your fine work!

No way to configure empty iceServers

If my clients can connect directly to each other and I want to avoid using STUN/TURN servers, it seems iceServers needs to be set to an empty array. It would be nice if that was possible just by editing the .env file and not the source code. Currently it's hardcoded to contain a STUN and TURN server.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.