Тут
уже был скрипт конвертирования видео на Perl, я пользуюсь своим вариантом на Bash. Немного быдлокода included.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#!/bin/bash
mencoder="-ovc xvid -xvidencopts bitrate=384 -vf scale=320:240 -oac mp3lame -subcp enca:ru:cp1251"
if < "$#" \> "1" >; then
cd "$1"
convertf="$2"
else
cd ~/"Видео"
convertf="$HOME/converted"
fi
find -iname "*.avi" -o -iname "*.mkv" -o -iname "*.mp4" -o -iname "*.ogv" -o -iname "*.ogm" -o -iname "*.flv" -o -iname "*.wmv" -o -iname "*.mov" -o -iname "*.m4v"| while read input_file; do
base_file="$(basename "$input_file")"
echo "$base_file"
notify-send "Начато конвертирование" "$base_file" -i video
play -q "$HOME/.say/Начато конвертирование.wav"
mencoder "$input_file" $mencoder -o "$convertf/${base_file%.*}.avi" -sub "${input_file%.*}.srt"
if < "$?" == "0" >; then
rm "$input_file"
rm "${input_file%.*}.srt"
notify-send "Видео сконвертировано" "$base_file" -i video
else
notify-send "Ошибка конвертирования" "$base_file" -i error
play -q "$HOME/.say/Ошибка конвертирования.wav"
fi
done
find -depth -type d -empty -exec rmdir {} \;
notify-send "Конвертирование завершено" -i video
play -q "$HOME/.say/Конвертирование завершено.wav"
|
Принимает параметры ./convert.sh где_искать куда_кидать.
Скрипт ищет все видеофайлы в заданной директории, отдает их mencoder'у, пробуя подсунуть ему str-сабы с таким же именем.
Затем удаляет исходное видео, сабы и пустые директории.
Wav-файлы сгенерены фестивалем, подумал лучше хранить их на диске, чем каждый раз дергать фестиваль.
Требует: mencoder (то, чем собственно все конвертится), libnotify-bin (для нотификаций, sox (для воспроизведения wav).
Скачать скрипт аудиофайлы.