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 2.1m 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.
    • Cr4z33C Offline
      Cr4z33 @evroom
      last edited by

      @evroom I am in the same boat (with my Raspberry Pi 3 b+).

      However I am 100% sure my Pi can handle HD channel streams as they work perfectly if using VLC!

      1 Reply Last reply Reply Quote 0
      • evroomE Offline
        evroom
        last edited by

        I can stream full HD at 50 fps:

        Video codec omx-h264 width 1920 height 1080 profile 100 fps 50.000000

        A bit odd.

        MagicMirror version: 2.33.0
        Raspberry Pi 4 Model B Rev 1.5 (8 GB RAM)
        Raspbian GNU/Linux 12 (bookworm)

        Test environment:
        MagicMirror version: v2.33.0
        Raspberry Pi 3 Model B Plus Rev 1.3 (1 GB RAM)
        Raspbian GNU/Linux 12 (bookworm)

        Cr4z33C 1 Reply Last reply Reply Quote 0
        • Cr4z33C Offline
          Cr4z33 @evroom
          last edited by Cr4z33

          @evroom oops it came out I have to wait at least 30-40 seconds before I can see (succesfully) a 1080i @ 60Fps HD stream. :smiling_face_with_smiling_eyes:

          However yesterday I found one more issue…
          I connected the RPI for the first time to the TV to see how MagicMirror was looking on it, but I found out that the stream stops as soon as I ask something to Google Assistant (MMM-AssistantMk2 + MMM-Hotword by @Sean ) and it replies.
          After that the stream doesn’t resume at all.

          I don’t know where to start and cannot see why this is going on as the RPI can easily play 2+ media files at a time. :confounded_face:

          S 1 Reply Last reply Reply Quote 0
          • evroomE Offline
            evroom
            last edited by

            @Cr4z33
            As I do not use MMM-AssistantMk2 and/or MMM-Hotword, I cannot help you there.
            In principle the streaming should continue.
            As a matter of fact, when I stop MM, my cam streams still continue (are listed by pm2 as independent applications).
            As soon as there will be a MMM-HotAssistant, I might give it a try :-)

            MagicMirror version: 2.33.0
            Raspberry Pi 4 Model B Rev 1.5 (8 GB RAM)
            Raspbian GNU/Linux 12 (bookworm)

            Test environment:
            MagicMirror version: v2.33.0
            Raspberry Pi 3 Model B Plus Rev 1.3 (1 GB RAM)
            Raspbian GNU/Linux 12 (bookworm)

            Cr4z33C 1 Reply Last reply Reply Quote 0
            • Cr4z33C Offline
              Cr4z33 @evroom
              last edited by

              @evroom no problem mate although it looks like the developer is no more active in this thread my bad. :confused_face:

              Do you know by chance what to edit to see the stream in the same position as the white frame (I actually would like to get rid of it)?

              1 Reply Last reply Reply Quote 0
              • evroomE Offline
                evroom
                last edited by

                Looking at the css file of the module, I would try to edit the custom.css and add this:

                .MMM-RTSPStream .innerWrapper {
                  border: 0;
                }
                

                Not tested.

                MagicMirror version: 2.33.0
                Raspberry Pi 4 Model B Rev 1.5 (8 GB RAM)
                Raspbian GNU/Linux 12 (bookworm)

                Test environment:
                MagicMirror version: v2.33.0
                Raspberry Pi 3 Model B Plus Rev 1.3 (1 GB RAM)
                Raspbian GNU/Linux 12 (bookworm)

                1 Reply Last reply Reply Quote 0
                • S Offline
                  shbatm Module Developer @Cr4z33
                  last edited by

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

                  I found out that the stream stops as soon as I ask something to Google Assistant (MMM-AssistantMk2 + MMM-Hotword by @Sean ) and it replies.

                  Please check the web browser console (ctrl+shift+i) and see if for some reason AssistantMk2 or Hotword are sending a pause/hide command to other modules. You would see something like: MMM-RTSPSTREAM is suspended.... Also, after the stream disappears, check the status of PM2 (pm2 status from ssh/terminal) and see if omx_streamX is still running. That will let me know if the module is telling the stream to stop or if omxplayer is giving up.

                  Regarding the border alignment, search this forum and/or the closed issues on GitHub, it’s been answered before. @evroom’s solution looks correct to hide the border, but I can’t remember for sure.

                  Mini-rant: OMXPLAYER is the lowest resource player I’ve found to use for playing video streams on a Pi, but frankly, it’s a finicky b***h and has terrible logging to inform you of the problem. 90% of the issues raised with this module are caused by omxplayer itself, which, unfortunately I don’t have any better way to solve than any other user. That’s why I use pm2 to manage the streams so it will at least attempt to restart when it crashes.

                  @evroom, regarding the streams not stopping… Last week I found a bug in PM2’s API, calling stop on a process from node doesn’t work. I will work on a workaround until the PM2 devs correct the issue.

                  Cr4z33C ? 2 Replies Last reply Reply Quote 0
                  • BKeyportB Offline
                    BKeyport Module Developer
                    last edited by

                    I can confirm OMX is a major B.

                    I had to convert over to FFMPEG to get things to work without crashing the entire system to the point of taking it offline, but not crashing MM other than not updating anymore (Clock and such still work, just it couldn’t get anything off the internet)

                    The "E" in "Javascript" stands for "Easy"

                    1 Reply Last reply Reply Quote 0
                    • Cr4z33C Offline
                      Cr4z33 @shbatm
                      last edited by Cr4z33

                      @shbatm thanks for the reply.

                      I can confirm that I’ve got rid of the white frame by following @evroom 's suggestion (thanks mate).

                      Back in topic I’ve uploaded here the log 'cause I am not sure whether it is actually reporting a problem with MMM-RTSPStream or not. :thinking_face:

                      Looking at it it says MMM-RTSPStream.js:161 MMM-RTSPStream has resumed... after two questions I made to Google Assistant, but I found no mention about RTSP pausing or stopping.

                      However I can confirm that omx_stream has indeed stopped from running! :frowning_face_with_open_mouth:

                       pm2 status
                      ┌─────────────┬────┬──────┬────────┬─────────┬─────┬────────┬──────────┐
                      │ Name        │ id │ mode │ status │ ↺       │ cpu │ memory │
                      ├─────────────┼────┼──────┼────────┼─────────┼─────┼────────┼──────────┤
                      │ mm          │ 0  │ N/A  │ fork   │ online  │ 0   │ 0%     │ 2.5 MB   │
                      │ omx_stream1 │ 1  │ N/A  │ fork   │ stopped │ 0   │ 0%     │ 0 B      │
                      └─────────────┴────┴──────┴────────┴─────────┴─────┴────────┴──────────┘
                      
                      1 Reply Last reply Reply Quote 0
                      • ? Offline
                        A Former User @shbatm
                        last edited by

                        @shbatm @Cr4z33
                        It might be due to collision of stream output from multi-source (omxplayer and my voice output)
                        I’m not an expert of *nix system, so I cannot give a suggestion about using mixer(ALSA), but…

                        in MMM-AssistantMk configuration, this could be help (not tested by myself. I don’t have RTSP-stream…)

                        onIdle: {
                          timer: 1000*10, //After 10sec of last query,
                          command: "RTSP_ACTIVATE" 
                        },
                        
                        onActivate: {
                          timer: 0,
                          command: "RTSP_DEACTIVATE" 
                        },
                        
                        command: {
                          "RTSP_ACTIVATE": {
                            notificationExec: {
                              notification: "RTSP-PLAY",
                              payload: "all"
                            }
                          },
                          "RTSP_DEACTIVATE": {
                            notificationExec: {
                              notification: "RTSP-STOP",
                              payload: "all"
                            }
                          },
                        }
                        
                        Cr4z33C 1 Reply Last reply Reply Quote 0
                        • Cr4z33C Offline
                          Cr4z33 @Guest
                          last edited by Cr4z33

                          Thanks to @sean I’ve quickly fixed the RTSP issue by applying what he wrote here.

                          So if you are like me using both MMM-RTSPStream and MMM-AssistantMk2, open the config and in the MMM-AssistantMk2 module section replace

                          			config: {
                          

                          with

                          			config: {
                          				onIdle: {
                          				  timer: 1000*10, //After 10sec of last query,
                          				  command: "RTSP_ACTIVATE" 
                          				},
                          				
                          				onActivate: {
                          				  timer: 0,
                          				  command: "RTSP_DEACTIVATE" 
                          				},
                          				
                          				command: {
                          				  "RTSP_ACTIVATE": {
                          				    notificationExec: {
                          				      notification: "RTSP-PLAY",
                          				      payload: "all"
                          				    }
                          				  },
                          				  "RTSP_DEACTIVATE": {
                          				    notificationExec: {
                          				      notification: "RTSP-STOP",
                          				      payload: "all"
                          				    }
                          				  },
                          				},
                          

                          That way the stream will NEVER stop even if enquiring Google Assistant! :grinning_face_with_smiling_eyes:

                          Thank you @shbatm for willing to help me too.

                          ? 1 Reply Last reply Reply Quote 0
                          • ? Offline
                            A Former User @Cr4z33
                            last edited by

                            @cr4z33
                            Frankly said, it might not be due to my config modifying suggestion. (Because IT SHOULD PAUSE AND RESUME, but you said NEVER STOP)
                            I think it is due to use HDMI as output. I don’t know about it, but it might be able to mix from multi-sources.

                            Cr4z33C 1 Reply Last reply Reply Quote 0
                            • Cr4z33C Offline
                              Cr4z33 @Guest
                              last edited by

                              @sean yeah I actually forgot to mention that the RTSP outputs to HDMI while Google Assistant outputs to a RPI Voice HAT speaker. :grimacing_face:

                              ? 1 Reply Last reply Reply Quote 0
                              • ? Offline
                                A Former User @Cr4z33
                                last edited by

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

                                yeah I actually forgot to mention that the RTSP outputs to HDMI while Google Assistant outputs to a RPI Voice HAT speaker.

                                That’s how it works. not by my code. :D

                                Cr4z33C 1 Reply Last reply Reply Quote 0
                                • Cr4z33C Offline
                                  Cr4z33 @Guest
                                  last edited by Cr4z33

                                  @sean of course. :winking_face:

                                  To everybody else: I removed the white frame and forgot to ask how to move the streaming windows.

                                  It is now offset compared to its module position. :confused_face:

                                  I guess I need to edit something in

                                  .MMM-RTSPStream .canvas {
                                    position: absolute;
                                    z-index: 1;
                                    left: 50%;
                                    top: 50%;
                                    /*width: 352px;
                                    height: 240px;*/
                                    -webkit-transform: translate(-50%, -50%);
                                    transform: translate(-50%, -50%);
                                      width: 100%;
                                  height: 100%;
                                  }
                                  

                                  right?

                                  S 1 Reply Last reply Reply Quote 0
                                  • S Offline
                                    shbatm Module Developer @Cr4z33
                                    last edited by

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

                                    It is now offset compared to its module position.

                                    Play with the moduleOffset and absPosition config options. Search this forum for those and check out the README on GitHub for details of what each one does.

                                    Cr4z33C 1 Reply Last reply Reply Quote 0
                                    • cowboysdudeC Offline
                                      cowboysdude Module Developer @barnosch
                                      last edited by

                                      @barnosch Are you getting any console.log errors or PM2 errors?

                                      1 Reply Last reply Reply Quote 0
                                      • evroomE Offline
                                        evroom
                                        last edited by

                                        I tried playing with absPosition, but it does not do what is expected.

                                        First of all:

                                        absPosition: This overrides the automatic window and moduleOffset settings.

                                        Second of all:

                                        Format: { top: XX, right: XX, bottom: XX, left: XX } where XX is the pixel position on the screen.

                                        This is not quite true.
                                        The omxplayer options say: --win ‘x1 y1 x2 y2’
                                        This would translate to: { top: XX, left: XX, right: XX, bottom: XX }
                                        In principle it is a rectangular with coordinates (x1,y1) - (x2,y2).

                                        But most important:

                                        Whatever I do, including the module position, the video window is ALWAYS in the center of the screen, for the FULL width of the screen.

                                        I will try playing with the other parameters a bit.

                                        MagicMirror version: 2.33.0
                                        Raspberry Pi 4 Model B Rev 1.5 (8 GB RAM)
                                        Raspbian GNU/Linux 12 (bookworm)

                                        Test environment:
                                        MagicMirror version: v2.33.0
                                        Raspberry Pi 3 Model B Plus Rev 1.3 (1 GB RAM)
                                        Raspbian GNU/Linux 12 (bookworm)

                                        1 Reply Last reply Reply Quote 0
                                        • evroomE Offline
                                          evroom
                                          last edited by

                                          You can move the streaming window using

                                          moduleOffset: { left: XX, top: YY },
                                          

                                          left: plus value shifts right, minus value shifts left
                                          top: plus value shifts down, minus value shifts up

                                          The width and height value in the stream config determines the streaming window size.

                                          The name moduleOffset is IMHO a bit misleading, as it does not move the module window.

                                          I still fail to see the connection between the module position (e.g. “top_left”, “top_right”, “bottom_left”, etc) and the position of the streaming window.
                                          The streaming window always appears in the middle.
                                          Except when I use “top_bar” or “bottom_bar”.

                                          MagicMirror version: 2.33.0
                                          Raspberry Pi 4 Model B Rev 1.5 (8 GB RAM)
                                          Raspbian GNU/Linux 12 (bookworm)

                                          Test environment:
                                          MagicMirror version: v2.33.0
                                          Raspberry Pi 3 Model B Plus Rev 1.3 (1 GB RAM)
                                          Raspbian GNU/Linux 12 (bookworm)

                                          1 Reply Last reply Reply Quote 0
                                          • evroomE Offline
                                            evroom
                                            last edited by

                                            My MMM-RTSPStream module comes last.
                                            So the first modules may shift this module down and therefore my streaming window appears to be always located in the middle.
                                            In principle I want to have it in the middle, so I leave it there.
                                            I made sure that MMM-RTSPStream is the only one using “middle_center”.

                                            The module position will determine where the module window is being placed.
                                            Exactly where is determined by the main.css and perhaps changes in the custom.css.

                                            This is what the main.css does to “middle_center”, as example:

                                            .region.middle.center {
                                              width: 100%;
                                              text-align: center;
                                              -moz-transform: translateY(-50%);
                                              -o-transform: translateY(-50%);
                                              -webkit-transform: translateY(-50%);
                                              -ms-transform: translateY(-50%);
                                              transform: translateY(-50%);
                                            }
                                            

                                            For “middle_center” I changed my custom.css like this, for example:

                                            .region.middle.center {
                                              width: 60%;
                                            }
                                            

                                            This overrules the width in the main.css.
                                            [I have my monitor in portrait mode (900x1600) and have 2 columns of 60% + 40%]

                                            The moduleWidth and moduleHeight determine the size of your module and how other module will wrap around it.
                                            The moduleOffset will move the streaming window relative to the module window.

                                            The stream1 width and hight determine the streaming window size.
                                            When sized bigger than the module window, it will simply use this bigger size.
                                            It will even will cover other modules when too big, those modules will not wrap around it.

                                            This config works for me:

                                            {
                                              module: "MMM-RTSPStream",
                                              disabled: false,
                                              position: "middle_center",
                                              header: "Axis Security Monitor",
                                              config: {
                                                autoStart: true,
                                                rotateStreams: false,
                                                moduleWidth: 590,
                                                moduleHeight: 332,.
                                            //      moduleOffset: { left: 0, top: 0},
                                                localPlayer: 'omxplayer',
                                                remotePlayer: 'none',
                                                showSnapWhenPaused: false,
                                                remoteSnaps: false,
                                                stream1: {
                                                  name: 'Axis_M2026_LE_MkII',
                                                  url: 'rtsp://user:password@192.168.178.56/axis-media/media.amp?resolution=640x360',
                                                  width: 590,
                                                  height: 332
                                                },
                                            

                                            With

                                            $ pm2 logs mm
                                            

                                            you can check the streaming window parameters:

                                            0|mm  | Starting stream stream1 with args: [
                                            0|mm  |     "--avdict",
                                            0|mm  |     "rtsp_transport:tcp",
                                            0|mm  |     "--win",
                                            0|mm  |     "-2, 656, 588, 988",
                                            0|mm  |     "--no-osd",
                                            0|mm  |     "--live",
                                            0|mm  |     "--video_queue",
                                            0|mm  |     "4",
                                            0|mm  |     "--fps",
                                            0|mm  |     "30",
                                            0|mm  |     "rtsp://user:password@192.168.178.56/axis-media/media.amp?resolution=640x360"
                                            0|mm  | ]
                                            

                                            I have changed my custom config like this:

                                            .MMM-RTSPStream header {
                                                text-align: left;
                                            }
                                            .MMM-RTSPStream .innerWrapper {
                                              border-style: none;
                                              //border: 1px solid red;
                                            }
                                            

                                            I used solid red in order to see the position of the module window more clear.

                                            Be sure to use

                                            cd ~/MagicMirror; npm run config:check
                                            

                                            to check the config for errors before restarting mm, it will save you from obvious mistakes.

                                            Those are my findings, for me the settings work, perhaps it will help other users.

                                            MagicMirror version: 2.33.0
                                            Raspberry Pi 4 Model B Rev 1.5 (8 GB RAM)
                                            Raspbian GNU/Linux 12 (bookworm)

                                            Test environment:
                                            MagicMirror version: v2.33.0
                                            Raspberry Pi 3 Model B Plus Rev 1.3 (1 GB RAM)
                                            Raspbian GNU/Linux 12 (bookworm)

                                            J 1 Reply Last reply Reply Quote 1

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • 1
                                            • 2
                                            • 5
                                            • 6
                                            • 7
                                            • 8
                                            • 9
                                            • 30
                                            • 31
                                            • 7 / 31
                                            • 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