Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Последняя версия Следующая версия справа и слева | ||
wiki:bashscript_ffmpeg [2011/07/18 20:07] [Примеры использования] |
wiki:bashscript_ffmpeg [2013/10/19 12:43] [Примеры использования] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Вступление ====== | + | ====== Bash-скрипт + FFmpeg ====== |
- | Здраствуйте. Недавно возникла необходимость конвертирования видео/аудио файлов. Выбор пал на ffmpeg, потому что данная утилита имеет довольно широкие возможности + распространяется бесплатно. Стоит отметить, что ffmpeg следует собирать из исходников, поскольку версия в репозитории довольно стара и может не удовлетворить всех потребностей. Для тех кто еще не знает, что это такое ознакомьтесь с [[http://ru.wikipedia.org/wiki/FFmpeg|данной статьей]], а также с синтаксисом утилиты [[http://help.ubuntu.ru/wiki/ffmpeg|здесь]]. Мануалы по компиляции смотрите [[http://www.google.com/search?client=ubuntu&channel=fs&q=%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0+ffmpeg&ie=utf-8&oe=utf-8#pq=%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0%20ffmpeg&hl=en&cp=26&gs_id=17&xhr=t&q=%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0+ffmpeg+linux+ubuntu&pf=p&sclient=psy&client=ubuntu&hs=Lk&channel=fs&source=hp&pbx=1&oq=%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0+ffmpeg+linux+ubuntu&aq=f&aqi=&aql=&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.&fp=97eede9ed711c932&biw=1366&bih=595|здесь]]. Итак приступим. | + | Здравствуйте. Недавно возникла необходимость конвертирования видео/аудио файлов. Выбор пал на ffmpeg, потому что данная утилита имеет довольно широкие возможности + распространяется бесплатно. Стоит отметить, что ffmpeg следует собирать из исходников, поскольку версия в репозитории довольно стара и может не удовлетворить всех потребностей. Для тех кто еще не знает, что это такое ознакомьтесь с [[http://ru.wikipedia.org/wiki/FFmpeg|данной статьей]], а также с синтаксисом утилиты [[http://help.ubuntu.ru/wiki/ffmpeg|здесь]]. Мануалы по компиляции смотрите [[http://www.google.com/search?&q=сборка+ffmpeg+ubuntu+linux|здесь]]. Итак приступим. |
===== 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> | ||
- | Для того, чтобы запустить у себя скрипт достаточно: | + | **Для того, чтобы запустить у себя скрипт достаточно:** |
- | * Скопировать текст приведенный выше в Ваш любимый текстовый редактор | + | * Скопировать текст приведенный выше в Ваш любимый текстовый редактор |
- | * Сохранить файл с любым именем | + | * Сохранить файл с любым именем |
- | * Сделать файл исполняемым <code>chmod +x Путь_к_Вашему_файлу</code> | + | * Сделать файл исполняемым <code>chmod +x Путь_к_Вашему_файлу</code> |
- | * Отредактировать файл .bashrc добавив строку <code>alias Convert='Путь_к_Вашему_файлу'</code> | + | * Отредактировать файл .bashrc добавив строку <code>alias Convert='Путь_к_Вашему_файлу'</code> |
- | * Этой командой в консоли и будет вызываться скрипт<code>Convert</code> | + | * Этой командой в консоли и будет вызываться скрипт<code>Convert</code> |
===== Использование ===== | ===== Использование ===== | ||
Попробуйте ввести в консоли **Convert** и нажать <key>Enter</key>. Вы увидите справку по ключам скрипта: | Попробуйте ввести в консоли **Convert** и нажать <key>Enter</key>. Вы увидите справку по ключам скрипта: | ||
Строка 215: | Строка 218: | ||
</code> | </code> | ||
**Остановимся поподробнее на каждой опции:** | **Остановимся поподробнее на каждой опции:** | ||
- | * **-p:** Каталог для конвертированных файлов. Если данный ключ отсутствует, то будет использована та папка, где находится исходный файл. Данную опцию следут указывать **до указания входного файла** | + | * **-p:** Каталог для конвертированных файлов. Если данный ключ отсутствует, то будет использована папка, где находится исходный файл. Данную опцию следут указывать **до указания входного файла** |
* **-s:** Как конвертировать файлы. Опция является обязательной. Здесь указывается имя функции-настройки из скрипта. В данном случае **PSP** или **NokiaC3**. Данную опцию следут указывать **до указания входного файла** | * **-s:** Как конвертировать файлы. Опция является обязательной. Здесь указывается имя функции-настройки из скрипта. В данном случае **PSP** или **NokiaC3**. Данную опцию следут указывать **до указания входного файла** | ||
* **-i:** Один файл для конвертирования. | * **-i:** Один файл для конвертирования. | ||
Строка 231: | Строка 234: | ||
} | } | ||
</code> | </code> | ||
- | ==== Примеры использования ==== | + | * Третий параметр расширение выходного файла, а четвертый Ваши опции конвертирования |
- | * Будет переконвертирован один файл и помещен в ~/ | + | ===== Примеры использования ===== |
+ | * Будет переконвертирован один файл и помещен в /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}} |