Read the statement by Michael Teeuw here.
[MMM-RTSPStream] - Video Streaming from Live Feeds & Security Cameras
-
@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 │ └─────────────┴────┴──────┴────────┴─────────┴─────┴────────┴──────────┘ -
@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" } }, } -
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.
-
@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. -
@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:
-
@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
-
@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?
-
@cr4z33 said in [MMM-RTSPStream] - Video Streaming from Live Feeds & Security Cameras:
It is now offset compared to its module position.
Play with the
moduleOffsetandabsPositionconfig options. Search this forum for those and check out the README on GitHub for details of what each one does. -
@barnosch Are you getting any console.log errors or PM2 errors?
-
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.
-
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 upThe 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”. -
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 mmyou 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:checkto 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.
-
@shbatm OK thanks.
-
Have you got the wayze cam to feed to your mirror?
-
@shbatm what if I want to use VLC instead of omxplayer?
I am going to move to a different SBC called Rock Pi 4B and we know that omxplayer is for the Raspberry Pi family only.
Would it be quite simple to edit the scripts or does it need a good programming knowledge? :smiling_face_with_smiling_eyes:
Right now I am using a VLC window in my VMware Debian 8.x based MagicMirror testing session, but it’s not really what I want… :confused_face:
-
@citizendevpi I started looking at VLC as an alternative to OMXPlayer but didn’t make it very far (honestly, just not enough time).
The most promising looked to be webchimera.js with VLC built for hardware acceleration, but the original repo for webchimera.js is marked abandoned. It looks like at least 1 fork is still active, but I didn’t get as far as testing anything.
If you have the capability to pursue it, I’d love some help. From what I have looked at, it should be a close-to-drop-in replacement for the FFMPEG version of this Module, and if that works, I could eliminate all of the OMXPlayer references (read: headaches).
References I’ve found:
https://thepi.io/how-to-compile-vlc-media-player-with-hardware-acceleration-for-the-raspberry-pi/
https://github.com/limoragni/WebChimera.js -
@shbatm unfortunately I am not skilled enough for that sorry. :slightly_frowning_face:
Anyway it came out that VLC was not a good idea when using a Rockchip based SBC.
Its VPU can be used only if using gst-launch-1.0 like ie.:gst-launch-1.0 uridecodebin uri=file:///usr/local/test.mp4 ! rkximagesinkThat way 4K streaming/playing looks good too.
-
@shbatm I’ve encountered a new issue.
While using a profile switching solution when I get to the profile that uses MMM-RTSPStream omxplayer displays the video at full screen! :face_screaming_in_fear:
The major problem is that no keyboard or mouse control can be used until I switch to a different profile that is not using your module.Can you please fix this?
-
That’s sounding more like the profile switcher’s issue - unless you’ve config’d this player to be full screen.
-
@bkeyport nope I didn’t set omxplayer anywhere but in this module. ;)
Also profile switching is only ‘telling’ modules to show or hide.
Nothing else.It’s done by voice command through MMM-AssistankMk2:
"CHANGE_PROFILE_1": { moduleExec: { module:[], exec: (module, params, key) => { var modules = ["YOUR", "MODULES", "TO", "SHOW", "FOR", "PROFILE1"] if (modules.indexOf(module.name) >= 0) { module.show() } else { module.hide() } } } }, "CHANGE_PROFILE_2": { moduleExec: { module:[], exec: (module, params, key) => { var modules = ["YOUR", "MODULES", "TO", "SHOW", "FOR", "PROFILE2"] if (modules.indexOf(module.name) >= 0) { module.show() } else { module.hide() } } } }, },
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