вырезать фрагмент видеофайла в nautilus

May 14, 2013 21:14


Сценарий вырезает фрагмент видео из выделенного файла.
В скрипте используется приложение mencoder и zenity, которые должны быть установлены.
текст скрипта:


#!/bin/bash
#
# Сценарий вырезает фрагмет из видео
# Для работы скрипта необходимо установленное приложение Mencoder и zenity
# Данный скрипт необходимо расположить в ~/.gnome2/nautilus-scripts и сделать его исполнимым
# после этого сценарий станет доступен через контекстное меню GNOME в разделе "Сценарии".
#

IFS=$'\t\n';

# Проверка наличия приложений
if ! [[ -a `which mencoder` ]]; then
zenity --error --text="Не установлен Mencoder\!\nУстанови указанное приложение и повтори попытку\!";
exit 0;
fi

outtype="";
fileselect="";
file="";
outfile="";

# Если ни один файл не выбран то сразу выходим из программы
if [[ $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS == "" ]];
then
zenity --info --text="Ничего не выбрано\!\nРабота закончена\!";
exit 0;
else

# Выбор каталога для сохранения
save_dir=$(zenity --file-selection --directory --title="Где сохраняем?");

if [[ "$?" != 0 ]]
then
zenity --warning --text="Каталог для сохраниния не выбран!\n\nРабота скрипта прекращена!"
exit 0;
fi

if [[ "$save_dir" == "" ]]; then
save_dir=`pwd`;
fi

# Ввод имени для обрезанного файла

name_fragm=$(zenity --entry --title="Ввод имени" --text="Введи имя файла фрагмента без расширения");

if [ "$?" = 1 ] ; then
zenity --error --title="Предупреждение" --text="Выполнение отменено\!" ;
exit 0 ;
fi

if [[ "$name_fragm" == "" ]]; then
zenity --error --text="Имя фрагмента не может быть пустым\!\nПовтори попытку\!";
exit 0;
fi

# Ввод начала и конца фрагмента
begin_time=$(zenity --entry --title="Ввод начала" --text="Введи время начала фрагмента\nв формате чч:мм:сс");

if [ "$?" = 1 ] ; then
zenity --error --title="Предупреждение" --text="Выполнение отменено\!" ;
exit 0 ;
fi

if [[ "$begin_time" == "" ]]; then
begin_time="00:00:00";
fi

end_time=$(zenity --entry --title="Ввод конца" --text="Введи время конца фрагмента\nв формате чч:мм:сс");

if [ "$?" = 1 ] ; then
zenity --error --title="Предупреждение" --text="Выполнение отменено\!" ;
exit 0 ;
fi

if [[ "$end_time" == "" ]]; then
end_time="00:00:00";
fi

if [[ "$begin_time" == "$end_time" ]]; then
zenity --error --text="Время начала фрагмента совпадает со временем конца фрагмента\!\nСценарий работу завершил\!";
exit 0;
fi

# Цикл конвертирования выделенных файлов
for fileselect in `echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"`
do

if [[ `file -i $fileselect` == *video* ]]; then

# Формируем новое имя файла
base=`basename $fileselect`;

file=$save_dir/$name_fragm.${base##*.};

next=0; # Это для формирования имени файла если совпало (новый файл - счёт с нуля)

nextfile=$file;
while [ -e $nextfile ]
do
next=$(echo "$next + 1" | bc) # это счётчик
nextfile=${file%%.*}-$next.${file##*.}; # это формирование нового имени с учётом счётчика
done

file=$nextfile;

# Запускаем mencoder

mencoder -ovc copy -oac copy -ss $begin_time -endpos $end_time -o $file $fileselect 2>&1 | zenity --width 500 --title \
"Mencoder - Видео конвертер" --text "Вырезаю: `basename $fileselect`" \
--progress --pulsate --auto-close
fi
done
zenity --info --text="Готово!";

fi

exit 0;

http://g-scripts.sourceforge.net/
http://www.sakryukin.ru//?module=filesdb&id=2&fid=28
http://www.sakryukin.ru//?module=filesdb&id=2

команды, утилита, config, editor, linux, консоль, ffmpeg, video

Previous post Next post
Up