Voici les codes des deux programmes qui tournent en cron sur mon Raspberry.
Le premier transforme les vidéos avi et mp4 en flv puis envoie les flv et les images jpg sur une instance locale de Piwigo. Il efface également les fichiers logs crées par l'une des caméras. Pour éviter au job suivant d'avoir un énorme paquet à traiter, pour éviter aussi aux syncro rapides de devoir attendre que toutes les conversions soient terminées, toutes les 10 conversions, je fais un rsync.
#!/bin/bash clear PIDFILE=/tmp/.piwigo.pid source=/media/raspdisk/mediacenter/cameras destination=/media/raspdisk/www/piwigo/galleries sourcefile="./.src.log" radsource="$source/" raddestination="$destination/" logfile=$HOME/piwigo.log function x1 { echo "$1 `date +"%d/%m/%Y %H:%M:%S"`" >> $2 } function xxx { chaine=${3#$1}; result=${chaine%$2}; echo "$result" >> "$4" } function decimal { res=`bc <<< "scale = 1; ( $1 / 10)"` resdecimal="${res: -2}" echo $resdecimal } function xfert { rsync -avrz --exclude *.mp4 --exclude *.avi --exclude *.log --delete-after $1 $2 } export -f decimal export -f x1 export -f xxx export -f xfert if [ -f $PIDFILE ] then PID=$(cat $PIDFILE) ps -p $PID > /dev/null 2>&1 if [ $? -eq 0 ] then x1 $logfile x1 "Job is already running " $logfile exit 1 else ## Process not found assume not running echo $$ > $PIDFILE if [ $? -ne 0 ] then x1 $logfile echo "Could not create PID file" >> $logfile exit 1 fi fi else echo $$ > $PIDFILE if [ $? -ne 0 ] then x1 $logfile echo "Could not create PID file" >> $logfile exit 1 fi declare -a srcarray # declare -a destarray rm $sourcefile # rm $destfile rm $logfile echo $radsource x1 "piwigo.sh : " $logfile x1 "==================== " $logfile xfert $radsource $raddestination x1 "Début : " $logfile x1 "source : " $logfile echo "source" find $source -name '*.avi' -exec bash -c 'xxx '$radsource' ".avi" "$0" '$sourcefile' ' {} \; ; find $source -name '*.mp4' -exec bash -c 'xxx '$radsource' ".mp4" "$0" '$sourcefile' ' {} \; ; x1 "Tableaux : " $logfile echo "tableau" x1 " source : " $logfile echo "-- source" index=0 for w in $(cat "$sourcefile"); do srcarray[index]="$w" index=$(expr $index + 1) done echo "--" x1 "Tableau : " $logfile echo "done" echo "${#srcarray[@]} - ${#destarray[@]}" >> $logfile echo "${#srcarray[@]} - ${#destarray[@]}" x1 "Conversion : " $logfile compteboucle=0 compteaction=0 for iii in "${srcarray[@]}" do ((compteboucle++)) entree="$iii" insource=0 if [ -f "$radsource$entree.avi" ] && [ ! -f "$radsource$entree.flv" ]; then ((compteaction++)) echo -n "$compteboucle-$compteaction : $radsource$entree.flv n'existe pas - " /usr/bin/ffmpeg -y -i "$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 "$radsource$entree.flv" >/dev/null 2>&1 echo "ok" fi if [ -f "$radsource$entree.mp4" ] && [ ! -f "$radsource$entree.flv" ]; then ((compteaction++)) echo -n "$compteboucle-$compteaction : $radsource$entree.flv n'existe pas - " /usr/bin/ffmpeg -y -i "$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 "$radsource$entree.flv" >/dev/null 2>&1 echo "ok" fi cpt=$(decimal $compteaction) echo $cpt if [ "$cpt" = ".0" ] then xfert $radsource $raddestination else echo "Pas de transfert" fi # test=$(echo "scale=1; $1/3" | bc) done x1 "Conversion : " $logfile x1 "Transfert : " $logfile xfert $radsource $raddestination x1 "Transfert : " $logfile # rsync -avrz --delete-after -L $source/*.jpg $destination rm $PIDFILE echo "$PIDFILE removed" fi
Le second script synchronise, en utilisant rsync et ssh, les fichiers de l'instance locale de Piwigo vers celle installée sur mon site hébergé chez OVH en mutualisé.
#!/bin/sh clear PIDFILE=/tmp/.syncovh.pid if [ -f $PIDFILE ] then PID=$(cat $PIDFILE) ps -p $PID > /dev/null 2>&1 if [ $? -eq 0 ] then echo "Job is already running" exit 1 else ## Process not found assume not running echo $$ > $PIDFILE if [ $? -ne 0 ] then echo "Could not create PID file" exit 1 fi fi else echo $$ > $PIDFILE if [ $? -ne 0 ] then echo "Could not create PID file" exit 1 fi # # Initialisation des variables # source=/media/raspdisk/www/piwigo/galleries destsrv=user@ftp.site.fr destpath=camip/piwigo/piwigo/galleries destination=$destsrv:$destpath logpath=$HOME logstart=$logpath/syncovh_start.log logend=$logpath/syncovh_end.log boucle=0 resultat=0 # # Initialisation des logs # DATE=`date +"%d/%m/%Y %H:%M:%S"` echo "synchro OVH " > $logstart echo "============================" >> $logstart echo "Lancement du programme : $DATE" >> $logstart clear echo "Boucle commencée : $DATE" >> $logstart echo "Boucle commencée : $DATE" echo "Source : $source" echo "Destination : $destination" echo "$source/evt_*.log" cd $source find . -name '*.log' -exec rm {} \; cd $HOME find -L $source -type f | wc -l > ./sourcesize ssh $destsrv "find -L $destpath -type f |wc -l" > ./destsize sourcesize=$(cat ./sourcesize) destsize=$(cat ./destsize) echo "Source : $sourcesize - Destination : $destsize" if [ $sourcesize -eq $destsize ] then echo "Rien à transférer" else echo "Transfert vers OVH" DATE=`date +"%d/%m/%Y %H:%M:%S"` echo "Transfert vers OVH commencé : $DATE" >> $logstart rsync -avrz --delete-after -L -e ssh $source/* $destination DATE=`date +"%d/%m/%Y %H:%M:%S"` echo "Transfert vers OVH terminé : $DATE" >> $logstart fi DATE=`date +"%d/%m/%Y %H:%M:%S"` echo "Programme terminée : $DATE" >> $logstart rm $PIDFILE echo "$PIDFILE removed" fi
Un script supplémentaire me permet de surveillé les tâches de fond en visualisant les PID et les fichiers logs.
#!/bin/bash date echo "*************************" ls /tmp/.*.pid echo "*************************" cat ./*.log echo "*************************"
Je reviens vers vous car j'ai avancé sur mon problème. A défaut de solution, j'ai trouvé un contournement intéressant : convertir les mp4 et avi en flv.
Comme je suis sous Linux, faire un bash pour gérer cette conversion ne m'a pas été très compliqué.
Je procède de la manière suivante :
- Recherche des avi et mp4
- Conversion en flv dans le dossier source (ça m'évite de devoir gérer la création de l'arborescence de destination)
- rsync sélectif vers un dossier local (celui sur mon Raspberry qui contient une instance de piwigo
- rsync global montant vers mon hébergement chez OVH.
Si ça intéresse quelqu'un, je peux sans problème mettre mon code en ligne, sachant qu'il y a des contraintes (je ne gère pas les noms de fichiers ou de répertoires avec des espaces par exemple), sachant aussi qu'à cet instant, mon code n'est pas propre pas documenté mais simplement fonctionnel.
Bonjour
Volontiers pour le lien en message privé mais j'ai essayé de cliquer sur "courriel" sur ton profil mais j'y ai pas accès
Bonjour
Peux tu me donner un lien en message privé si tu veux ?
Bonjour,
J'ai fait le test avec Firefox, sous Windows 7 (en machine virtuelle) et sous Ubuntu, en essayant de lire des mp4 et des avi.
Voici ce que me disent les deux configurations.
J'ai bien sûr installé Adobe Flashplayer sous W7 et ele plugin qui va bien sous Ubuntu.
Bonjour,
le plugin VideoJS devrais fonctionner quels est le problème ?
Hello !
Est-ce que tu as trouvé la réponse à ton problème ?
J'ai également un mutu OVH et un VPS chez eux donc ça m'intéresse :)
ps : je suis tout nouveau et débutant de Piwigo hein ^^
Guillaume,
Bonjour/Bonsoir,
J'ai installé Piwigo sur mon hébergement mutualisé chez OVH.
Le but est d'y stocker les images et vidéos provenant de caméras IP installées chez moi.
Les images sont au format jpg et les vidéos aux formats mp4 et avi.
Ces fichiers sont envoyés via ftp sur le serveur.
Pour visualiser les images, aucun problème. Par contre, impossible de visualiser les vidéos.
J'ai installé les plugins Embedded Videos et VideoJS mais sans résultat...
D'avance merci pour votre aide.
Quelqu'un a déjà été confronté à ce problème ?
Version de Piwigo: Piwigo 2.8.2
Version de PHP: 5.4.45
Version de MySQL: 5.5.46-0+deb7u1-log
URL Piwigo: