The Blog

ZoneMinder Ubuntu 10.10 Setup Posted on

Part A – installing ZoneMinder from Ubuntu repositories:

      1. Install libavcodec with extra codecs (for x264 support)
      2. Install ZoneMinder 1.24.2 from the Ubuntu repositories
      3. Correct the Apache2 configurations necessary for ZoneMinder
      4. Fix ZoneMinder startup issue
      5. Show the current kernel.shmall and kernel.shmmax values and adjust them to 90% of the system memory
      • STREAM_METHOD = mpeg
      • MPEG_LIVE_FORMAT = asf

          #!/bin/sh
          # ZoneMinder 1.24.2 installation script
          #
          # Copyright (C) 2010 Chris “Pada” Kistner
          #
          # This program is free software; you can redistribute it and/or
          # modify it under the terms of the GNU General Public License
          # as published by the Free Software Foundation; either version 2
          # of the License, or (at your option) any later version.

      echo “— Checking for root privileges…”
      if [ “`whoami`” != “root” ]; then
      echo Error: This script requires root access
      exit 1
      fi

      echo “— Installing extra codecs, which includes x264 support…”
      apt-get -y install libavcodec-extra-52 libavformat-extra-52 libswscale-extra-0 libavfilter-extra-1

      echo “— Installing ZoneMinder…”
      apt-get -y install zoneminder

      echo “— Adding ZoneMinder to Apache2…”
      ln -s /etc/zm/apache.conf /etc/apache2/sites-available/zoneminder.conf
      a2ensite zoneminder
      service apache2 restart

      echo “— Adding alias for zoneminder service and fixing ZoneMinder startup…”
      ln -s /etc/init.d/zoneminder /etc/init.d/zm
      update-rc.d -f zoneminder remove
      update-rc.d -f zm remove
      update-rc.d zm defaults 92

      echo “— Applying ZMFix, adding www-data user to video group and restarting ZM…”
      chmod 4755 /usr/bin/zmfix
      zmfix -a
      adduser www-data video
      service zm restart

      echo “— Correcting SHM to 90% of memory…”
      apt-get -y install coreutils bc
      page_size=$(getconf PAGE_SIZE)
      mem_bytes=$(awk ‘/MemTotal:/ { printf “%0.f”,$2 * 1024}’ /proc/meminfo)
      mb=1048576
      mem_bytes_mb=$(expr $mem_bytes / $mb)
      shmmax=$(echo “$mem_bytes * 0.90” | bc | cut -f 1 -d ‘.’)
      shmmax_mb=$(expr $shmmax / $mb)
      shmall=$(expr $mem_bytes / $page_size)
      shmmax_cur=$(sysctl -n kernel.shmmax)
      shmmax_cur_mb=$(expr $shmmax_cur / $mb)
      shmall_cur=$(sysctl -n kernel.shmall)
      echo “– Total memory = $mem_bytes B = $mem_bytes_mb MB”
      echo “– Page size = $page_size B”
      echo “– Current kernel.shmmax = $shmmax_cur B = $shmmax_cur_mb MB”
      echo “– Current kernel.shmall = $shmall_cur pages”
      if [ “$shmmax” -eq “$shmmax_cur” ] && [ “$shmall” -eq “$shmall_cur” ]; then
      echo “– Recommended shm values already set”
      else
      echo “– Recommended: kernel.shmmax = $shmmax B = $shmmax_mb MB”
      echo “– Recommended: kernel.shmmall = $shmall pages”
      file=/etc/sysctl.conf
      if [ “`grep “^kernel.shmmax” $file -c`” != “0” ]; then
      echo “– Replacing: kernel.shmmax in $file”
      sed “s/^kernel.shmmax.*$/kernel.shmmax=$shmmax/g” -i $file
      else
      echo “– Adding: kernel.shmmax to $file”
      echo kernel.shmmax=$shmmax >> $file
      fi
      if [ “`grep “^kernel.shmall” /etc/sysctl.conf -c`” != “0” ]; then
      echo “– Replacing: kernel.shmall in $file”
      sed “s/^kernel.shmall.*$/kernel.shmall=$shmall/g” -i $file
      else
      echo “– Adding: kernel.shmall to $file”
      echo kernel.shmall=$shmall >> $file
      fi
      echo “– Using: new sysctl values”
      sysctl -p
      fi

      # Done
      echo “— Done.”


I have written a shell script to:Here’s the script:

Code:

You might want to make the following changes under Options > Images:
Also read through the http://www.zoneminder.com/wiki/index.ph … peg%2C_etc.) guide, and you might want to follow the “Add the video group to the www-data user” and “Fix deprecated usage of ereg() in functions.php” steps.

I have tested this by altering FFMPEG_OUTPUT_OPTIONS and I’ve successfully managed to let ZoneMinder convert the recorded event into a x264 encoded video using ffmpeg’s x264 medium + main presets.

Just remember that if you want to test the input of x264 streams, you have to select ffmpeg as the source type AND if you’re streaming from a local file, ensure that the www-user has read permissions!

This entry was posted in Uncategorized. Bookmark the permalink.

Please Post Your Comments & Reviews

Your email address will not be published. Required fields are marked *



CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code