setting up zm on raspberry pi installed raspbian, installed zm per docker steps using entrypoint.sh in docker utils zm wouldn't start, because zmsystemctl is not working via this docker script i migrated to devuan (change apt repos, then apt-get install sysvinit-core, then reboot) and it now doesn't try to run zmsystemctl and it actually works next error: failed to open vchiq instance this reportedly has to do with www-user not having permissions to video group let's change that... usermod -a -G video www-data usermod -a -G wheel www-data edit: that was not it. dead end. let's try https://raspberrypi.stackexchange.com/questions/19436/how-can-i-permanently-fix-dev-vchiq-permission-errors chmod 777 on /dev/vchiq worked. NOTE: it looks like a reboot would've worked for the video group as well. need to log out and back in the www-data user... but i 777'd it. Now, on to testing the RTSP path for H264, and use passthrough. I tested the path in Mplayer and it does work from my laptop, so the path is correct. ZM doesn't seem to work. Something with ZM is broken... i tried to run the onvif probe... seems there are a couple dependencies not installed on this install for onvif probe i'm giving up for now on configuring onvif probe. This is no doubt due to it being a docker script. rtsp://admin:@192.168.1.138:88/videoMain this path works in mplayer but not in zm ffmpeg. let's try changing to tcp or udp or something else... OK this time it seems to work sorta except [zmc_m1] [Monitor dimensions are 1280x720 but camera is sending 320x240] 7]: INF [zmc_m1] [Got signal 15 (Terminated), exiting] Aug 11 03:44:00 raspberrypi zmc_m1[2657]: INF [zmc_m1] [Unable to read packet from stream 0: error -541478725 "End of file".] Aug 11 03:44:00 raspberrypi zmc_m1[2657]: WAR [zmc_m1] [Return from Capture (-1), signal loss] Aug 11 03:44:00 raspberrypi zmc_m1[2657]: ERR [zmc_m1] [Failed to capture image from monitor 1 main (1/1)] ok this hm.... // all kinds of errors // Aug 11 03:45:29 raspberrypi zmdc[2349]: INF ['zmc -m 1' sending stop to pid 2764 at 18/08/11 03:45:29] Aug 11 03:45:29 raspberrypi zmc_m1[2764]: INF [zmc_m1] [Got signal 15 (Terminated), exiting] Aug 11 03:45:29 raspberrypi zmc_m1[2764]: ERR [zmc_m1] [Unable to read packet from stream 0: error -1414092869 "Immediate exit requested".] Aug 11 03:45:29 raspberrypi zmc_m1[2764]: WAR [zmc_m1] [Return from Capture (-1), signal loss] Aug 11 03:45:29 raspberrypi zmc_m1[2764]: ERR [zmc_m1] [Failed to capture image from monitor 1 main (1/1)] Aug 11 03:45:29 raspberrypi zmdc[2349]: INF ['zmc -m 1' exited normally] Aug 11 03:45:30 raspberrypi zmdc[2349]: INF [Starting pending process, zmc -m 1] Aug 11 03:45:30 raspberrypi zmdc[2349]: INF ['zmc -m 1' starting at 18/08/11 03:45:30, pid = 2787] Aug 11 03:45:30 raspberrypi zmdc[2787]: INF ['zmc -m 1' started at 18/08/11 03:45:30] Aug 11 03:45:31 raspberrypi zmc_m1[2787]: INF [zmc_m1] [Starting Capture version 1.31.44] Aug 11 03:45:31 raspberrypi zmc_m1[2787]: INF [zmc_m1] [Priming capture from rtsp://admin:@192.168.1.138:88/videoMain] Aug 11 03:45:31 raspberrypi zmc_m1[2787]: WAR [zmc_m1] [Unknown method (rtpUni)] Aug 11 03:45:31 raspberrypi zmc_m1[2787]: INF [zmc_m1] [Stream open rtsp://admin:@192.168.1.138:88/videoMain, parsing streams...] Aug 11 03:45:39 raspberrypi zmwatch[2428]: INF [Restarting capture daemon for main, no image since startup. Startup time was 1533959131 - now 1533959139 > 5] Aug 11 03:45:41 raspberrypi zmdc[2349]: INF ['zmc -m 1' sending stop to pid 2787 at 18/08/11 03:45:41] Aug 11 03:45:44 raspberrypi zmc_m1[2787]: INF [zmc_m1] [Got signal 15 (Terminated), exiting] Aug 11 03:45:44 raspberrypi zmc_m1[2787]: ERR [zmc_m1] [Unable to read packet from stream 0: error -1414092869 "Immediate exit requested".] Aug 11 03:45:44 raspberrypi zmc_m1[2787]: WAR [zmc_m1] [Return from Capture (-1), signal loss] Aug 11 03:45:44 raspberrypi zmc_m1[2787]: ERR [zmc_m1] [Failed to capture image from monitor 1 main (1/1)] Aug 11 03:45:44 raspberrypi zmdc[2349]: INF ['zmc -m 1' exited normally] // hm... now mplayer doesn't work. let's reboot camera. // Exiting... (Quit) dev@dev:~/delete/zmhwlasergit/ZMHW_Project_LaserDiodeSensor$ mplayer rtsp://admin:@192.168.1.138:88/videoMain Playing: rtsp://admin:@192.168.1.138:88/videoMain (+) Video --vid=1 (h264) (+) Audio --aid=1 (pcm_mulaw) File tags: Comment: videoMain Title: IP Camera Video AO: [pulse] 8000Hz mono 1ch s16 VO: [opengl] 1280x720 yuv420p AV: 00:00:00 A-V: -0.462 Dropped: 8 Audio/Video desynchronisation detected! Possible reasons include too slow hardware, temporary CPU spikes, broken drivers, and broken files. Audio position will not match to the video (see A-V status field). AV: 00:00:04 A-V: -1.915 ct: -1.916 Dropped: 38 Exiting... (Quit) dev@dev:~/delete/zmhwlasergit/ZMHW_Project_LaserDiodeSensor$ mplayer rtsp://admin:@192.168.1.138:88/videoMain Playing: rtsp://admin:@192.168.1.138:88/videoMain [ffmpeg/demuxer] rtsp: Could not find codec parameters for stream 0 (Video: h264, none): unspecified size [ffmpeg/demuxer] Consider increasing the value for the 'analyzeduration' and 'probesize' options (+) Video --vid=1 (h264) (+) Audio --aid=1 (pcm_mulaw) File tags: Comment: videoMain Title: IP Camera Video AO: [pulse] 8000Hz mono 1ch s16 [lavf] error reading packet. // I rebooted the camera, tried mplayer again and it worked. I set the zm rpi to videoSub and resolution 640x360 and it didn't work, but then two minutes later it worked... hm.. Load is good. I've taken a picture. very low. Looking at 3% wow. OK, but that's 640 x 360. Let's try HD, and then let's try both without mmal to see if there's a difference. See if the mmal is implemented in this zm. tcp by the way, on ffmpeg. tcp, ffmpeg, the path above, and videoSub worked. trying videoMain now, let's see if it suddenly catches after a few minutes. I didn't have any luck with HD. I tried rebooting camera, no luck. I set it back to 640 x 480 and it caught near immediately (within a minute) this seems to be what the rpi wants. It looks like HD isn't working with the RPI. Load is low. I'm going to take this device on the road, and try it with a couple more cameras. Let's see how many SD cameras we can get running on it. Load is about .7, though htop shows no more than 5% on any given core (more around 1-3.3%. So for rpi3, I'd stick with SD for now. TODO: try more cameras, try ffmpeg without mmal... just as a reminder there is armel (32 bit arm without hardware floating point peripheral) armhf (32 bit with fp peripheral) arm64 (64 bit arm) Although each device has its own requirements beyond that which is why arm is shit and not nearly as compatible as x86. I digress. After looking a bit more, I realized that they aren't using the binary ffmpeg in ZM. I've never really investigated much. I have used MJPEG up to this point. here: dev@raspberrypi:~/ZoneMinder/src $ less zm_ffmpeg.cpp dev@raspberrypi:~/ZoneMinder/src $ grep -r mmal zm_ffmpeg_camera.cpp: if ( (mVideoCodec = avcodec_find_decoder_by_name("h264_mmal")) == NULL ) { zm_ffmpeg_camera.cpp: Debug(1, "Failed to find decoder (h264_mmal)" ); zm_ffmpeg_camera.cpp: Debug(1, "Success finding decoder (h264_mmal)" ); // I'm enabling debug logging in component files to see where this shows up. and then grep -r ffmpeg | less in the /var/log/zm folder zm_debug.log.05486:08/11/18 04:51:33.526451 zmc_m1[5486].DB1-zm_ffmpeg_camera.cpp/503 [Success finding decoder (h264_mmal)] zm_debug.log.05486:08/11/18 04:51:33.526678 zmc_m1[5486].DB1-zm_ffmpeg_camera.cpp/512 [Video Found decoder h264_mmal] zm_debug.log.05486:08/11/18 04:51:33.526743 zmc_m1[5486].DB1-zm_ffmpeg.cpp/266 [Dumping stream index i(0) index(0)] zm_debug.log.05486:08/11/18 04:51:33.526806 zmc_m1[5486].DB1-zm_ffmpeg.cpp/271 [ Stream #0:0] zm_debug.log.05486:08/11/18 04:51:33.526865 zmc_m1[5486].DB1-zm_ffmpeg.cpp/279 [, frames:17, timebase: 1/90000] zm_debug.log.05486:08/11/18 04:51:33.526974 zmc_m1[5486].DB1-zm_ffmpeg.cpp/281 [: Video: h264 (Baseline), yuv420p(progressive), 640x360] zm_debug.log.05486:08/11/18 04:51:33.527227 zmc_m1[5486].DB1-zm_ffmpeg.cpp/229 [90k stream tb numerator , ] zm_debug.log.05486:08/11/18 04:51:33.527316 zmc_m1[5486].DB1-zm_ffmpeg.cpp/229 [180k codec time base:] zm_debug.log.05486:08/11/18 04:51:33.527382 zmc_m1[5486].DB1-zm_ffmpeg.cpp/336 [ zm_debug.log.05486:08/11/18 04:51:33.527438 zmc_m1[5486].DB1-zm_ffmpeg_camera.cpp/519 [Calling avcodec_open2] zm_debug.log.05486:08/11/18 04:51:33.588667 zmc_m1[5486].DB1-zm_ffmpeg_camera.cpp/542 [HWACCEL not in use] zm_debug.log.05486:08/11/18 04:51:33.589192 zmc_m1[5486].DB1-zm_ffmpeg_camera.cpp/554 [Audio Found decoder] zm_debug.log.05486:08/11/18 04:51:33.589282 zmc_m1[5486].DB1-zm_ffmpeg.cpp/266 [Dumping stream index i(1) index(0)] zm_debug.log.05486:08/11/18 04:51:33.589347 zmc_m1[5486].DB1-zm_ffmpeg.cpp/271 [ Stream #0:1] zm_debug.log.05486:08/11/18 04:51:33.589407 zmc_m1[5486].DB1-zm_ffmpeg.cpp/279 [, frames:86, timebase: 1/8000] zm_debug.log.05486:08/11/18 04:51:33.589575 zmc_m1[5486].DB1-zm_ffmpeg.cpp/281 [: Audio: pcm_mulaw, 8000 Hz, 1 channels, s16, 64 kb/s] zm_debug.log.05486:08/11/18 04:51:33.589641 zmc_m1[5486].DB1-zm_ffmpeg.cpp/336 [ zm_debug.log.05486:08/11/18 04:51:33.589699 zmc_m1[5486].DB1-zm_ffmpeg_camera.cpp/561 [Calling avcodec_open2] Ah, so it is working. but I don't know where the decoders are found.... However, I'd like to disable it, to see what the difference is.. How do I do that? And even with all this success, the foscam, still has too slow of a h264 stream. My cheaper Amovision camera gets better FPS than this... 3.5 vs 15fps. At least CPU is low. here's an idea. Let's change it to remote, which doesn't use mmal and see what the resource usage is. not exactly the same, but similar. hm.. getting a no rtsp sources error. Will give up on that for now. looking at the code and this forum post: https://forums.zoneminder.com/viewtopic.php?f=34&t=26112&p=100221&hilit=avcodec_find_decoder_by_name#p100221 ffmpeg libavcodec includes mmal codecs. Let's see if I can get an older one without libavcodec. https://packages.debian.org/stretch/libavcodec-dev this is the package we want to get an older copy of . Hm.. well as long as I know mmal is being used, I don't really need to test the old one, but I would like to. Question is, how to get the old version, without mmal installed... http://snapshot.debian.org/binary/libavcodec-dev/ has it but when was mmal added, and it is compatible with stretch... Maybe I should just install 1.30.4 and compare that... Might be easier in this case. That is the end for now.