Read the statement by Michael Teeuw here.
[MMM-RTSPStream] - Video Streaming from Live Feeds & Security Cameras
-
@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.
-
@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
-
@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
orps aux | grep electron
and thenkill {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.
-
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 ? -
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:
-
@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 arename: 'Front Door'
-
@shbatm Thanks for the quick response. I changed them both to the correct names. Same result though, one stream in both windows.
-
@imdickie OK, couple more things to try:
- Make sure you are actually on the
wip
branch to use OMXPlayer:- Run
cd ~/MagicMirror/modules/MMM-RTSPStream/ && git status
and the first line should say:On branch wip
. If it saysOn branch master
then rungit checkout wip
to switch.
- Run
- Change the
port
setting ofstream2
toport: 10000
(or some other free port, different thanstream1
– this shouldn’t matter when usingomxplayer
, but if it works it means there’s probably a bug I need to fix. - Can you please restart the MM2 script and post (or send in a chat) your Mirror’s server log–e.g. the output to the console/log file and not the DevTools/browser?
- If you’re using
pm2
to run the MM script, this would be in~/.pm2/logs/
on a RPi or runpm2 restart mm && pm2 logs mm
- I’m looking for any errors and the lines that start with “Starting WebSocket server on port…” and “Starting stream stream1 with args…”
- If you’re using
- Make sure you are actually on the
-
@shbatm Changing the ports did allow me to see separate streams.
However, when I did the && git status command it did come up On Branch Master so I ran git checkout wip. When I kicked off the MM script after that change my screen just goes black. I went back to master with the different port numbers for now.
I am not running pm2. I can rebuild from scratch and set it up though. This is all pretty new to me and I am learning as I go.
Ctl+q doesn’t stop MM when in the black screen. I had to alt+tab to the console window and ctl+c to stop the script.
Below is the console from when I ran the MM script and it went to a black screen. Hopefully that gives you some idea what is going on.
Thanks again for the help.
pi@raspberrypi:~/MagicMirror $ npm start > magicmirror@2.1.2 start /home/pi/MagicMirror > sh run-start.sh Starting MagicMirror: v2.1.2 Loading config ... Loading module helpers ... No helper found for module: alert. Initializing new module helper ... Module helper loaded: updatenotification No helper found for module: clock. Initializing new module helper ... Module helper loaded: calendar No helper found for module: compliments. No helper found for module: currentweather. Initializing new module helper ... Module helper loaded: newsfeed Initializing new module helper ... Module helper loaded: MMM-WunderGround WARNING! Could not load config file. Starting with default configuration. Error found: Error: Cannot find module 'ps-tree' Loading module helpers ... No helper found for module: alert. Initializing new module helper ... Module helper loaded: updatenotification No helper found for module: clock. Initializing new module helper ... Module helper loaded: calendar No helper found for module: compliments. No helper found for module: currentweather. Initializing new module helper ... Module helper loaded: newsfeed Initializing new module helper ... Module helper loaded: MMM-WunderGround App threw an error during load Error: Cannot find module 'ps-tree' at Module._resolveFilename (module.js:470:15) at Function.Module._resolveFilename (/home/pi/MagicMirror/node_modules/electron/dist/resources/electron.asar/common/reset-search-paths.js:35:12) at Function.Module._load (module.js:418:25) at Module.require (module.js:498:17) at require (internal/module.js:20:19) at Object. (/home/pi/MagicMirror/modules/MMM-RTSPStream/node_helper.js:15:16) at Object. (/home/pi/MagicMirror/modules/MMM-RTSPStream/node_helper.js:188:3) at Module._compile (module.js:571:32) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) Whoops! There was an uncaught exception... { Error: Cannot find module 'ps-tree' at Module._resolveFilename (module.js:470:15) at Function.Module._resolveFilename (/home/pi/MagicMirror/node_modules/electron/dist/resources/electron.asar/common/reset-search-paths.js:35:12) at Function.Module._load (module.js:418:25) at Module.require (module.js:498:17) at require (internal/module.js:20:19) at Object. (/home/pi/MagicMirror/modules/MMM-RTSPStream/node_helper.js:15:16) at Object. (/home/pi/MagicMirror/modules/MMM-RTSPStream/node_helper.js:188:3) at Module._compile (module.js:571:32) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) code: 'MODULE_NOT_FOUND' } MagicMirror will not quit, but it might be a good idea to check why this happened. Maybe no internet connection? If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issues Launching application. ^C pi@raspberrypi:~/MagicMirror $
-
@imdickie If you were on the Master branch it makes sense now why you were getting duplicate views, it was using
ffmpeg
and looking at only the first port for both cameras. The work-in-progress branch does not use websockets/ports for local playback since OMXPlayer just draws directly on top of the MM’s browser window.For the black screen: I forgot the
wip
branch has an additional node package required. This should take care of your problem:cd ~/MagicMirror/modules/MMM-RTSPStream git checkout wip git pull npm install
You may or may not need to also add a
moduleOffset
config option: see the posts above for pictures, if the video doesn’t line up with the border, you can addmoduleOffset: X
to shift the video over (where X is a number of pixels).For more information about the
wip
branch, there is an updated README on the Github page: https://github.com/shbatm/MMM-RTSPStream/tree/wipFor
pm2
: it’s definitely not a requirement, but I find it’s nice to have; I included in the note above just in case you were already using it. It will automatically run the MM script for you on startup. See this page if you want more information.To all using the module: Thanks for bearing with me, I haven’t had a lot of time this past month to finish out the hardware-accelerated version (
wip
/development branch) but I hope to get it done in the next month or so. I really do appreciate any feedback / issues you have to help me improve this module.