Имам този bash скрипт за пакетно преобразуване на някои mp4 файлове:
#!/bin/bash
ls dr*.mp4 | grep -v -E "\.[^\.]+\." | sed "s/.mp4//g" | while read f
do
TARGET="$f.ffmpeg.mp4"
if ! [ -f $TARGET ]
then
echo $TARGET
ffmpeg -nostdin -i $f.mp4 -s 320x180 -vc h264 -acodec copy -f mp4 -y $TARGET
fi
TARGET="$f.ffmpeg.flv"
if ! [ -f $TARGET ]
then
echo $TARGET
ffmpeg -nostdin -i $f.mp4 -s 320x180 -acodec copy -y $TARGET
fi
TARGET="$f.jpg"
if ! [ -f $TARGET ]
then
echo $TARGET
ffmpeg -nostdin -i $f.ffmpeg.mp4 -ss 0 -vframes 1 -f image2 $TARGET
fi
TARGET="$f.ffmpeg.ogv"
if ! [ -f $TARGET ]
then
echo $TARGET
ffmpeg -nostdin -i $f.mp4 -s 320x176 -ar 11025 -acodec libvorbis -y $TARGET
fi
done
Той се изпълнява веднъж, но прави и преобразува името на входния файл в 4 различни формата, но не преминава към следващото име на входния файл. Опитах се да разбъркам реда на различните преобразувания, но въпреки това скриптът се изпълнява точно веднъж за едно име на файл. Опитах се да стартирам ffmpeg с флага -nostdin, но той казва
"Unrecognized option 'nostdin'"
Версията на ffmpeg е ffmpeg версия 0.10.6-6:0.10.6-0ubuntu0jon1~lucid2 - току-що актуализирам пакета ffmpeg от http://ppa.launchpad.net/jon-severinsson/ffmpeg/ubuntu и не може да намери по-нова версия. Базовата система е
Distributor ID: Ubuntu
Description: Ubuntu 10.04.1 LTS
Release: 10.04
Codename: lucid
ls dr*.mp4 | grep -v -E "\.[^\.]+\." | sed "s/.mp4//g"
? - person slhck   schedule 25.05.2013