•  » Outils
  •  » Caméras IP Dlink, Piwigo et serveur OVH mutualisé

#1 2016-09-05 01:09:41

abach
Membre
2016-08-21
8

Caméras IP Dlink, Piwigo et serveur OVH mutualisé

Bonjour/Bonsoir,

J'ai installé Piwigo sur un serveur OVH mutualisé afin d'y visualiser les images et vidéos provenant de caméras IP D-link.
Les images sont au format jpg, les vidéos aux formats avi et mp4
A ce jour, je n'arrivai pas à visualiser ces vidéos sous Piwigo. J'ai donc cherché et trouvé une solution de contournement. Cette solution consiste à transformer les vidéos en "flv"
Etant sous Linux (Mint ou raspbian), le bash c'est imposé de lui même.

Voici le code en question. Il est loin d'être optimisé mais fonctionne. Une limite à ne pas perdre de vue : aucun de mes fichiers ne comporte d'espace. Je ne gère donc pas ce cas de figure.

Je ne parle pas des dépendance à vérifier en amont car, tout bêtement, je ne m'en souviens plus. De mémoire, il doit au moins y avoir ffmpeg.

D'autre part, il serait plus propre de lancer ce script dans un cron et de vérifier qu'une instance n'est pas active, via une gestion du PID, avant de relancer le script. Pour faire simple, j'ai choisi la boucle infinie.

Code:

#!/bin/sh
# =============================================================
# Préparation des fichiers vidéos et images issues
# issues de caméras IP D-link
# afin de les visualiser sur un serveur OVH mutualisé
# au moyen de l'application "piwigo"
#
# Alain BACH - le 20160904
# version 1
# =============================================================
clear
#
# Initialisation des variables
#
prepar_source=/media/raspdisk/mediacenter/cameras
prepar_edestination=/media/raspdisk/www/piwigo/galleries
prepar_sourcefile="./.src.log"
prepar_radsource="$prepar_esource/"
prepar_raddestination="$prepar_edestination/"
prepar_logfile=$HOME/piwigo.log

ovh_source=/media/raspdisk/www/piwigo/galleries
ovh_destsrv=moi@ftp.domaine.fr
ovh_destpath=camip/piwigo/piwigo/galleries
ovh_destination=$ovh_destsrv:$ovh_destpath
ovh_logpath=/media/raspdisk/mediacenter
ovh_logstart=$ovh_logpath/syncovh_start.log
ovh_logend=$ovh_logpath/syncovh_end.log
boucle=0
ovhresultat=0

function funcdate
{
  echo "$1 `date +"%d/%m/%Y  %H:%M:%S"`" >> $2
}

