Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
wiki:bashscript_ffmpeg [2011/07/19 13:03] [Примеры использования] |
wiki:bashscript_ffmpeg [2014/02/22 13:33] (текущий) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Bash-скрипт + FFmpeg ====== | ====== Bash-скрипт + FFmpeg ====== | ||
| - | Здравствуйте. Недавно возникла необходимость конвертирования видео/аудио файлов. Выбор пал на ffmpeg, потому что данная утилита имеет довольно широкие возможности + распространяется бесплатно. Стоит отметить, что ffmpeg следует собирать из исходников, поскольку версия в репозитории довольно стара и может не удовлетворить всех потребностей. Для тех кто еще не знает, что это такое ознакомьтесь с [[http://ru.wikipedia.org/wiki/FFmpeg|данной статьей]], а также с синтаксисом утилиты [[http://help.ubuntu.ru/wiki/ffmpeg|здесь]]. Мануалы по компиляции смотрите [[http://www.google.com/search?&q=сборка+ffmpeg+ubuntu+linux|здесь]]. Итак приступим. | + | Здравствуйте. Недавно возникла необходимость конвертирования видео/аудио файлов. Выбор пал на ffmpeg, потому что данная утилита имеет довольно широкие возможности + распространяется бесплатно. Стоит отметить, что ffmpeg следует собирать из исходников, поскольку версия в репозитории довольно стара и может не удовлетворить всех потребностей. Для тех кто еще не знает, что это такое ознакомьтесь с [[http://ru.wikipedia.org/wiki/FFmpeg|данной статьей]], а также с синтаксисом утилиты [[http://help.ubuntu.ru/wiki/ffmpeg|здесь]]. Мануалы по компиляции смотрите [[http://www.google.com/search?&q=сборка+ffmpeg+ubuntu+linux|здесь]] и [[https://trac.ffmpeg.org/wiki/UbuntuCompilationGuide|здесь]]. Итак приступим. |
| ===== Bash-скрипт ===== | ===== Bash-скрипт ===== | ||
| <code bash> | <code bash> | ||
| Строка 91: | Строка 91: | ||
| FileValidation "$1" | FileValidation "$1" | ||
| Message "" "$REDФайла $INPUT не существует!$ENDCOLOR" | Message "" "$REDФайла $INPUT не существует!$ENDCOLOR" | ||
| - | # Убираем слеш на конце | + | # Выделяем имя файла без расширения |
| - | INPUT="${1%*/}" | + | INPUT="${INPUT##*/}" |
| - | # Убираем расширение | + | OUTPUT="${INPUT%.*}" |
| - | INPUT="${INPUT%.*}" | + | |
| - | # Убираем начальную часть пути | + | |
| - | OUTPUT="${INPUT##/*/}" | + | |
| # Путь у файлу на выходе | # Путь у файлу на выходе | ||
| # Если нет слеша в конце пути, то добавим его | # Если нет слеша в конце пути, то добавим его | ||
| Строка 102: | Строка 99: | ||
| if [ $SLASH != / ]; then | if [ $SLASH != / ]; then | ||
| PATH_FILE="$2/" | PATH_FILE="$2/" | ||
| + | else | ||
| + | PATH_FILE="$2" | ||
| fi | fi | ||
| OUTPUT="$PATH_FILE$OUTPUT.$3" | OUTPUT="$PATH_FILE$OUTPUT.$3" | ||
| Строка 107: | Строка 106: | ||
| echo "ffmpeg -i" "$1" "$4" "$OUTPUT" | echo "ffmpeg -i" "$1" "$4" "$OUTPUT" | ||
| } | } | ||
| + | |||
| ################# Данные функции представлены в качестве примеров, Вы можете создать свой набор предустановок ################# | ################# Данные функции представлены в качестве примеров, Вы можете создать свой набор предустановок ################# | ||
| Строка 159: | Строка 159: | ||
| INPUT="$OPTARG" >> $LOG | INPUT="$OPTARG" >> $LOG | ||
| # Делаем выборку из предварительных настроек | # Делаем выборку из предварительных настроек | ||
| - | "$PARAM" "$INPUT" "$PATH_TO_OUT";; | + | "$PARAM" "$INPUT" "$PATH_TO_OUT" 2>>$LOG;; |
| f ) Empty "$PARAM" 2>> $LOG | f ) Empty "$PARAM" 2>> $LOG | ||
| Continue "$REDВы не указали preset!$ENDCOLOR" 2>> $LOG | Continue "$REDВы не указали preset!$ENDCOLOR" 2>> $LOG | ||
| Строка 171: | Строка 171: | ||
| for COUNT in *."$EXTENSION" | for COUNT in *."$EXTENSION" | ||
| do | do | ||
| - | "$PARAM" "$COUNT" "$PATH_TO_OUT" | + | "$PARAM" "$COUNT" "$PATH_TO_OUT" 2>>$LOG |
| done;; | done;; | ||
| p ) PATH_TO_OUT="$OPTARG" 2>> $LOG | p ) PATH_TO_OUT="$OPTARG" 2>> $LOG | ||
| Строка 182: | Строка 182: | ||
| Empty "$INPUT" 2>> $LOG | Empty "$INPUT" 2>> $LOG | ||
| Exit 1 "$REDВы не указали входной файл!$ENDCOLOR" 2>> $LOG | Exit 1 "$REDВы не указали входной файл!$ENDCOLOR" 2>> $LOG | ||
| + | echo -e $GREEN"------------------------------------------------------------------------------"$ENDCOLOR | ||
| + | cat $LOG | more | ||
| + | echo -e $GREEN"------------------------------------------------------------------------------"$ENDCOLOR | ||
| exit 0 | exit 0 | ||
| </code> | </code> | ||
| Строка 215: | Строка 218: | ||
| </code> | </code> | ||
| **Остановимся поподробнее на каждой опции:** | **Остановимся поподробнее на каждой опции:** | ||
| - | * **-p:** Каталог для конвертированных файлов. Если данный ключ отсутствует, то будет использована та папка, где находится исходный файл. Данную опцию следут указывать **до указания входного файла** | + | * **-p:** Каталог для конвертированных файлов. Если данный ключ отсутствует, то будет использована папка, где находится исходный файл. Данную опцию следут указывать **до указания входного файла** |
| * **-s:** Как конвертировать файлы. Опция является обязательной. Здесь указывается имя функции-настройки из скрипта. В данном случае **PSP** или **NokiaC3**. Данную опцию следут указывать **до указания входного файла** | * **-s:** Как конвертировать файлы. Опция является обязательной. Здесь указывается имя функции-настройки из скрипта. В данном случае **PSP** или **NokiaC3**. Данную опцию следут указывать **до указания входного файла** | ||
| * **-i:** Один файл для конвертирования. | * **-i:** Один файл для конвертирования. | ||
| Строка 233: | Строка 236: | ||
| * Третий параметр расширение выходного файла, а четвертый Ваши опции конвертирования | * Третий параметр расширение выходного файла, а четвертый Ваши опции конвертирования | ||
| ===== Примеры использования ===== | ===== Примеры использования ===== | ||
| - | * Будет переконвертирован один файл и помещен в ~/ | + | * Будет переконвертирован один файл и помещен в /home/citizen |
| <code>Convert -s PSP -p /home/citizen -i /home/rTorrent/example.avi</code> | <code>Convert -s PSP -p /home/citizen -i /home/rTorrent/example.avi</code> | ||
| - | * Будет переконвертированы файлы с одним расширением и помещены в ~/ | + | * Будет переконвертированы файлы с одним расширением и помещены в /home/citizen/Scrubs |
| <code>Convert -s PSP -p /home/citizen/Scrubs -f /home/rTorrent/Scrubs/example.avi</code> | <code>Convert -s PSP -p /home/citizen/Scrubs -f /home/rTorrent/Scrubs/example.avi</code> | ||
| * Аналогично двум командам выше | * Аналогично двум командам выше | ||
| <code>Convert -s PSP -p /home/citizen -i /home/rTorrent/example.avi -p /home/citizen/Scrubs/ -f /home/rTorrent/Scrubs/example.avi</code> | <code>Convert -s PSP -p /home/citizen -i /home/rTorrent/example.avi -p /home/citizen/Scrubs/ -f /home/rTorrent/Scrubs/example.avi</code> | ||
| - | {{tag>Скрипты Можно_улучшить, Кодирование_видео ffmpeg}} | + | {{tag>Скрипты Можно_улучшить Кодирование_видео ffmpeg}} |