buildar / getting_started_with_webrtc

Example code to help you get started creating WebRTC applications
MIT License
79 stars 39 forks source link

Joining a WebRTC session on Pi's browser: `navigator.mozGetUserMedia()` does not detect the Raspberry Pi Camera #6

Open modulitos opened 8 years ago

modulitos commented 8 years ago

Note that this issue may not be caused by this tutorial explicitely, but instead it may be a general issue when accessing the Pi's webcam via a WebRTC session on the Pi's browser. It is confusing, however, becuase my IceWeasel install supports WebRTC, which I confirmed here: http://iswebrtcready.appear.in/ I also have a Stack Exchange post here.

I am trying to use my Raspberry Pi 2 and Raspberry Pi Camera to join a WebRTC session in the browser. I was able to set up a WebRTC server on my Pi through this tutorial and I am able to start/join a WebRTC session on any PC with video/audio enabled.

Also, I installed UV4L, which enables the browser to recognize the Pi camera.

When I try to access a WebRTC session on the Pi, however, the browser is unable to start the video. More specifically, the Javascript Navigator object fails on the navigator.mozGetUserMedia() to start the video, returning the error "Starting video failed". The mozGetUserMedia is bound in this line of code and the method is called here.

I am using the IceWeasel browser because the Chromium and Epiphany browsers do not seem to support WebRTC on the Pi. Can anyone provide guidance on getting my Pi Camera detected by WebRTC? Or is there another browser that will properly run my Raspberry Pi Camera?

My browser's console output is here:

"early firefox webrtc implementation" 192.168.0.103:1234:55
"getting user media..." 192.168.0.103:1234:59
"got user media..." 192.168.0.103:1234:61
The character encoding of the HTML document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the page must be declared in the document or in the transfer protocol. 192.168.0.103:1234
"setting up local video stream" 192.168.0.103:1234:374
"setting up connection to signaling server" 192.168.0.103:1234:153
"you are the Caller" 192.168.0.103:1234:158
"updating UI to loading_state" 192.168.0.103:1234:182
"sending 'join' signal for call token:#1442483208369-4377" 192.168.0.103:1234:172
"Starting video failed" 192.168.0.103:1234:555

Similarly, when I try to join a Firefox Hello chat in my Pi's browser, I get these debug console messages:

The Components object is deprecated. It will soon be removed. utils.js:9
"No information about this conversation is available. Please request a new link from the person who sent it to you." standaloneRoomViews.js:366

Use of getPreventDefault() is deprecated.  Use defaultPrevented instead. 2768540301.js:92
"OT.Publisher.onStreamAvailableError Starting video failed: Unknown Error while getting user media" sdk.js:3399

"OT.exception :: title: Unable to Publish (1500) msg: GetUserMedia" sdk.js:3399

1500 "Unknown Error while getting user media" sdk.js:3399

"OT.exception :: title: Unable to Publish (1500) msg: Unknown Error while getting user media" sdk.js:3399

Error: HTTP 401 Unauthorized
Stack trace:
failureHandler@https://hello.firefox.com/js/standaloneMozLoop.js:44:9
loop.StandaloneMozLoop</StandaloneMozLoopRooms.prototype._postToRoom/xhrReq.onload<@https://hello.firefox.com/js/standaloneMozLoop.js:142:11

Here are some details on my setup:

[pi@raspberrypi]~$ uname -a
Linux raspberrypi 4.1.6-v7+ #2 SMP PREEMPT Fri Sep 4 16:49:07 UTC 2015 armv7l GNU/Linux

[pi@raspberrypi]~$ cat /etc/*-release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

[pi@raspberrypi]~$ iceweasel --version
Mozilla Iceweasel 31.8.0

And my camera is working fine, where I can run raspivid -t 10000 which displays the camera's video for 10 seconds.

bluet commented 8 years ago

We're experiencing similar problem... @LukeSwart any solution so far?

zero863 commented 6 years ago

can you find /dev/video0 in raspberry? if not , have a try to modify the file in floder /etc/modules , Add a line: bcm2835-v4l2, and reboot it , see if it works.