The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Сложный скрипт - help, !*! vfp7, 07-Июн-07, 11:32  [смотреть все]
hi
Нужна помощь в написании скрипта sh под FreeBSD 6.2 выполняемого из cron каждый 1 час.

Цель скрипта: Поиск в заданной папке (содержащей подпапки) avi файлов, в которые в текущий момент не ведется запись видеопотока (ffmpeg из локальной сети пишет в avi файлы с почасовой ротацией или ротацией по обрыву потока)
Затем эти файлы переконвертируем с новыми параметрами, и архивируем 7z в указанную папку, с именем аналогичным подпапке найденого файла.

Я написал так, но работает исключительно вручную, при запуске из crona - не отрабатывает:

#!/bin/sh
# Count Camer
countcam=1
# Init folder files video record
initdir="/var/tmp/cam"
# Folder output files
outdir="/var/ftp/cam"
# Temp file converting video stream
outfileavi="/tmp/tempencode.avi"
# Main code procedure converting:
rm -f $outfileavi
curcam=1
while [ $curcam -le $countcam  ]
do
  curdir=$initdir$curcam
  cd $curdir
  count=0
  for file in *
  do
    count=`expr $count + 1`
  done
  if [ $count -gt 1 ] ; then
  for file in *
  do
    count=`expr $count - 1`
    if [ $count -gt 0 ] ; then
      outfile7z=$outdir$curcam/$file".7z"
      ffmpeg -i $file -y -an -s 640x480 -hq -b 512 -vcodec msmpeg4v2 $outfileavi
      7z a -mx=7 -y -bd -p1972 $outfile7z $outfileavi
      rm -f $outfileavi
      rm $file
    fi
  done
  fi
curcam=`expr $curcam + 1`
done
exit 0

Тогда я попробовал что то типа:

find $initdir -name '*.avi' -type f -mtime +0 | ffmpeg -y -an -s 640x480 -hq -b 512 vcodec msmpeg4v2 | 7z a mx=7 -y -bd -pqwerty $outfile7z

Но не знаю как правильно перебросить результаты работы команд, и как 7z указать основную папку и передать ему подпапку аналогичную результату поиска команды find ...

  • Сложный скрипт - help, !*! DeadMustdie, 12:34 , 07-Июн-07 (1)
    В консоли, в которой работает запуск "вручную", сделать
      echo $PATH
    В скрипт в начало написать
      PATH=<результат предыдущего шага>
      export PATH
    • Сложный скрипт - help, !*! vfp7, 15:25 , 07-Июн-07 (2)
      >В консоли, в которой работает запуск "вручную", сделать
      >  echo $PATH
      >В скрипт в начало написать
      >  PATH=<результат предыдущего шага>
      >  export PATH

      tnx. Вот я лопухнулся ...
      Это у меня все результат бессоных ночей при скоростном запуске сервера FreeBSD в неизученной области применения :)

      Конечный работоспособный скрипт:

      #!/bin/sh
      PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/root/bin
      export PATH
      # Count Camer
      countcam=1
      # Init folder files video record
      initdir="/var/tmp/cam"
      # Folder output files
      outdir="/var/ftp/cam"
      # Temp file converting video stream
      outfileavi="/tmp/tempencode.avi"
      # Main code procedure converting:
      rm -f $outfileavi
      curcam=1
      while [ $curcam -le $countcam  ]
      do
        curdir=$initdir$curcam
        cd $curdir
        count=0
        for file in *
        do
          count=`expr $count + 1`
        done
        if [ $count -gt 1 ] ; then
        for file in *
        do
          count=`expr $count - 1`
          if [ $count -gt 0 ] ; then
            outfile7z=$outdir$curcam/$file".7z"
            /usr/local/bin/ffmpeg -i $file -y -an -s 640x480 -hq -b 512 -vcodec msmpeg4v2 $outfileavi && \
            /usr/local/bin/7z a -mx=7 -y -bd -p1972 $outfile7z $outfileavi && \
            /bin/rm -f $outfileavi && \
            /bin/rm $file
          fi
        done
        fi
      curcam=`expr $curcam + 1`
      done
      exit 0
            

      Теперь работает и из под cron ...

      Но также если кто то сможет оживить второй вариант решения этой задачи (через find ...), то было бы очень не плохо. Заместо целой программы можно было бы обойтись буквально одной строкой ...

      А так же, если кто знает, может ли ffmpeg использовать возможность многопроцессорных вычислений ?
      При отработке этого скрипта, через вывод top видно что 7z при архивации использует все 4 процессора, а ffmpeg при кодировании - только один ...




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру