peers / peerjs

Simple peer-to-peer with WebRTC.
https://peerjs.com
MIT License
12.48k stars 1.43k forks source link

black video when audio is enabled #438

Closed corentin-begne closed 6 years ago

corentin-begne commented 6 years ago

Hi,

I've got a black video screen on remote when I enable audio in GetUserMedia. I tried #147 and #194 but no solution work for me. When I enable only video that work well. Someone know why ? Should I use another library ?

kidandcat commented 6 years ago

Could you post your browsers versions?

corentin-begne commented 6 years ago

I've tested in the last chrome version win 10 64 68.0.3440.106 (Build officiel) (64 bits)

fibin commented 6 years ago

@kidandcat is there some HTTPS running cloud peerjs-server?

kidandcat commented 6 years ago

the standard PeerServer Cloud runs HTTPS too, you just need to setup it in the PeerJS options: https://peerjs.com/docs/#peer-options-secure

corentin-begne commented 6 years ago

I use a local peerjs server in https, no error in console. https://github.com/peers/peerjs-server When I check the local stream it works fine, so why i can get remote stream with audio and video ?

kidandcat commented 6 years ago

Maybe you are behind a firewall, you mean you don't have video when using PeerServer cloud?

corentin-begne commented 6 years ago

I'm not behind a firewall and when I set only video that works. I mean I don't use PeerServer in cloud, I host my own.

corentin-begne commented 6 years ago

So I made my own library and that works perfectly ...

kidandcat commented 6 years ago

I'm sorry I couldn't help you. But with the info provided I couldn't do much because I'm not getting any error. I'm glad you got it working, even if I couldn't help.

RamyaAshika commented 3 years ago

Hi @corentin-begne May I know how you resolve this issue, I'm too getting black screen on remote side. It helps if you share the ideas.

corentin-begne commented 3 years ago

Hi @RamyaAshika I principally needed to use the option DtlsSrtpKeyAgreement and my own ice servers (turn and stun) using coturn. DtlsSrtpKeyAgreement is required for Chrome and Firefox to interoperate. I give you my installation/configuration process, hope it'll help.

turn/stun server

sudo apt-get install coturn
sudo service coturn stop

Active turn server in the configuration

sudo vi /etc/default/coturn

Then uncomment TURNSERVER_ENABLED=1 Save the configuration and create a new one.

sudo mv /etc/turnserver.conf /etc/turnserver.conf.original
sudo vi /etc/turnserver.conf

Set the following content

# /etc/turnserver.conf

# STUN server port is 3478 for UDP and TCP, and 5349 for TLS.
# Allow connection on the UDP port 3478
listening-port=3478
# and 5349 for TLS (secure)
tls-listening-port=5349

# Require authentication
fingerprint
lt-cred-mech 

# Specify the server name and the realm that will be used
# if is your first time configuring, just use the domain as name
server-name=mydomain.com
realm=mydomain.com

total-quota=100
stale-nonce=600

# Path to the SSL certificate and private key. In this example we will use
# the letsencrypt generated certificate files.
cert=/keypath/server.cer
pkey=/keypath/server.key

# Specify the allowed OpenSSL cipher list for TLS/DTLS connections
cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384"

# Specify the process user and group
proc-user=turnserver
proc-group=turnserver

Create an user and start the server

sudo turnadmin -a -u login -r mydomain.com -p password
sudo service coturn start

You can check server status

sudo service coturn status

You can test it with Trickle Ice tool