Bash-скрипт + FFmpeg Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:bashscript_ffmpeg [2011/07/18 20:09]
[Примеры использования]
wiki:bashscript_ffmpeg [2014/02/22 13:33] (текущий)
Строка 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|здесь]] и [[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>​
  
-Для того, чтобы запустить у себя скрипт достаточно:​ +**Для того, чтобы запустить у себя скрипт достаточно:​** 
-* Скопировать текст приведенный выше в Ваш любимый текстовый редактор +  * Скопировать текст приведенный выше в Ваш любимый текстовый редактор 
-* Сохранить файл с любым именем +  * Сохранить файл с любым именем 
-* Сделать файл исполняемым <​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}}