Code Monkey home page Code Monkey logo

fruitnanny's People

Contributors

ivadim avatar jeremyfritzen avatar phardy avatar rbray89 avatar woscho 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fruitnanny's Issues

Video not loading

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.

video not charged

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

Unable to update EJS partials

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.

Using BrightPi with Fruitnanny

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 :

  • a white illumination toggle
  • an IR illumination toggle
  • a variator for the intensity ?
    Thanks !
    Bye, Alex.

Edit : somes clues here : http://blog.vilhelm.nu/2019/08/raspberry-pi-baby-monitor-hardware-pt-2-software/

WAN access?

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!

PSEye support (audio works fine)

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!

Volume slider is broken, but needs to be moved to start the audio.

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

Video service occasionally crashes from "Internal data stream error"

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.

Support for IOS

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

502 error

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?

Integration with Home Assistant

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

Audio not working - gstreamer-audio_1 errors

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.

gstreamer-video cannot access camera

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

Max retries exceeded with url: /v2/devices - PushBullet ConnectionError

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'))```

Error 500 with docker-compose

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:
image

When I try to connect directly to port 7000, I get the following error:
image

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!

ICE failed for component 1 in stream 1...

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?

Are you planning to develop an app

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

Docker: Permanently restarting - Janus exits with code 132

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

Which microphone do you use?

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!

No WebRTC support...

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!

Error when trying to configure Video Pipeline

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:

  • I am using RPI 2 B
  • I executed previous commands successfully
  • I connected all hardware components as described

Thanks again for your help and congrats for the project & tutorial!

Video not working

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,

Audio not working on new docker installation of fruitnanny

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).

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.