そこで、新しく書き込まれたビデオ ファイルを取得し、サーバーでの再生とストリーミング用にトランスコードするための bash スクリプトを作成しました。スクリプトは次のとおりです。
while true; do
printf -v filename '%q' "$(inotifywait --format "%w""%f" -r -e close_write /var/$
echo $filename
if [[ $filename == *".mp4"* ]]; then
echo "1"
avconv -i "$filename" "`echo ${filename%.mp4}.webm`"
fi
if [[ $filename == *".mkv"* ]]; then
echo "2"
avconv -i "$filename" "`echo ${filename%.mkv}.mp4`"
avconv -i "$filename" "`echo ${filename%.mkv}.webm`"
fi
if [[ "$filename" == *".avi"* ]]
then echo "3"
avconv -i "$filename" "`echo ${filename%.avi}.mp4`" &
avconv -i "$filename" "`echo ${filename%.avi}.webm`"&
fi
done
スクリプトはかなりうまく機能しますが、$filename にスペースが含まれている場合、avconv が中断し、スクリプトは次のように戻ります。
Watches established.
/var/www/media2net/tv/The\ Daily.mkv
2
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav s
built on Nov 6 2012 16:51:33 with gcc 4.6.3
/var/www/media2net/tv/The\: No such file or directory
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav
built on Nov 6 2012 16:51:33 with gcc 4.6.3
/var/www/media2net/tv/The\ Daily.mkv: No such file or directory
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
ただし、上記のファイルをそれぞれのディレクトリ内で表示できるため、これは正しくありません。また、シェルで次のように avconv をテストしましたが、すべてが正常に動作し、avconv はビデオをトランスコードします
avconv -i /var/www/media2net/The\ Daily.mkv /var/www/media2net/tv/The\ Daily.webm
基本的に、スクリプトで何が間違っているのか、または他の誰かが avconv または ffmpeg を使用して同様の問題を経験したことがあるかどうか疑問に思っています (2 つはかなり似ており、avconv はプロジェクトの ubuntu のフォークであるため) どんな助けでも大歓迎です! 前もって感謝します-ブレンダン