ivadim / fruitnanny Goto Github PK
View Code? Open in Web Editor NEWRaspberry PI based baby monitor
Raspberry PI based baby monitor
I have the website working however the video just has a loading circle.
I do not have audio set up at the moment because I do not have a microphone.
Video and janus is enabled and running
Do I need to have the audio running for the video to also work?
If I go to the website's console this is the printout messages:
Initializing library
janus.js:390 Library initialized: true
janus.js:417 Using REST API to contact Janus: /janus
janus.js:864 Created session: 7963663776931688
janus.js:1119 Created handle: 8954871135075411
webrtc.js:36 Plugin attached! (janus.plugin.streaming, id=8954871135075411)
janus.js:1274 Synchronous transaction successful (janus.plugin.streaming)
webrtc.js:134 Got a list of available streams
webrtc.js:143 Selected video id #1
janus.js:1604 Creating PeerConnection
janus.js:1612 Preparing local SDP and gathering candidates (trickle=true)
janus.js:1644 Handling Remote Track
janus.js:1651 Adding onended callback to track: MediaStreamTrackcontentHint: ""enabled: trueid: "janusa0"kind: "audio"label: "janusa0"muted: falseonended: ƒ (ev)onmute: nullonunmute: nullreadyState: "live"proto: MediaStreamTrack
janus.js:1644 Handling Remote Track
janus.js:1651 Adding onended callback to track: MediaStreamTrackcontentHint: ""enabled: trueid: "janusv0"kind: "video"label: "janusv0"muted: trueonended: ƒ (ev)onmute: nullonunmute: nullreadyState: "live"proto: MediaStreamTrack
janus.js:1703 Remote description accepted!
janus.js:2463 Creating answer (iceDone=false)
janus.js:2588 Setting local description
janus.js:1620 End of candidates.
Hi #Ivadim, I use USB camera unlike you ( I've changed the gstreamer pipeline for the video) and unfortunately I don't have the video stream , have you any solution for this issue ? and thank you
Hi All,
First of all, great project. Context on my build, i'm use stock parts that required no soldering (Camera came with IR LEDS, DHT22 came with it's own cables / pins - requiring some light changes to one of the JS files to accommodate). Like some others, i too had issues with my USB MIC not picking up until i found that all my calls changes in docker-compose.yml were essentially overwritten in audio_stream.sh. Once i changed the HW to 2 i got it to work (but only after multiple reboots, image removals and rebuilds.
This, i fear is related to my current issue. My changes to baby.png (i replaced it with my own) and sidebar.ejs just will not show/reflect on the site. The old files do NOT exist, but they persist in some form of cache. I've tried stopping docker, running docker-compose stop,
docker-compose rm -f,
docker-compose pull ,
docker-compose up -d. Rebooting after removal. I've also tried docker-compose up --force-recreate (which i think resolved the USB Mic issue).
What am I doing wrong? I'm not familiar with docker. so i assume it's basic, but i've failed to find answers on google to date.
Hello,
first, thanks for this project, it's really usefull.
I choose to make my fruitnanny with a Bright-Pi illuminator (4 white leds, and 6 IR leds) https://uk.pi-supply.com/products/bright-pi-bright-white-ir-camera-light-raspberry-pi
It works with I2C, and comes with a Python API (https://github.com/PiSupply/Bright-Pi)
How to modify the configuration to implement :
Edit : somes clues here : http://blog.vilhelm.nu/2019/08/raspberry-pi-baby-monitor-hardware-pt-2-software/
Hello, and thanks for this amazing project!
I have setup everything and it works fine in my local LAN, but when I'm trying to access it via WAN, even though the webpage loads, I am not getting any video.
Is there something I am missing, or is this some kind of limitation of WebRTC?
Thanks!
Dear @ivadim . Thank you a lot for this initiative.
I manage to get it working well using your new docker installation guide using my Pi3 with a PSeye Camera. The microphone is working great but the camera is not being detected by the device.
Any hint on how to make all of this working?
Thank you in advance.
Keep up the good work!
Okay, so the title may be a bit hard to follow, but here's what's going on:
When I go to the webpage in Chrome I see everything as expected, but there's no sound. I click/tap (behavior is the same on my desktop as it is on mobile) the volume slider and suddenly there's sound. Also, tapping the volume icon, or moving the slider all the way down, only lowers the sound ever so slightly. Again, same behavior on mobile as on my desktop
Firefox on my desktop audio starts immediately, but the volume slider still doesn't do much of anything.
Both I'm loading in incognito/private mode to skip my plugins/extension.
Now, here's the really weird thing about mobile. If I minimize Chrome, switch to another app, or even lock the screen, the sound still comes through, though that works for me as I'm really using it to keep an eye on my dog and make sure she's not barking and bugging the neighbors.
Pi:
Raspberry Pi Zero W
Raspbian Lite freshly imaged and fully updated on 1/9/2021
Desktop:
Windows 10 Pro 20H2 Build 19042.685
Chrome Version 87.0.4280.141
Firefox Version
Mobile:
Pixel 4a
Android 11
Chrome Version 87.0.4280.66
Would be nice to have a TURN server added to the docker images to facilitate connections over the internet.
Thanks @ivadim for making a baby monitor with Raspberry Pi with so little lag. Within the last week, I built fruitnanny on the latest Raspbian Stretch and I've gotten everything working with the latest versions of your software. However, I've noticed that the video service is not reliably starting up all of the time.
pi@babycam:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.3 (stretch)
Release: 9.3
Codename: stretch
pi@babycam:~ $ uname -a
Linux babycam 4.14.22-v7+ #1096 SMP Mon Feb 26 19:14:22 GMT 2018 armv7l GNU/Linux
pi@babycam:~ $ cat /opt/fruitnanny/bin/video.sh
#!/bin/bash
gst-launch-1.0 -v rpicamsrc name=src preview=0 exposure-mode=night fullscreen=0 bitrate=1000000 annotation-mode=time+date annotation-text-size=20 ! video/x-h264,width=960,height=540,framerate=12/1 ! queue max-size-bytes=0 max-size-buffers=0 ! h264parse ! rtph264pay config-interval=1 pt=96 ! queue ! udpsink host=127.0.0.1 port=5004 sync=false
About half the time, the video service won't start up correctly due to an Internal data stream error
error. Restarting the pi once or twice usually does the trick. Below is the error block in the code:
mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
/GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0: seqnum = 7078
ERROR: from element /GstPipeline:pipeline0/GstRpiCamSrc:src: Internal data stream error.
Additional debug info:
gstbasesrc.c(2950): gst_base_src_loop (): /GstPipeline:pipeline0/GstRpiCamSrc:src:
streaming stopped, reason error (-5)
I attached
syslog.txt
which contains the complete log output from video.sh. You can see that it initially errors but then recovers to start successfully on its own.
Please let me know what else I can do to help.
Hello, I tried to perform the same steps of the installation and it works correctly, but I see that they do not work within the ios safari browser.
How could I fix this problem?
Thank you
Hello,
After following your guide, I have rebooted my raspberry pi and tried to access the browser through the IP address.
It asks me for the username and password, but then showed a 502 error. Bad gateway.
I have noticed that the pm2 server is not running. Running the command below fixes it:
sudo pm2 start server/app.js --name="fruitnanny"
is there a way to make this run automatically on boot?
I would like to know where I can substitute the picture on the upper left corner of the Dashboard and the date of birth for that person. Also I would like to display the temperature in Fahrenheit, not Celsius.
Thanks,
Danny
Hi, I would like to integrate the WEBRTC flow of the camera into the Home Assistant. I can't find the correct path. I have tried unsuccessfully with the RTP protocol and ports 8088, 5004, 554 etc and the path /janus. Can anyone help me out? Thank you
I have setup your project on a raspberry pi via the docker install method. Video seems to be working fine, but I have no audio. Using a cheap USB mic that shows as card1 in arecord -l.
When I run
docker-compose logs | grep gstreamer-audio
I get repeats of this output:
gstreamer-audio_1 | Setting pipeline to NULL ...
gstreamer-audio_1 | Freeing pipeline ...
gstreamer-audio_1 | Additional debug info:
gstreamer-audio_1 | pulsesrc.c(1015): gst_pulsesrc_open (): /GstPipeline:pipeline0/GstPulseSrc:pulsesrc0
gstreamer-audio_1 | mkdir: cannot create directory ‘/var/run/dbus’: File exists
gstreamer-audio_1 | dbus-daemon[16]: Failed to start message bus: The pid file "/run/dbus/pid" exists, if the message bus is not running, remove this file
gstreamer-audio_1 | E: [pulseaudio] main.c: Daemon startup failed.
gstreamer-audio_1 | Connection failure: Connection refused
gstreamer-audio_1 | pa_context_connect() failed: Connection refused
gstreamer-audio_1 | Connection failure: Connection refused
gstreamer-audio_1 | pa_context_connect() failed: Connection refused
gstreamer-audio_1 | Setting pipeline to PAUSED ...
gstreamer-audio_1 | ERROR: Pipeline doesn't want to pause.
Hi,
first of all, thanks for this great project.
I'm following the docker installation guide and I have problems starting the gstreamer container. It seems to have problems accessing the camera:
gstreamer-video_1 | Setting pipeline to NULL ...
gstreamer-video_1 | Freeing pipeline ...
gstreamer-video_1 | Setting pipeline to PAUSED ...
gstreamer-video_1 | mmal: mmal_vc_shm_init: could not initialize vc shared memory service
gstreamer-video_1 | mmal: mmal_vc_component_create: failed to initialise shm for 'vc.ril.camera' (7:EIO)
gstreamer-video_1 | mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (7)
gstreamer-video_1 | ERROR: Pipeline doesn't want to pause.
gstreamer-video_1 | ERROR: from element /GstPipeline:pipeline0/GstRpiCamSrc:src: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
gstreamer-video_1 | Additional debug info:
gstreamer-video_1 | gstbasesrc.c(3452): gst_base_src_start (): /GstPipeline:pipeline0/GstRpiCamSrc:src:
gstreamer-video_1 | Failed to start
I've verified that the camera works on the host, i.e., I can take pictures with raspistill
as the pi user.
Any ideas how to proceed? Could this be a problem of outdated gstreamer build in the container and the host system/kernel?
I'm on kernel 5.10.17-v7+.
Thanks, Jan
I am having issues with the notification containers , both on temp and motion are constantly restarting and crashing the whole application until I stop them.
I have added the my API key from pushbullet on the configuration file, although I am not sure about the url on the configuration file, does it serve some condition?
Pasted the error below, if anyone has any idea what it could it :
During handling of the above exception, another exception occurred:
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 672, in urlopen
chunked=chunked,
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 376, in _make_request
self._validate_conn(conn)
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 994, in _validate_conn
conn.connect()
File "/usr/local/lib/python3.7/dist-packages/urllib3/connection.py", line 334, in connect
conn = self._new_conn()
File "/usr/local/lib/python3.7/dist-packages/urllib3/connection.py", line 169, in _new_conn
self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.VerifiedHTTPSConnection object at 0xb60a5750>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 720, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "/usr/local/lib/python3.7/dist-packages/urllib3/util/retry.py", line 436, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.pushbullet.com', port=443): Max retries exceeded with url: /v2/devices (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0xb60a5750>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fruitnanny/bin/temperature.py", line 17, in <module>
pb = Pushbullet(config.get('NOTIFICATION','Pushbullet_API_Key'))
File "/usr/local/lib/python3.7/dist-packages/pushbullet/pushbullet.py", line 43, in __init__
self.refresh()
File "/usr/local/lib/python3.7/dist-packages/pushbullet/pushbullet.py", line 381, in refresh
self._load_devices()
File "/usr/local/lib/python3.7/dist-packages/pushbullet/pushbullet.py", line 78, in _load_devices
resp_dict = self._get_data(self.DEVICES_URL)
File "/usr/local/lib/python3.7/dist-packages/pushbullet/pushbullet.py", line 64, in _get_data
resp = self._session.get(url)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.pushbullet.com', port=443): Max retries exceeded with url: /v2/devices (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0xb60a5750>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))```
Hi,
Thanks a lot for this software!
I'm trying to run it with docker-compose but I have a 500 error whenever I want to want to connect to the application from my local network:
When I try to connect directly to port 7000, I get the following error:
Here are the extended logs when launching docker-compose up:
Starting fruitnanny_janus_1 ... done
Starting fruitnanny_gstreamer-video_1 ... done
Starting fruitnanny_gstreamer-audio_1 ... done
Starting fruitnanny_fruitnanny_1 ... done
Starting fruitnanny_nginx_1 ... done
Attaching to fruitnanny_janus_1, fruitnanny_gstreamer-video_1, fruitnanny_fruitnanny_1, fruitnanny_gstreamer-audio_1, fruitnanny_nginx_1
fruitnanny_1 | Fruitnanny app listening on port 7000!
janus_1 | Janus commit: not-a-git-repo
janus_1 | Compiled on: Tue Feb 12 11:25:05 UTC 2019
janus_1 |
gstreamer-video_1 | Setting pipeline to PAUSED ...
gstreamer-video_1 | Pipeline is live and does not need PREROLL ...
gstreamer-video_1 | /GstPipeline:pipeline0/GstRpiCamSrc:src.GstPad:src: caps = video/x-h264, width=(int)960, height=(int)540, framerate=(fraction)12/1, stream-format=(string)byte-stream, alignment=(string)nal, profile=(string)constrained-baseline
gstreamer-video_1 | /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-h264, width=(int)960, height=(int)540, framerate=(fraction)12/1, stream-format=(string)byte-stream, alignment=(string)nal, profile=(string)constrained-baseline
gstreamer-video_1 | /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-h264, width=(int)960, height=(int)540, framerate=(fraction)12/1, stream-format=(string)byte-stream, alignment=(string)nal, profile=(string)constrained-baseline
gstreamer-video_1 | /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, width=(int)960, height=(int)540, framerate=(fraction)12/1, stream-format=(string)byte-stream, alignment=(string)nal, profile=(string)constrained-baseline
gstreamer-video_1 | /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-h264, width=(int)960, height=(int)540, framerate=(fraction)12/1, stream-format=(string)byte-stream, alignment=(string)nal, profile=(string)constrained-baseline
gstreamer-video_1 | /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-h264, width=(int)960, height=(int)540, framerate=(fraction)12/1, stream-format=(string)byte-stream, alignment=(string)nal, profile=(string)constrained-baseline
gstreamer-video_1 | Setting pipeline to PLAYING ...
gstreamer-video_1 | New clock: GstSystemClock
gstreamer-video_1 | /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, width=(int)960, height=(int)540, framerate=(fraction)12/1, stream-format=(string)avc, alignment=(string)au, profile=(string)constrained-baseline, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, level=(string)4, codec_data=(buffer)0142c028ffe1000e2742c02895a03c045fb80789135001000528ce025c80
gstreamer-video_1 | /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)42c028, sprop-parameter-sets=(string)"J0LAKJWgPARfuAeJE1A\=\,KM4CXIA\=", payload=(int)96, ssrc=(uint)3648240313, timestamp-offset=(uint)526674995, seqnum-offset=(uint)1591, a-framerate=(string)12
gstreamer-video_1 | /GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)42c028, sprop-parameter-sets=(string)"J0LAKJWgPARfuAeJE1A\=\,KM4CXIA\=", payload=(int)96, ssrc=(uint)3648240313, timestamp-offset=(uint)526674995, seqnum-offset=(uint)1591, a-framerate=(string)12
gstreamer-video_1 | /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0: timestamp = 526674995
gstreamer-video_1 | /GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0: seqnum = 1591
gstreamer-video_1 | /GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)42c028, sprop-parameter-sets=(string)"J0LAKJWgPARfuAeJE1A\=\,KM4CXIA\=", payload=(int)96, ssrc=(uint)3648240313, timestamp-offset=(uint)526674995, seqnum-offset=(uint)1591, a-framerate=(string)12
gstreamer-video_1 | /GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)42c028, sprop-parameter-sets=(string)"J0LAKJWgPARfuAeJE1A\=\,KM4CXIA\=", payload=(int)96, ssrc=(uint)3648240313, timestamp-offset=(uint)526674995, seqnum-offset=(uint)1591, a-framerate=(string)12
janus_1 | ---------------------------------------------------
janus_1 | Starting Meetecho Janus (WebRTC Server) v0.6.1
janus_1 | ---------------------------------------------------
janus_1 |
janus_1 | Checking command line arguments...
janus_1 | Debug/log level is 4
janus_1 | Debug/log timestamps are disabled
janus_1 | Debug/log colors are disabled
janus_1 | Adding 'vmnet' to the ICE ignore list...
janus_1 | Using 192.168.1.65 as local IP...
janus_1 | [WARN] Token based authentication disabled
janus_1 | Initializing recorder code
janus_1 | Initializing ICE stuff (Full mode, ICE-TCP candidates disabled, half-trickle, IPv6 support disabled)
janus_1 | TURN REST API backend: (disabled)
janus_1 | [WARN] Janus is deployed on a private address (192.168.1.65) but you didn't specify any STUN server! Expect trouble if this is supposed to work over the internet and not just in a LAN...
janus_1 | Crypto: OpenSSL >= 1.1.0
janus_1 | [WARN] The libsrtp installation does not support AES-GCM profiles
janus_1 | Fingerprint of our certificate: 13:41:D3:0C:4F:BF:C4:AB:F7:FE:59:66:08:E5:16:8F:17:5A:3B:3B:D5:73:C6:83:85:8B:7F:DD:1F:C2:EC:B2
janus_1 | [WARN] Event handlers support disabled
janus_1 | Plugins folder: /usr/lib/arm-linux-gnueabihf/janus/plugins
janus_1 | [WARN] Plugin 'libjanus_duktape.so' has been disabled, skipping...
janus_1 | [WARN] Plugin 'libjanus_videoroom.so' has been disabled, skipping...
janus_1 | [WARN] Plugin 'libjanus_sipre.so' has been disabled, skipping...
janus_1 | [WARN] Plugin 'libjanus_lua.so' has been disabled, skipping...
janus_1 | [WARN] Plugin 'libjanus_videocall.so' has been disabled, skipping...
janus_1 | [WARN] Plugin 'libjanus_recordplay.so' has been disabled, skipping...
janus_1 | [WARN] Plugin 'libjanus_sip.so' has been disabled, skipping...
janus_1 | Joining Janus requests handler thread
janus_1 | [WARN] Plugin 'libjanus_audiobridge.so' has been disabled, skipping...
janus_1 | Loading plugin 'libjanus_streaming.so'...
janus_1 | Sessions watchdog started
janus_1 | JANUS Streaming plugin initialized!
janus_1 | [WARN] Plugin 'libjanus_voicemail.so' has been disabled, skipping...
janus_1 | [WARN] Plugin 'libjanus_echotest.so' has been disabled, skipping...
janus_1 | [WARN] Plugin 'libjanus_textroom.so' has been disabled, skipping...
janus_1 | [WARN] Plugin 'libjanus_nosip.so' has been disabled, skipping...
janus_1 | Transport plugins folder: /usr/lib/arm-linux-gnueabihf/janus/transports
janus_1 | [WARN] Transport plugin 'libjanus_rabbitmq.so' has been disabled, skipping...
janus_1 | [WARN] Transport plugin 'libjanus_nanomsg.so' has been disabled, skipping...
janus_1 | Loading transport plugin 'libjanus_websockets.so'...
janus_1 | [2019/10/28 07:39:34:6145] NOTICE: lws_context_destroy
janus_1 | [WARN] libwebsockets has been built without IPv6 support, will bind to IPv4 only
janus_1 | [ERR] [config.c:janus_config_parse:191] -- Error reading configuration file 'janus.transport.websockets.jcfg'... error 2 (No such file or directory)
janus_1 | [WARN] Couldn't find .jcfg configuration file (janus.transport.websockets), trying .cfg
janus_1 | [ERR] [config.c:janus_config_parse:191] -- Error reading configuration file 'janus.transport.websockets.cfg'... error 2 (No such file or directory)
janus_1 | [WARN] No WebSockets server started, giving up...
janus_1 | [WARN] The 'janus.transport.websockets' plugin could not be initialized
janus_1 | Loading transport plugin 'libjanus_http.so'...
janus_1 | HTTP webserver started (port 8088, /janus path listener)...
janus_1 | HTTPS webserver started (port 8089, /janus path listener)...
janus_1 | [WARN] Admin/monitor HTTP webserver disabled
janus_1 | [WARN] Admin/monitor HTTPS webserver disabled
janus_1 | JANUS REST (HTTP/HTTPS) transport plugin initialized!
janus_1 | [WARN] Transport plugin 'libjanus_pfunix.so' has been disabled, skipping...
janus_1 | [fruitnanny] New audio stream! (ssrc=4178282910)
janus_1 | [fruitnanny] New video stream! (ssrc=3648240313, index 0)
gstreamer-audio_1 | Setting pipeline to PAUSED ...
gstreamer-audio_1 | Pipeline is live and does not need PREROLL ...
gstreamer-audio_1 | Setting pipeline to PLAYING ...
gstreamer-audio_1 | New clock: GstAudioSrcClock
gstreamer-audio_1 | /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-buffer-time = 200000
gstreamer-audio_1 | /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0: actual-latency-time = 10000
gstreamer-audio_1 | Redistribute latency...
gstreamer-audio_1 | /GstPipeline:pipeline0/GstAlsaSrc:alsasrc0.GstPad:src: caps = audio/x-raw, rate=(int)48000, channels=(int)1, format=(string)S16LE, layout=(string)interleaved
gstreamer-audio_1 | /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, rate=(int)48000, channels=(int)1, format=(string)S16LE, layout=(string)interleaved
gstreamer-audio_1 | /GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:src: caps = audio/x-raw, rate=(int)48000, channels=(int)1, format=(string)S16LE, layout=(string)interleaved
gstreamer-audio_1 | /GstPipeline:pipeline0/GstOpusEnc:opusenc0.GstPad:sink: caps = audio/x-raw, rate=(int)48000, channels=(int)1, format=(string)S16LE, layout=(string)interleaved
gstreamer-audio_1 | /GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:sink: caps = audio/x-raw, rate=(int)48000, channels=(int)1, format=(string)S16LE, layout=(string)interleaved
gstreamer-audio_1 | /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, rate=(int)48000, channels=(int)1, format=(string)S16LE, layout=(string)interleaved
gstreamer-audio_1 | Redistribute latency...
gstreamer-audio_1 | /GstPipeline:pipeline0/GstOpusEnc:opusenc0.GstPad:src: caps = audio/x-opus, rate=(int)48000, channels=(int)1, channel-mapping-family=(int)0, stream-count=(int)1, coupled-count=(int)0, streamheader=(buffer)< 4f707573486561640101380180bb0000000000, 4f707573546167731e000000456e636f6465642077697468204753747265616d6572206f707573656e630000000001 >
gstreamer-audio_1 | /GstPipeline:pipeline0/GstRtpOPUSPay:rtpopuspay0.GstPad:src: caps = application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)OPUS, sprop-maxcapturerate=(string)48000, sprop-stereo=(string)0, payload=(int)96, encoding-params=(string)2, ssrc=(uint)4178282910, timestamp-offset=(uint)2882180779, seqnum-offset=(uint)30525
gstreamer-audio_1 | /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)OPUS, sprop-maxcapturerate=(string)48000, sprop-stereo=(string)0, payload=(int)96, encoding-params=(string)2, ssrc=(uint)4178282910, timestamp-offset=(uint)2882180779, seqnum-offset=(uint)30525
gstreamer-audio_1 | /GstPipeline:pipeline0/GstRtpOPUSPay:rtpopuspay0.GstPad:sink: caps = audio/x-opus, rate=(int)48000, channels=(int)1, channel-mapping-family=(int)0, stream-count=(int)1, coupled-count=(int)0, streamheader=(buffer)< 4f707573486561640101380180bb0000000000, 4f707573546167731e000000456e636f6465642077697468204753747265616d6572206f707573656e630000000001 >
gstreamer-audio_1 | /GstPipeline:pipeline0/GstRtpOPUSPay:rtpopuspay0: timestamp = 2882180779
gstreamer-audio_1 | /GstPipeline:pipeline0/GstRtpOPUSPay:rtpopuspay0: seqnum = 30525
gstreamer-audio_1 | /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)OPUS, sprop-maxcapturerate=(string)48000, sprop-stereo=(string)0, payload=(int)96, encoding-params=(string)2, ssrc=(uint)4178282910, timestamp-offset=(uint)2882180779, seqnum-offset=(uint)30525
gstreamer-audio_1 | /GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)OPUS, sprop-maxcapturerate=(string)48000, sprop-stereo=(string)0, payload=(int)96, encoding-params=(string)2, ssrc=(uint)4178282910, timestamp-offset=(uint)2882180779, seqnum-offset=(uint)30525
Additionnally, as described in the installation file, I added a new certificate and made sure the Common name is "raspberrypi" since I didn't modify the original host name of my raspberry pi, but I still get a privacy error
in HTTPS, as the certificate is considered as invalid.
I would be thankful if you have any clue that could help me finish the setup.
Thanks a lot in advance for your time and help!
I created a pushbullet account, and added my key to the configuration file, but what is the url listed?
I am guessing this is the magic of docker? If i got docker to work and docker-compose to run, then all should be well right?
I can get to the webpage, but there is no video and there is no temp, etc.
Thoughts?
I've followed your guide with the same hardware, but can't get the video to work. Getting a still image with sudo raspistill -v -o test.jpg
works. The provided video
systemd service also reports that it's working properly. However no video stream is available and when reading janus
's logs I see this on each try to play video:
Mar 21 16:26:11 sonic janus[461]: Creating new session: 1334206738366789
Mar 21 16:26:11 sonic janus[461]: Creating new handle in session 1334206738366789: 1485536743695063
Mar 21 16:26:11 sonic janus[461]: [1485536743695063] Creating ICE agent (ICE Full mode, controlling)
Mar 21 16:26:14 sonic janus[461]: [WARN] [1485536743695063] ICE failed for component 1 in stream 1, but let's give it some time... (trickle received, answer received, alert not set)
Mar 21 16:26:19 sonic janus[461]: [ERR] [ice.c:janus_ice_check_failed:1548] [1485536743695063] ICE failed for component 1 in stream 1...
Mar 21 16:26:19 sonic janus[461]: No WebRTC media anymore
Mar 21 16:26:19 sonic janus[461]: [1485536743695063] WebRTC resources freed
Chrome 65 fails with:
WebRTC error: DOMException: Failed to set remote offer sdp: Session error code: ERROR_CONTENT. Session error description: Failed to set remote video description send parameters..
error @ webrtc.js:81
Firefox 59 fails with:
ICE failed, add a TURN server and see about:webrtc for more details
The MediaStream passed to createMediaStreamSource has a cross-origin resource, the node will output silence.
Tried with compiling janus 0.2.5, 0.2.6 and 0.3.0. Have you ever faced such an issue?
Hello,
I really like your project, but I'm still wondering if you are working on making an app for it ? or if you have any suggestion.
Thank you
When running configure for janus, I'm getting the error
No package 'libsrtp' found
I tried to install libsrtp-dev but still have the same issue.
Hi,
I followed the complete docker installation guide without any errors. After starting all containers, I recognized that the containers are permanently restarting. Especially, the container janus terminates with error 132.
Unfortunately, I am not able to see any logs of any container. I am also not able to enter a bash of a container. All containers are within a restarting loop.
I am using the following distribution on my Rasp Zero W: Raspbian 10 (buster). I did not modify any the content of the repo.
Any ideas? Thanks in advanced!
BR GL
After having tested my installation (proof of concept), I noticed that the cheap microphone I got has a very low quality. It's actually not usable at all (almost can't hear anything but noise). It was this one.
Which microphone do you recommend to use?
Of course, I am looking for something as cheap and little as possible.
Thank you!
In firefox 76.0.1 (64-bit) and chrome Version 80.0.3987.149.
I followed the docker instructions but no luck. Rasberry pi zero and cam
Thanks for the cool repo!
Hi,
I hope this is the good place to post my issue (I already posted a message on the developer's blog but not sure which place is the best).
I have the following error when I try the command for video pipeline (gst-launch-1.0 -v rpicamsrc name=src preview=0 exposure-mode=night fullscreen=0 bitrate=1000000 annotation-mode=time+date annotation-text-size=20 ! video/x-h264,width=960,height=540,framerate=8/1 ! queue max-size-bytes=0 max-size-buffers=0 ! h264parse ! rtph264pay config-interval=1 pt=96 ! queue ! udpsink host=127.0.0.1 port=5004 sync=false
):
Setting pipeline to PAUSED ...
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstRpiCamSrc:src: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Additional debug info:
gstbasesrc.c(3452): gst_base_src_start (): /GstPipeline:pipeline0/GstRpiCamSrc:src:
Failed to start
Setting pipeline to NULL ...
Freeing pipeline ...
Do you know how to fix it?
Some details on my installation:
Thanks again for your help and congrats for the project & tutorial!
Hello!
First of all, I want to congratulate you for this work, is excellent!
I am running Fruitnanny apparently well but I cannot see the video in my browser (I see only a circle spinning):
Name Command State Ports
-----------------------------------------------------------------------------
fruitnanny_fruitnanny_1 /usr/bin/entry.sh node ser ... Up
fruitnanny_gstreamer-audio_1 /usr/bin/entry.sh /audio_e ... Up
fruitnanny_gstreamer-video_1 /usr/bin/entry.sh gst-laun ... Up
fruitnanny_janus_1 /usr/bin/entry.sh /bin/sh ... Up
fruitnanny_nginx_1 /docker-entrypoint.sh ngin ... Up
I have also taken a picture with raspistill to probe that the camera is working properly. So, now I do not know what more to try. Can you guide me?
Thanks a lot,
I have found i am getting the exact same error detailed here:
#28
This is on a new docker installation of fruitnanny for a new monitor i'm building, previously i followed the non docker installation instructions and this exact same microphone worked fine (although had some interferance).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.