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.
My IceWeasel install supports WebRTC, which I confirmed here: http://iswebrtcready.appear.in/