The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Скрипт для кодирования видео с помощью Mencoder
Ниже скрипт, который делает двухпроходное видео.

Как пользовать:

Для начала скатываем фильм с DVD

   mencoder dvd:// -oac copy -ovc copy -o name.vob

Заметьте, что имя файла имеет разширение vob (маленькими буквами), 
скрипт сам переделает его потом в avi. 2. Считаем переменную CROP вот так:

   mplayer -vf cropdetect name.vob

Должны появиться строки что-то вроде этого

   crop area: X: 10..711  Y: 73..497  (-vf crop=688:416:18:78).6% 0 0              
   crop area: X: 10..711  Y: 73..497  (-vf crop=688:416:18:78).6% 0 0              
   crop area: X: 10..711  Y: 73..497  (-vf crop=688:416:18:78).6% 0 0              

В данном случае нас интересует "688:416:18:78", именно это и ставим в значение переменной 
ТОЛЬКО ОБЯЗАТЕЛЬНО ПРОВЕРЬТЕ ПРАВИЛЬНО ЛИ ПОЛУЧЕНЫ ЗНАЧЕНИЯ. 
Иногда mencoder ошибается. Поправте значение ABITRATE (битрейт аудио потока) если нужно. 

Далее запускаем:

   ./coder -a

Это заставит mencoder выдать битрейт для видео. 
После того как поправили значение VBITRATE (битрейт видео потока), запускаем

   ./coder

Текст скрипта:

#!/bin/sh

IN_FILE="`ls -1|grep *.vob`"
OUT_FILE="`echo ${IN_FILE}|sed s/vob/avi/`"
VBITRATE=""
ABITRATE="128"
CROP=""
ASPECT=""
EQ="eq=0:0"
XY="640"
PASS1="pass=1"
PASS2="pass=2"
PP="pp=hb/vb/dr/ci"
#/al - авто яркость
OVC="-ovc xvid -xvidencopts bitrate=${VBITRATE}:vhq=4"
OAC="-oac mp3lame -lameopts br=${ABITRATE}:vbr=3 -alang ru"
CODER="mencoder"
VFILTER="${ASPECT} -vf ${EQ},${PP},crop=${CROP},scale -zoom -xy ${XY} -ofps 24"
AFILTER="-af volnorm,volume=0:1"
MAIL="stress@stress.volot.net"
WD="${PWD}"
DATA="`date`"
clean ()
{
    rm -fr frameno.avi
}

audio_convert ()
{ 
    clean;
    ${CODER} ${IN_FILE} \
	-ovc frameno \
	${OAC} \
	${AFILTER} \
	${VFILTER} \
	-o /dev/null
    clean;
}
 
video_convert ()
{
    clean
    if [ -z "${VBITRATE}" ]
	then
	{
	    echo "Битрейт видео потока не установлен!"
	}
    fi
    
    if [ "${1}" != "d" ] 
	then 
	{
	    OUT_FILE_1="/dev/null"
	}
	else 
	{
	    OUT_FILE_1="${OUT_FILE}" 
	}
    fi
    
    nice -n 19 ${CODER} ${IN_FILE} \
	${OVC}:${PASS1} \
	-oac copy \
	${VFILTER} \
	-o ${OUT_FILE_1} && \
    nice -n 19 ${CODER} ${IN_FILE} \
	${OVC}:${PASS2} \
	${OAC} \
	${AFILTER} \
	${VFILTER} \
	-o ${OUT_FILE}
}

#send_mail [a,v]
#a - аудио обработка; v - видео обработка
send_mail ()
{
    MSG="/tmp/coder"
    A="аудио"
    V="видео"
    
    if [ $1 = "a" ]
	then
	{
	    WORK=${A}
	}
    fi
    if [ $1 = "v" ]
	then
	{
	    WORK=${V}
	}
    fi
    

    echo "" >> ${MSG}
    echo "Закончена ${WORK} обратотка файла"  >> ${MSG}
    echo "Директория ${WD}" >> ${MSG}
    echo "Входящий файл ${IN_FILE}" >> ${MSG}
    echo "Исходящий файл ${OUT_FILE}" >> ${MSG}
    echo "Обработка файла начата ${DATA}"
    echo "Обработка закончена `date`"
    cat $MSG | mail -s "coder in ${WD}" ${MAIL} \
        -a "Content-Type: text/plain; charset=\"koi8-r\"" -a "Content-Transfer-Encoding: 7bit"
    rm -f ${MSG}
}

if [ "${1}" = "-a" ]
    then
    {
	audio_convert && \
	send_mail a
    }
fi
if [ "${1}" = "-d" ]
    then
    {
        video_convert d && \
	send_mail v

    }
fi

if [ "${1}" = "" ]
    then
    {
        video_convert && \
	send_mail v

    }
    
fi
 
03.04.2006
Ключи: mplayer, mencoder, video / Лицензия: CC-BY
Раздел:    Корень / Пользователю / Обработка изображений и видео

Обсуждение [ RSS ]
  • 1.1, Vs (??), 10:08, 05/04/2006 [ответить]  
  • +/
    непонятно, нахреня надо копировать диск на винт (типа, дуром свободного места?), да и вообще я больше привык без скриптов. Что там скриптовать-то? ;)
     
  • 1.2, Глобалист (?), 10:32, 05/04/2006 [ответить]  
  • +/
    Поправьте, опечатку "Ниже скрипт, который делает двухпроходное вид_е_о"

    2 Vs: когда цифруем с винта, а не с DVD скорость прилично увелииться может.

     
  • 1.3, Глобалист (?), 10:34, 05/04/2006 [ответить]  
  • +/
    s/цифруем/транскодируем/
    :-)
     
  • 1.4, StreSS (?), 13:09, 05/04/2006 [ответить]  
  • +/
    2 VS мне диски принося и тутуже забируют
    И меня ломает каждый раз писать в консоли.
    А тогда нафига нужен вообще шелл :)
     
  • 1.5, petr999 (ok), 15:30, 28/06/2006 [ответить]  
  • +/
    помогите мне пожалуйста! скажите, с такими настройками на каком языке сохранится звук и титры, если они на нескольких языках? хочется двухслойный лицензионный двд сбекапить с отключаемыми субтитрами, а получается фигня какая-то...  может, этим скриптом можно сразу все языки скопировать?
     
     
  • 2.6, blzz (?), 18:10, 20/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    -alang ru  звук
    -slang ru  сабы
    привычно звук бывает на en/ru
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру