Read the statement by Michael Teeuw here.
MMM-Mplayer video issues
-
Just changed from MMM-RTSPStream to MMM-Mplayer because of issues. That solved the issue with the processor being continuously maxed out. However, video from my ip cam is still delayed and stutters losing a lot of frames. I can play it outside of MagicMirror on another computer using the cameras web interface or with VLC using the same url as MM and both show in real time. Tried a bunch of settings, no luck.
Curious for those that have this working properly, real time, what kind of camera are you using. What is your connection type. . . rtsp, http, resolutions, etc …
-
You may have seen this example config.
I am using this for my Axis P1448-LE.
It works okay, but is sometimes lagging, not stuttering.There is also a section on data gathering:
https://github.com/evroom/MMM-MPlayer?tab=readme-ov-file#data-gathering
You can supply me with this data and your config, then I can have a look at it.
-
Here is what I have at the moment. If interested, I can show a side by side video from the camera, and what is showing on MM.
Config:
{ module: 'MMM-MPlayer', disabled: false, position: "top_center", header: "Driveway", config: { layout: '', streamInterval: 30000, monitorAspect: '0', noAspect: false, noBorder: true, rotate: -1, windowPosition: '', windowSize: '', windowWidth: '', windowWidthNoNewAspect: false, windowHeightNoNewAspect: false, rtspStreamOverTcp: true, rtspStreamOverHttp: true, preferIpv4: true, ipv4onlyProxy: false, videoOutputDriver: 'xv,gl,gl_nosw,vdpau,', noSound: true, mplayerOption: '', windows: [ { windowSize: { width: 990, height: 557 }, windowPosition: { x: 471, y: 20 }, streams: [ 'rtsp://admin:Camadmin@172.16.0.37:554/cam/realmonitor?channel=1&subtype=0' //'http://admin:Camadmin@172.16.0.37/cgi-bin/snapshot.cgi?1' ] } ] } },Data:
pi@raspberrypi:~ $ grep version ~/MagicMirror/package.json "version": "2.30.0", pi@raspberrypi:~ $ cat /proc/device-tree/model; echo Raspberry Pi 4 Model B Rev 1.5 pi@raspberrypi:~ $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm pi@raspberrypi:~ $ uname -a Linux raspberrypi 6.12.47+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.47-1+rpt1~bookworm (2025-09-16) aarch64 GNU/Linux pi@raspberrypi:~ $ free -h -t total used free shared buff/cache available Mem: 3.7Gi 931Mi 1.9Gi 122Mi 1.1Gi 2.8Gi Swap: 199Mi 0B 199Mi Total: 3.9Gi 931Mi 2.1Gipi@raspberrypi:~ $ ps -eaf | grep mplayer | grep -v grep pi 5635 5458 27 19:37 ? 00:01:03 mplayer rtsp://admin:Camadmin@172.16.0.37:554/cam/realmonitor?channel=1&subtype=0 -vf rotate=-1 -monitoraspect 0 -noborder -geometry 471:20 -x 990 -y 557 -rtsp-stream-over-tcp -prefer-ipv4 -vo xv,gl,gl_nosw,vdpau, -nosound pi@raspberrypi:~ $ pm2 flush [PM2] Flushing /home/pi/.pm2/pm2.log [PM2] Flushing: [PM2] /home/pi/.pm2/logs/MagicMirror-out.log [PM2] /home/pi/.pm2/logs/MagicMirror-error.log [PM2] Logs flushed pi@raspberrypi:~ $ pm2 restart MagicMirror Use --update-env to update environment variables [PM2] Applying action restartProcessId on app [MagicMirror](ids: [ 0 ]) [PM2] [MagicMirror](0) ✓ ┌────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ MagicMirror │ default │ 2.30.0 │ fork │ 5704 │ 0s │ 13 │ online │ 0% │ 2.9mb │ pi │ enabled │ └────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ pi@raspberrypi:~ $ sleep 20 pi@raspberrypi:~ $ grep 'MMM-MPlayer' ~/.pm2/logs/MagicMirror-*.log/home/pi/.pm2/logs/MagicMirror-out.log:[2025-10-28 19:41:36.725] [LOG] Module helper loaded: MMM-MPlayer /home/pi/.pm2/logs/MagicMirror-out.log:[2025-10-28 19:41:37.509] [LOG] Connecting socket for: MMM-MPlayer /home/pi/.pm2/logs/MagicMirror-out.log:[2025-10-28 19:41:37.510] [LOG] Starting MMM-MPlayer module ... /home/pi/.pm2/logs/MagicMirror-out.log:[2025-10-28 19:41:40.746] [INFO] [MMM-MPlayer] (launchMPlayer) - Launch mplayer process for window-0 ... /home/pi/.pm2/logs/MagicMirror-out.log:[2025-10-28 19:41:40.762] [INFO] [MMM-MPlayer] Launched mplayer process for window-0 with PID 5921 /home/pi/.pm2/logs/MagicMirror-out.log:[2025-10-28 19:41:40.762] [INFO] [MMM-MPlayer] DISPLAY=:0 mplayer rtsp://admin:Camadmin@172.16.0.37:554/cam/realmonitor?channel=1&subtype=0 -vf rotate=-1 -monitoraspect 0 -noborder -geometry 471:20 -x 990 -y 557 -rtsp-stream-over-tcp -prefer-ipv4 -vo xv,gl,gl_nosw,vdpau, -nosound /home/pi/.pm2/logs/MagicMirror-out.log:[2025-10-28 19:41:43.181] [INFO] [MMM-MPlayer] [window-0] stdout: [lavf] stream 0: video (h264), -vid 0 pi@raspberrypi:~ $ -
@ge please always config and log info into code block wrappers
I will fix the prior post
Copy the text you wish to share
Paste the text into the editor, blank line above and below
Select the text you just pasted
Hit the </> button on the editor tool barOr triple backtick (us keyboard shifted left of 1 key)
On line by itself above and below your pasted text -
@sdetweil Thanks for letting me know something I should have know.
I will do better in the future. -
I have almost the exact environment and Raspberry Pi.
I am running MM version 2.33.0, but that should not matter IMHO.Btw, have 8Gb, and you ?
vcgencmd get_config total_memCan you open the RTSP URL in VLC and then open Window - Media Information ?
Then the Codec Details tab and please provide the Codec, Video resolution and Frame rate information.
I have H.264, 2560x1440, 25.And can you try to change the config to this (add 2 lines):
windows: [ { windowSize: { width: 990, height: 557 }, windowPosition: { x: 471, y: 20 }, rtspStreamOverTcp: true, noSound: true, streams: [ 'rtsp://admin:Camadmin@172.16.0.37:554/cam/realmonitor?channel=1&subtype=0' ] } ]From looks the RTSP URL you are using a Dahua cam, right ?
Maybe you can trysubtype=1??
Or anotherchannelperhaps.
I do not know the relation between channels and resolutions.
Try to find a lesser resolution to see if it makes it better.Also good to know how many other applications are streaming, for example Synology Surveillance Station.
-
Here we go. The Pi has only 4gb. I bought 8, but I must have accidentally used it elsewhere. I’ll probably get a Pi 5 with 8gb ordered soon and try that.
Codec details:
Codec: H264 - MPEG-4 AVC (part 10) (h264)
Video resolution: 1920x1080
Buffer dimensions: 1920x1088
Frame rate: 10
Orientation: Top left
Color primaries: ITU-R BT.709
Color transfer function: ITU-R BT.709
Color space: ITU-R BT.709 Range
Chroma location: LeftFrame rate is normally at 30. It’s 10 at the moment from when I last changed settings around.
I added the two lines, no change.
Cameras are Amcrest. I’ve tested with the other ones I have, different ages/resolutions, same issues. I have one that is not Amcrest, but it’s down at the moment, and I can’t get to it unless the weather gets better.
Tested lowest resolution and appeared not to work, 352x240 too blurry. Changed to 640x480 not very clear, but still could see the lights on vehicles passing by, delayed, stuttering. May take 10 seconds for the cars to pass though the camera, and if I’m lucky maybe 8 images appear. Sometimes only one or two or none at all.
Channel/Subchannel let me choose the stream from the camera. Main has the high resolutions, sub has the low. Normally I only use the main, and the sub is disabled.
On the old pi 3b, it ran along side with a stream going to Zoneminder using OMXplayer. Ive gone to removing it from Zoneminder, but it makes no change.
With all the changes I’ve attempted from high resolution to low, different frame rates, frame intervals, bit rates it never appears to make a difference. The encode is h.264. It has options for h.264b &h.265. Changing to those other encoding does make matters worse.
I’d say at this time, if your not running into these problems elsewhere, don’t go too deep on this. I’m probably going to get the Pi5 as it is to have a definite performance boost. I’m also looking at setting up Zoneminder to provide a feed out instead of direct from the camera to see if that makes any difference.
It will just take me some time to get to doing that. -
@ge pirmory is soldered on1/2/4/8. Not user adjustable
-
@sdetweil
Just an update on this.
I did find my pi 4 with 8gb of memory, after I ordered the pi5 with 8gb. Must have take the old pi 4 w 4Gb memory, out of my mirror, and stuck the old one back in again.
I now have setup a fresh install of MM on the new pi5 and it is amazingly fast compared to the old 4. Installed MMM-Mplayer, and it works great for a few hours. After about six hours, the camera on MM is about 15 seconds behind. When that happens the video becomes choppy, and at times it stops for a few seconds, some video is lost. It never gets caught back up again until it is restarted. Letting it run longer, the issue continues to get worse. To figure this out, I have the video being timestamped from the camera.
So when MM is started up, the clock on the video agrees ( about a second behind) with the clock on MM, which agrees with another computer displaying the stream. After time has passed, everything is still showing the correct/synced time, except for video in MMM-Mplayer.Processor temp 35-40c
-
A pity it does not work for you.
Strange that is only happens after a several hours
But mplayer is rather old, perhaps that is the primary issue.Still, I tried it on my Pi 3b with 1Gb RAM and it runs well.
It is 3 to 5 seconds lagging.
Like the stream on my P4b with 8Gb.
It also does not seem very memory hungry.Pi 3b is steaming now for over 2 hours, so I will need to look later again to see if it got messed up.
The Pi 4b is streaming for 2 weeks straight now, without issues.To me it looks more like a camera issue, but if you say that other players have no issues …
Somehow mplayer does not like your rtsp stream, or it is a combination of factors.I have found that there is a config file, where you can set options.
Try out some options (need to restart MagicMirror after every change).
For example trynocachefirst.
Then trycache=65536.
The optionnosoundis always good (can be set in the MMM-Mplayer options too, if not already done so).
Thebandwidthoption is just a shot in the dark.$ vi ~/.mplayer/config # Write your default config options here! # No cache nocache=yes # Cache size in kBytes (4MB / 8MB / 16MB / 64MB) # cache=4096 # cache=8192 # cache=16384 # cache=65536 # Do not play/encode sound nosound=yes # Bandwidth (10MB / 100MB / 1000MB) # bandwidth=80000000 bandwidth=100000000 # bandwidth=1000000000What also can be the case, is that the
windowSizeis not matching your stream resolution.
This can cause issues as it needs to recode this portion.
Try:windowSize: { width: 960, height: 540 },for a 1920x1080 (16:9) stream.
That is all I can think of.
Good luck.