function funcchainelog
{
  chaine=${3#$1};
  result=${chaine%$2};
  echo "$result" >> "$4"
}

export -f funcdate
export -f funcchainelog

while [ $boucle=0 ]
do
  # =================================================================
  # 
  # Préparation des fichiers vidéos et mise à disposition
  # 
  # =================================================================
  declare -a srcarray


  funcdate "Début               : " $prepar_logfile
  funcdate "source              : " $prepar_logfile
  echo "source"
  find $prepar_esource -name '*.avi' -exec bash -c 'funcchainelog '$prepar_radsource' ".avi" "$0" '$prepar_esourcefile' ' {} \; ;
  find $prepar_esource -name '*.mp4' -exec bash -c 'funcchainelog '$prepar_radsource' ".mp4" "$0" '$prepar_esourcefile' ' {} \; ;
  funcdate "Tableaux            : " $prepar_logfile
  echo "tableau"
  funcdate "     source         : " $prepar_logfile
  echo "-- source"
  index=0
  for w in $(cat "$prepar_esourcefile"); 
  do
    srcarray[index]="$w"
    index=$(expr $index + 1)
  done
  echo "--"
  funcdate "Tableau             : " $prepar_logfile
  echo "done"
  echo "${#srcarray[@]} - ${#destarray[@]}" >> $prepar_logfile
  echo "${#srcarray[@]} - ${#destarray[@]}"
  funcdate "Conversion          : " $prepar_logfile
  compteboucle=0
  compteaction=0
  for iii in "${srcarray[@]}"
  do
    ((compteboucle++))
    entree="$iii"
    insource=0
    if [ -f "$prepar_radsource$entree.avi" ] && [ ! -f "$prepar_radsource$entree.flv" ];
    then
      ((compteaction++))
      echo -n "$compteboucle-$compteaction : $prepar_radsource$entree.flv n'existe pas - "
      /usr/bin/ffmpeg -y -i "$prepar_radsource$entree.avi" -vcodec flv -f flv -r 29.97 -filter:v scale=w=640:h=480 -aspect 4:3 -b:v 300k -g 160 -cmp dct  -subcmp dct  -mbd 2 -flags +aic+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -b:a 56k "$prepar_radsource$entree.flv" >/dev/null 2>&1
      echo "ok"
    fi
    if [ -f "$prepar_radsource$entree.mp4" ] && [ ! -f "$prepar_radsource$entree.flv" ];
    then
      ((compteaction++))
      echo -n "$compteboucle-$compteaction : $prepar_radsource$entree.flv n'existe pas - "
      /usr/bin/ffmpeg -y -i "$prepar_radsource$entree.mp4" -vcodec flv -f flv -r 29.97 -filter:v scale=w=640:h=480 -aspect 4:3 -b:v 300k -g 160 -cmp dct  -subcmp dct  -mbd 2 -flags +aic+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -b:a 56k "$prepar_radsource$entree.flv" >/dev/null 2>&1
      echo "ok"
    fi
  done
  funcdate "Conversion          : " $prepar_logfile
  funcdate "Transfert           : " $prepar_logfile
  rsync -avrz --exclude *.mp4 --exclude *.avi --exclude *.log --delete-after $prepar_radsource $prepar_raddestination  
  funcdate "Transfert           : " $prepar_logfile  
  unset srcarray

  # =================================================================
  # 
  # Transfert vers OVH
  # 
  # =================================================================
  #
  # Initialisation des logs
  #
  DATE=`date +"%d/%m/%Y  %H:%M:%S"`
  echo "Lancement du programme      : $DATE" > $ovh_logstart
  echo "Lancement du programme      : $DATE" > $ovh_logend
  DATE=`date +"%d/%m/%Y  %H:%M:%S"`
  clear
  echo "Boucle commencée            : $DATE" >> $ovh_logstart
  echo "Boucle commencée            : $DATE"
  echo "Source                      : $ovh_source"
  echo "Destination                 : $ovh_destination"
  echo "$ovh_source/evt_*.log"
  cd $ovh_source
  find . -name '*.log' -exec rm  {} \;
  cd $HOME
  find -L $ovh_source -type f | wc -l > ./sourcesize
  ssh $ovh_destsrv "find -L $ovh_destpath -type f |wc -l" > ./destsize
  sourcesize=$(cat ./sourcesize)
  destsize=$(cat ./destsize)
  echo "ovhsource : $sourcesize - Destination : $destsize"
  if [ $sourcesize -eq $destsize ]
  then
    echo "Rien à transférer"
    sleep 1000
  else
    echo "Transfert vers OVH"
    DATE=`date +"%d/%m/%Y  %H:%M:%S"`
    echo "Transfert vers OVH commencé : $DATE" >> $ovh_logstart
    rsync -avrz --delete-after -L -e ssh $ovh_source/* $ovh_destination
    DATE=`date +"%d/%m/%Y  %H:%M:%S"`
    echo "Transfert vers OVH terminé  : $DATE" >> $ovh_logend
  fi
  DATE=`date +"%d/%m/%Y  %H:%M:%S"`
  echo "Boucle terminée             : $DATE" >> $ovh_logend
done

Dernière modification par abach (2016-09-05 01:11:16)

Hors ligne

  •  » Outils
  •  » Caméras IP Dlink, Piwigo et serveur OVH mutualisé

Pied de page des forums

Propulsé par FluxBB