• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

[MMM-RTSPStream] - Video Streaming from Live Feeds & Security Cameras

Scheduled Pinned Locked Moved Utilities
602 Posts 67 Posters 1.5m Views 68 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    shbatm Module Developer
    last edited by shbatm Jan 4, 2019, 5:11 PM Jan 2, 2019, 10:26 PM

    STATUS UPDATE

    Just wanted to give everyone a quick status update about this module.

    Bad news first: the current version in the master branch is malfunctioning. Please revert to a previous version (see post above) until I get time to undo the commit.
    EDIT - I’ve reverted the changes that I think broke the master channel. Please try updating your module to the current master branch and test.

    Good news! The reason I haven’t fixed the main branch yet is because the most recent version of the Raspbian image (Nov '18) has introduced a native version of VLC with hardware acceleration. I am actively working on a version of this module that will abandon OMXPlayer in favor of VLC, and have a working prototype in the develop branch for anyone interested in testing!

    Requirements:

    • Must have the most recent version of Raspbian with Desktop (> Nov '18). Google how to upgrade, but you may be better off starting with a fresh image.
    • Enable OpenGL (Fake KMS) driver in raspi-config
    • Increase GPU/CPU Memory Split to at least 128 (do this after enabling OpenGL because it will reset it to 64).
    • Upgrade Electron to v3.0.13 (v2.0.16 in MM v2.6 is not working with OpenGL–see MM Issue #1500:
        cd ~/MagicMirror
        # Remove the node_modules folder to start fresh
        rm -R ./node_modules
        # Either manually update the required electron version in package.json to 3.0.13 or use the sed command below
        sed -i 's/electron": "\^2\.0\..*",/electron": "^3.0.13",/g' package.json
        # Re-install the MM node modules
        npm install
    
    • Delete your MMM-RTSPStream module directory and use the new installer script to install everything:
        rm -R ~/MagicMirror/modules/MMM-RTSPStream
        bash -c "$(curl -s https://raw.githubusercontent.com/shbatm/MMM-RTSPStream/develop/scripts/installer.sh)"
    
    • Update your config.js section to use VLC: localPlayer: 'vlc'

    Working:

    • VLC windows ā€œplacedā€ on top of the main Electron window inside the module’s box
    • Plays quickly, minimal lag, low CPU usage (4 streams @ ~35%)
    • Visible in VNC client (couldn’t do this with OMXPlayer)
    • Fast switching between streams – all VLC windows will remain open, and wmctrl utility used to toggle which one is on top.
      • Make sure to set a shutdownDelay for in your module config section make it longer than it takes to rotate back to that stream time (e.g. if you have rotateStreamTimeout: 10, and 3 streams, then it will take 20s to get back to the first stream, so you should set shutdownDelay: 22– 20s + 2s buffer).
    • Suspend/Restore functions
    • New version of Raspbian also has a hw-accelerated version of FFMPEG; I’ve added a hwAccel: true option for ffmpeg users to use HW-accelerated decoding. FFMPEG still has a big CPU impact for the encoder though.

    Not-yet-tested / left to-do:

    • Test if sound works
    • Figure out what I broke in the OMXPlayer version

    Not-gonna-happen:

    • Embedding VLC into Electron window (NPAPI-plugins are no longer supported and this is the only way I know how to do that).
    • Using VLC as the viewer for ā€œremoteā€ windows (other web browser instances of the MM) – same reason as above.

    Known Bugs:

    • When VLC windows are first created, you see them move around the screen. After they’re ā€œput in the boxā€ it they won’t fill up the box right away. After ~7 secs they should fill the box.
      • I am using devilspie2 to remove window decorations and move the VLC windows; however, for some reason I have to call it twice (~7s apart) to get VLC to resize it’s video properly. Shouldn’t be an issue in the long-term, unless you are hiding/showing the module often.
    A 1 Reply Last reply Jan 3, 2019, 10:23 PM Reply Quote 1
    • A Offline
      anthony6608 @shbatm
      last edited by Jan 3, 2019, 10:23 PM

      @shbatm I can confirm that this method works. I tried to apply it to my original installation however during the ’ sed -i ā€˜s/electron": ā€œ^2.0…*ā€,/electron": ā€œ^3.0.13ā€,/g’ package.json’ command my installation failed half way through and seemed to mess my installation up. I have an open issue and you’ll see about 10+ responses from me as I tried to troubleshoot but its irrelevant as long as your Pi doesn’t lock up during this process.

      The only issue I seem to be having now is when I add the MMM-GoogleMapsTraffic module I see the Live feed box but the video doesn’t appear.

      I’m fairly new to this so I am not sure what could be causing it?

      Thanks again for all of your help!

      S 1 Reply Last reply Jan 3, 2019, 10:47 PM Reply Quote 0
      • S Offline
        shbatm Module Developer @anthony6608
        last edited by Jan 3, 2019, 10:47 PM

        @anthony6608 said in [MMM-RTSPStream] - Video Streaming from Live Feeds & Security Cameras:

        I’m fairly new to this so I am not sure what could be causing it?

        I probably should have explained better above what the sed command was for. The current version of MagicMirror uses Electron version 2.0.16–this is defined in the package.json file in the MM directory. The sed command updates package.json to use Electron version 3.0.13 instead. It’s probably best to remove the node_modules directory first and reinstall (cleaner). I updated the steps above.

        The problem with updating Electron is there is a reason MM still uses the lower version–it was working–we don’t know what else the new version is going to break. On mine, I had to update Node to v10.15 from v8.15 to get one of my other modules to work.

        MMM-GoogleMapsTraffic module

        I have a love-hate relationship with this module. I use it, but seems to break my other modules too (KeyBindings, OnScreenMenu)… I’ll look into the cause of this one, but if I had to guess-- The VLC window is just that, another window setting on top of the browser page that is MM. If something causes the browser to get focus (as simple as clicking the black background), the VLC window falls behind it. If you have a keyboard hooked up, try Alt + Tab and see if it comes back. I’m already looking for a way to make the VLC windows modal so they stay on top.

        A 1 Reply Last reply Jan 4, 2019, 1:00 AM Reply Quote 0
        • A Offline
          anthony6608
          last edited by Jan 3, 2019, 10:55 PM

          Yep, Ive tried all different settings and I am not sure what is going on but the second I remove the MMM-GoogleMapsTraffic module from config.js the stream shows? Any idea why the two would conflict? I noticed when I remove the module from config.js then I see activity from RTSP stream in the logs when its added I dont see much:

          0|MagicMirror | Starting MagicMirror: v2.6.0
          0|MagicMirror | Loading config …
          0|MagicMirror | Loading module helpers …
          0|MagicMirror | Initializing new module helper …
          0|MagicMirror | Module helper loaded: mmm-nest-status
          0|MagicMirror | Initializing new module helper …
          0|MagicMirror | Module helper loaded: MMM-MyCommute
          0|MagicMirror | Initializing new module helper …
          0|MagicMirror | Module helper loaded: MMM-RTSPStream
          0|MagicMirror | No helper found for module: alert.
          0|MagicMirror | Initializing new module helper …
          0|MagicMirror | Module helper loaded: updatenotification
          0|MagicMirror | No helper found for module: clock.
          0|MagicMirror | Initializing new module helper …
          0|MagicMirror | Module helper loaded: calendar
          0|MagicMirror | No helper found for module: compliments.
          0|MagicMirror | No helper found for module: currentweather.
          0|MagicMirror | No helper found for module: weatherforecast.
          0|MagicMirror | Initializing new module helper …
          0|MagicMirror | Module helper loaded: newsfeed
          0|MagicMirror | All module helpers loaded.
          0|MagicMirror | Starting server on port 8080 …
          0|MagicMirror | Server started …
          0|MagicMirror | Connecting socket for: mmm-nest-status
          0|MagicMirror | Starting node_helper for module [mmm-nest-status]
          0|MagicMirror | Connecting socket for: MMM-MyCommute
          0|MagicMirror | ====================== Starting node_helper for module [MMM-MyCommute]
          0|MagicMirror | Connecting socket for: MMM-RTSPStream
          0|MagicMirror | PM2: Stopping all OMXPlayer Streams…
          0|MagicMirror | Connecting socket for: updatenotification
          0|MagicMirror | Connecting socket for: calendar
          0|MagicMirror | Starting node helper for: calendar
          0|MagicMirror | Connecting socket for: newsfeed
          0|MagicMirror | Starting module: newsfeed
          0|MagicMirror | Sockets connected & modules started …
          0|MagicMirror | Launching application.
          0|MagicMirror | libGL error:
          0|MagicMirror | MESA-LOADER: failed to retrieve device information
          0|MagicMirror | MESA-LOADER: failed to retrieve device information
          0|MagicMirror | MESA-LOADER: failed to retrieve device information
          0|MagicMirror | ATTENTION: default value of option force_s3tc_enable overridden by environment.
          0|MagicMirror | Create new calendar fetcher for url: http://www.calendarlabs.com/templates/ical/US-Holidays.ics - Interval: 300000
          0|MagicMirror | Create new news fetcher for url: http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml - Interval: 300000
          0|MagicMirror | Starting stream stream1 using VLC with args --width 352 --height 242 -I dummy --no-video-deco --no-embedded-video --video-title=stream1 rtsp://xxxx;xxxx@192.168.0.6:554/cam/realmonitor?channel=1&subtype=1…
          0|MagicMirror | DP2: Config File Saved!
          0|MagicMirror | DP2: Running window resizers…
          0|MagicMirror | DP2: Running window resizers…

          1 Reply Last reply Reply Quote 0
          • A Offline
            anthony6608
            last edited by anthony6608 Jan 4, 2019, 12:43 AM Jan 3, 2019, 11:47 PM

            Ok I spoke too soon 😩

            Now the video won’t fit in the box no matter how I adjust it. I noticed that the other commute plugin width is adjusted as well. Is this a case of brackets not being in the right place or something? I’ve been working with this plugin all day 😟

            Recap:

            When I remove ALL other modules it aligns in the box however it doesnt take up the full box its like showing half of the picture.

            • When I enable the maps module the feed is there but just a black box.

            • When I have commute module loaded it overlaps the module on the screen.

            • When I remove all (non-default) modules it only fills up half of the box so the video is barely noticeable.

            • No matter how much I play with height/width settings, I cannot get it centered (right side always has blank space) and cant get anything sized up correctly.

            I appreciate any help you guys can offer!

            /* Magic Mirror Config Sample
            *

            • By Michael Teeuw http://michaelteeuw.nl
            • MIT Licensed.
            • For more information how you can configurate this file
            • See https://github.com/MichMich/MagicMirror#configuration

            */

            var config = {
            address: ā€œlocalhostā€, // Address to listen on, can be:
            // - ā€œlocalhostā€, ā€œ127.0.0.1ā€, ā€œ::1ā€ to listen on loopback interface
            // - another specific IPv4/6 to listen on a specific interface
            // - ā€œā€, ā€œ0.0.0.0ā€, ā€œ::ā€ to listen on any interface
            // Default, when address config is left out, is ā€œlocalhostā€
            port: 8080,
            ipWhitelist: [ā€œ127.0.0.1ā€, ā€œ::ffff:127.0.0.1ā€, ā€œ::1ā€], // Set [] to allow all IP addresses
            // or add a specific IPv4 of 192.168.1.5 :
            // [ā€œ127.0.0.1ā€, ā€œ::ffff:127.0.0.1ā€, ā€œ::1ā€, ā€œ::ffff:192.168.1.5ā€],
            // or IPv4 range of 192.168.3.0 --> 192.168.3.15 use CIDR format :
            // [ā€œ127.0.0.1ā€, ā€œ::ffff:127.0.0.1ā€, ā€œ::1ā€, ā€œ::ffff:192.168.3.0/28ā€],

            language: "en",
            timeFormat: 12,
            units: "imperial",
            
            modules: [
            
            		{
                                 module: "MMM-RTSPStream",
                                 position: "top_right",
                                 header: "LIVE FEED",
                                 config: {
                                 autoStart: true,
                                 rotateStreams: false,
                                 rotateStreamTimeout: 20,
                                 moduleWidth: 354,
                                 moduleHeight: 240,
                                 localPlayer: 'vlc',
                                 remotePlayer: 'none',
                                 showSnapWhenPaused: false,
                                 remoteSnaps: false,
            
                                 stream1: {
                                 name: 'ENTRANCE',
                                 url: 'rtsp://admin:xxxxxxx@192.168.0.6:554/cam/realmonitor?channel=1&subtype=1',
                                 autoStart: true,
                                 //protocol: "tcp",
                                 frameRate: undefined,
                                 hdUrl: 'rtsp://admin:xxxx@192.168.0.6:554/cam/realmonitor?channel=1&subtype=0',
                                 width: 354,
                                 height: 240,
                                 }
                           }
            

            },

            	{
            		module: "alert",
            	},
            	{
            		module: "updatenotification",
            		position: "top_bar"
            	},
            	{
            		module: "clock",
            		position: "top_left"
            	},
            	{
            		module: "calendar",
            		header: "US Holidays",
            		position: "top_left",
            		config: {
            			calendars: [
            				{
            					symbol: "calendar-check",
            					url: "webcal://www.calendarlabs.com/templates/ical/US-Holidays.ics"
            				}
            			]
            		}
            	},
            	{
            		module: "compliments",
            		position: "lower_third"
            	},
            	{
            		module: "currentweather",
            		position: "top_right",
            		config: {
            			location: "New York",
            			locationID: "",  //ID from http://bulk.openweathermap.org/sample/; unzip the gz file and find your city
            			appid: "YOUR_OPENWEATHER_API_KEY"
            		}
            	},
            	{
            		module: "weatherforecast",
            		position: "top_right",
            		header: "Weather Forecast",
            		config: {
            			location: "New York",
            			locationID: "5128581",  //ID from https://openweathermap.org/city
            			appid: "YOUR_OPENWEATHER_API_KEY"
            		}
            	},
            	{
            		module: "newsfeed",
            		position: "bottom_bar",
            		config: {
            			feeds: [
            				{
            					title: "New York Times",
            					url: "http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml"
            				}
            			],
            			showSourceTitle: true,
            			showPublishDate: true
            		}
            	},
            ]
            

            };

            /*************** DO NOT EDIT THE LINE BELOW ***************/
            if (typeof module !== ā€œundefinedā€) {module.exports = config;}

            :::

            1 Reply Last reply Reply Quote 0
            • A Offline
              anthony6608 @shbatm
              last edited by anthony6608 Jan 4, 2019, 1:02 AM Jan 4, 2019, 1:00 AM

              @shbatm said in [MMM-RTSPStream] - Video Streaming from Live Feeds & Security Cameras:

              I’m fairly new to this so I am not sure what could be causing it?

              Thanks for the response. As of right now im still having a few issues which I posted in my reply below. Ive been using GoogleMapsTraffic and had no issues before however I only got RTSP working today so I don’t know. The overlay isn’t the only issue… Do you have any idea why my STREAM stops loading when I readd GoogleMapsTraffic back to the config?

              Also, I have removed all other modules and just trying to get RTSP sorted. Now that all modules are removed I am able to get a good stream BUT no matter what I do I have a black space on the right side so it doesn’t look clean at all.

              When I remove ALL other modules it aligns in the box however it doesnt take up the full box its like showing half of the picture.

              • When I enable the maps module the feed is there but just a black box.

              • When I have commute module loaded it overlaps the module on the screen.

              • No matter how much I play with height/width settings, I cannot get it centered (right side always has black space) and cant get anything sized up correctly.

              Thanks again

              1 Reply Last reply Reply Quote 0
              • A Offline
                anthony6608
                last edited by anthony6608 Jan 4, 2019, 2:08 AM Jan 4, 2019, 1:59 AM

                **Update: fixed this error by running:
                ā€˜sudo chown pi:pi /home/pi/MagicMirror/modules/MMM-RTSPStream/node_modules/pm2’

                Now it seems to run all the way through:

                pi@raspberrypi:~/MagicMirror/modules/MMM-RTSPStream $ npm install

                MMM-RTSPStream@2.0.0-dev preinstall /home/pi/MagicMirror/modules/MMM-RTSPStream
                ./scripts/preinstall.sh

                devilspie2 wmctrl ffmpeg omxplayer vlc is already installed. Moving on.

                MMM-RTSPStream@2.0.0-dev postinstall /home/pi/MagicMirror/modules/MMM-RTSPStream
                sudo npm link pm2

                /home/pi/MagicMirror/modules/MMM-RTSPStream/node_modules/pm2 -> /usr/lib/node_modules/pm2
                removed 1 package in 19.37s**

                Still having the placement, overlay and no feed issues though.

                Another error:

                I just went back in to make sure I ran npm install and I get the following (not sure whether or not its critical). I’m taking a break for now. I’ve followed all instructions step by step and still can’t get it to display correctly :( Still having the 3 issues stated in my previous post as well. Appreciate it if someone can chime in on this.

                pi@raspberrypi:~/MagicMirror/modules/MMM-RTSPStream $ npm install

                MMM-RTSPStream@2.0.0-dev preinstall /home/pi/MagicMirror/modules/MMM-RTSPStream
                ./scripts/preinstall.sh

                devilspie2 wmctrl ffmpeg omxplayer vlc is already installed. Moving on.
                npm WARN checkPermissions Missing write access to /home/pi/MagicMirror/modules/MMM-RTSPStream/node_modules/pm2
                npm ERR! path /home/pi/MagicMirror/modules/MMM-RTSPStream/node_modules/pm2
                npm ERR! code EACCES
                npm ERR! errno -13
                npm ERR! syscall access
                npm ERR! Error: EACCES: permission denied, access ā€˜/home/pi/MagicMirror/modules/MMM-RTSPStream/node_modules/pm2’
                npm ERR! { Error: EACCES: permission denied, access ā€˜/home/pi/MagicMirror/modules/MMM-RTSPStream/node_modules/pm2’
                npm ERR! stack: ā€˜Error: EACCES: permission denied, access ā€˜/home/pi/MagicMirror/modules/MMM-RTSPStream/node_modules/pm2’’,
                npm ERR! errno: -13,
                npm ERR! code: ā€˜EACCES’,
                npm ERR! syscall: ā€˜access’,
                npm ERR! path: ā€˜/home/pi/MagicMirror/modules/MMM-RTSPStream/node_modules/pm2’ }
                npm ERR!
                npm ERR! Please try running this command again as root/Administrator.

                npm ERR! A complete log of this run can be found in:
                npm ERR! /home/pi/.npm/_logs/2019-01-04T01_56_31_604Z-debug.log
                pi@raspberrypi:~/MagicMirror/modules/MMM-RTSPStream $

                bheplerB S 2 Replies Last reply Jan 4, 2019, 2:10 AM Reply Quote 0
                • bheplerB Online
                  bhepler Module Developer @anthony6608
                  last edited by Jan 4, 2019, 2:10 AM

                  This post is deleted!
                  1 Reply Last reply Reply Quote 0
                  • S Offline
                    shbatm Module Developer @anthony6608
                    last edited by Jan 4, 2019, 4:08 AM

                    @anthony6608 The last error was my fault… it’s an issue with linking the PM2 module. I put a sudo where I didn’t need one, that’s been updated on Github.

                    I’m sorry it’s been frustrating–trust me, I (and I’m sure several other’s on here) know the feeling. I was going to say that I thought it was the module getting moved around by the other modules when they load that was causing the issues, but not if it’s happening with only this module loaded. It should be resizing itself to fit. I sent you a chat with an e-mail address–if you can, send me a short video or picture of what you’re seeing and I’ll see if I can diagnose.

                    Also–for the forums, when pasting logs, configs, or any other chunk of code, use three back-ticks (`) on their own line at the start and finish to make it pretty (you can add ā€œshellā€ or ā€œjavascriptā€ for syntax highlighting.

                       ```javascript
                       Your code here
                       ```                   -
                    
                    A 1 Reply Last reply Jan 4, 2019, 4:21 AM Reply Quote 0
                    • A Offline
                      anthony6608 @shbatm
                      last edited by anthony6608 Jan 4, 2019, 4:24 AM Jan 4, 2019, 4:21 AM

                      @shbatm thanks for the reply, and no worries about the permission issue. I’m no longer getting the error so I hope I fixed it the correct way.

                      I actually just opened an issue if you could take a look. I added some pictures there as well with a breakdown of everything I’ve noticed just to help make things easier and for anyone looking in the future to find it all in once place. Let me know if you’re able to view the pictures? For some reason they are not loading when I reload the page. Also thanks for the tip, I’ll be sure to use the back-ticks in the future!

                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 15
                      • 16
                      • 17
                      • 18
                      • 19
                      • 60
                      • 61
                      • 17 / 61
                      17 / 61
                      • First post
                        167/602
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy