• 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.6m 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.
  • B Offline
    bhepler Module Developer @shbatm
    last edited by Jul 6, 2017, 12:13 PM

    @shbatm Whoops. That’s the mistake I made. I switched to the wip branch but didn’t put the omx flag in there.

    I’ll try it out tonight. Thanks for the update!

    1 Reply Last reply Reply Quote 0
    • B Offline
      bhepler Module Developer
      last edited by Jul 6, 2017, 11:09 PM

      Success! I tried the omxplayer version of this module and it works like a charm. The video updates about half a second behind, but that’s well within acceptable limits. The RasPi also is running much cooler and isn’t giving me temperature warnings.

      The only problem I have at this point is that the border around the module doesn’t line up with the video. And all things considered, not a big deal. Great work!
      0_1499382491512_IMG_20170706_182518.jpg

      1 Reply Last reply Reply Quote 0
      • S Offline
        shbatm Module Developer
        last edited by shbatm Jul 7, 2017, 2:35 AM Jul 7, 2017, 2:30 AM

        Great! I’m glad it’s working!

        Still trying to find a more robust way for getting the right location for the overlay that doesn’t get messed up by margins and borders.

        Starting on line 321 of MMM-RTSPStream.js try changing the +47 at the end of each line. I’d start with making them 0 and see if that helps:

        box: {
            top: rect.top + 47,       // Compensate for Margins 
            right: rect.right + 47,   // Compensate for Margins
            bottom: rect.bottom + 47, // Compensate for Margins
            left: rect.left + 47      // Compensate for Margins
        }
        

        ICYW: The 47 comes from a combo of the body margin, padding and borders on my setup.

        B 1 Reply Last reply Jul 11, 2017, 2:19 AM Reply Quote 0
        • B Offline
          bhepler Module Developer @shbatm
          last edited by bhepler Jul 11, 2017, 2:22 AM Jul 11, 2017, 2:19 AM

          @shbatm Again, thanks for all the hard work. Here are my findings (all taken from the development branch):

          • The video was displaced from the border only on the PI, but not on Chrome nor Firefox whilst viewing the PI’s interface.
          • Viewing the interface via Chrome or Firefox did show a video image, but it started up FFMPEG and started to heat the Pi up.
          • Removing the 47 pixel offset made everything line up perfectly on the mirror itself.
          • Removing the 47 pixel offset made no difference in border position when viewing the Magic Mirror interface via Chrome or Firefox. Everything lined up perfectly.
            0_1499739728177_ipcam-test.png
          B S 2 Replies Last reply Jul 11, 2017, 3:51 AM Reply Quote 0
          • B Offline
            bhepler Module Developer @bhepler
            last edited by Jul 11, 2017, 3:51 AM

            @bhepler Additionally, when I’m running this module, I cannot tell PM2 to restart the MM process. Any attempt to shut down the Magic Mirror and then start it again results in an error claiming that port 8080 is already in use. I have to reboot the Pi in order to get MM running again.
            Error message:

            Whoops! There was an uncaught exception...
            0|mm       | { Error: listen EADDRINUSE 
            :::
            8080
            0|mm       |     at Object.exports._errnoException (util.js:1022:11)
            0|mm       |     at exports._exceptionWithHostPort (util.js:1045:20)
            0|mm       |     at Server._listen2 (net.js:1262:14)
            0|mm       |     at listen (net.js:1298:10)
            0|mm       |     at Server.listen (net.js:1376:9)
            0|mm       |     at new Server (/home/pi/MagicMirror/js/server.js:26:9)
            0|mm       |     at /home/pi/MagicMirror/js/app.js:219:18
            0|mm       |     at loadNextModule (/home/pi/MagicMirror/js/app.js:168:5)
            0|mm       |     at /home/pi/MagicMirror/js/app.js:163:6
            0|mm       |     at Class.loaded (/home/pi/MagicMirror/modules/node_modules/node_helper/index.js:19:3)
            0|mm       |   code: 'EADDRINUSE',
            0|mm       |   errno: 'EADDRINUSE',
            0|mm       |   syscall: 'listen',
            0|mm       |   address: '::',
            0|mm       |   port: 8080 }
            

            Which is weird, because when I shut down MM, netstat -l doesn’t show anything listening on port 8080. A before-and-after shows the following two processes started (8027 is the port for my IP camera):

            tcp        0      0 *:8027                  *:*                     LISTEN
            tcp6       0      0 [::]:http-alt           [::]:*                  LISTEN
            
            1 Reply Last reply Reply Quote 0
            • S Offline
              shbatm Module Developer @bhepler
              last edited by shbatm Aug 10, 2017, 11:56 AM Jul 12, 2017, 12:26 AM

              @bhepler Thank you so much for the feedback and the testing.

              The video was displaced from the border only on the PI, but not on Chrome nor Firefox whilst viewing the PI’s interface.
              Viewing the interface via Chrome or Firefox did show a video image, but it started up FFMPEG and started to heat the Pi up.
              Removing the 47 pixel offset made no difference in border position when viewing the Magic Mirror interface via Chrome or Firefox. Everything lined up perfectly.

              – This is to be expected. OMXPlayer draws the video on top of the Pi’s screen (over the desktop & electron.js running the mirror). It can only do that on the Pi itself, so if you view it in another browser, the module defaults back to FFMPEG and software decoding.

              Removing the 47 pixel offset made everything line up perfectly on the mirror itself.

              Good – I will continue looking for a way to improve how the module “finds” the border box to give to OMX. For now this offset may just get moved into a config setting.

              when I’m running this module, I cannot tell PM2 to restart the MM process. Any attempt to shut down the Magic Mirror and then start it again results in an error claiming that port 8080 is already in use. I have to reboot the Pi in order to get MM running again.

              I noticed this on my system too, but didn’t associate it back to this module. Thanks for pointing it out. Something is not getting cleaned up properly. I am able to restart MM without restarting the whole Pi by killing the electron process manually (e.g. pkill electron or ps aux | grep electron and then kill {pid} on the process number that comes up. I will work on a fix for this in the next update.

              Additional Development Notes:
              • Still working on finding a better solution to using FFMPEG to decode and then re-transmit the stream. With Chrome/Firefox removing support for NPAPI plug-ins, it’s very restricting for RTSP. If anyone has any suggestions, I’m open to them.
              1 Reply Last reply Reply Quote 0
              • F Offline
                Fonfon
                last edited by Fonfon Jul 30, 2017, 4:58 PM Jul 30, 2017, 3:43 PM

                Thanks !!! Works great with all my Dahua ip cam
                but i don’t know why but i think when my motion sensor put in sleep my mirror my cam disconnect why ?

                1 Reply Last reply Reply Quote 0
                • I Offline
                  imdickie
                  last edited by Aug 9, 2017, 4:47 PM

                  Great module. Allows my family to see the front door as they walk to answer it.

                  I am trying to use multiple streams so it shows the camera on my driveway and front door side by side. The layout is setup but, it duplicates the camera feed listed under stream1.

                  What is the reason why it is not seeing the second stream?

                  I’ve validated my RSP 3 can see both rtsp streams. In fact, if I swap the ip addresses my MM still shows just the first one listed.

                  Here is the code I am using.

                  {
                  module: 'MMM-RTSPStream',
                  position: 'bottom_center',
                  config: {
                  	autoStart: true,
                          rotateStreams: false,
                          rotateStreamTimeout: 10,
                          showSnapWhenPaused: false,
                          moduleWidth: 704,
                          moduleHeight: 240,
                  	localPlayer: 'omxplayer',
                          	stream1: {
                                  name: 'Front Door',
                                  url: 'rtsp://xxxxx:xxxxx@192.168.1.164:554/Streaming/Channels/102/',
                                  snapshotUrl: '',
                                  snapshotRefresh: 10, // Seconds
                                  frameRate: "30",
                                  port: 9999,
                  		width: "320",
                  		height: "240",
                  		},
                                  stream2: {
                                  name: 'Front Door',
                                  url: 'rtsp://xxxxx:xxxxx@192.168.1.163:554/Streaming/Channels/102/',
                                  snapshotUrl: '',
                                  snapshotRefresh: 10, // Seconds
                                  frameRate: "30",
                                  port: 9999,
                  		width: "320",
                  		height: "240",
                                  }
                              }
                          },
                  

                  Here is the result:

                  0_1502297117801_mmm-rstpstream.PNG

                  S 1 Reply Last reply Aug 9, 2017, 5:41 PM Reply Quote 0
                  • S Offline
                    shbatm Module Developer @imdickie
                    last edited by Aug 9, 2017, 5:41 PM

                    @imdickie I’d be happy to take a look. First thing to try: change the name property of the second stream so it is different from the first one and see if that fixes it. In your config above, both are name: 'Front Door'

                    1 Reply Last reply Reply Quote 0
                    • I Offline
                      imdickie
                      last edited by Aug 9, 2017, 9:53 PM

                      @shbatm Thanks for the quick response. I changed them both to the correct names. Same result though, one stream in both windows.

                      S 1 Reply Last reply Aug 10, 2017, 12:52 AM Reply Quote 0
                      • 1
                      • 2
                      • 3
                      • 4
                      • 5
                      • 60
                      • 61
                      • 2 / 61
                      • First post
                        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