Наши
Сайдбары
   
IRC-канал
Linuxportal.ru
   
Импорт новостей
 
Вход Быстрая регистрация На главную

Поиск:
 
   БИБЛИОТЕКА
     Другие статьи этого раздела:
 

    Multimedia
Другие разделы библиотеки:
   БИБЛИОТЕКА
     последние поступления:
 

Hardware
Перевод Serial-Programming-HOWTO
15.05.2006 | San АНДРЕЕВ
Перевод Linux Power Management Support
03.04.2004 | San АНДРЕЕВ
Варианты решения проблем со смещением геометрии монитора.
10.10.2003 | EsTaF
Multimedia
VideoCD для пингвинов
10.10.2003 | Buddha
Смотрим любимые фильмы с помощью MPlayer
23.07.2003 | Alexey Dmitriev
X-сервер
Включаем Bytecode Interpreter в пакете freetype в некоторых дистрибутивах
05.07.2006 | Alexey Dmitriev
НАСТРОЙКА СЕРВЕРА XDMCP ДЛЯ WINDOWS-КЛИЕНТОВ
09.09.2004 | Kotjara
Type1 и truetype шрифты в LaTeX.
03.05.2004 | geekkoo
Разное
Как самому написать концепцию информационной безопасности
22.03.2007 | Crion
Список рекомендуемой литературы
11.09.2006 | San АНДРЕЕВ
The Multi Router Traffic Grapher
02.06.2004 | Crion
Сеть
"Огненная стена" или строим файрвол на базе iptables
15.03.2005 | Alexey Dmitriev
Защищенная почтовая система
08.09.2004 | Crion
Postfix+Cyrus-SASL
18.12.2003 | geekkoo
Система
Написание драйверов под Linux: рекомендации, типичные ошибки и ловушки.
16.01.2007 | Mr.Nobody
Перевод Linux Daemon HOWTO
21.08.2006 | San АНДРЕЕВ
Усыпляем компьютер
11.01.2006 | San АНДРЕЕВ
   БИБЛИОТЕКА Multimedia    
Автор статьи: Buddha
Дата: 10.10.2003

VideoCD для пингвинов

Некоторым из нас, кого уже слегонца подпарило смотреть фильмы на маленьких 15 или 17 дюймовых экранах и хочется посмотреть фильму на любимом DVD или просто ЦД плаере, на большом (в моем случает 29" экране), но влом таскать комп или проводить кабель в другую комнату... Да и файлов у тебя скопилось, наверное уже немало... Неплохо было бы просто делать видео ЦД и составить свою видеотеку.

Итак приступим:

VCD - обычный видео сидюк с потоком MPEG-1 352x288, и битрейтом 1150kbps для видео и 224kbps для аудио. На сидюк поместится ровно столько сколько там написано минут (74 - 80)

SVCD - MPEG-2 стрим, 480х576. Битрейт до 2600kbps и для аудио от 34 до 384kbps. Обычно вмещается от 40 до 55 минут, в зависимости от битрейта.

XVCD, CVCD - модификации с различным битрейтом и могут не работать на некоторых DVD плаерах (на моем работает). Используя невысокий битрэйт можно запихнуть и до 90 минут на сидюк.

Нам понадобится: MPlayer, Transcode (http://theorie.physic.uni-goettingen.de/~ostreich/transcode), MJEG Tools (http://mjpeg.sourceforge.net), VCDImager (http://www.vcdimager.org), perl и калькулятор :)

Дальше я приведу скрипты, зачем ломать голову, если можно предоставить работу машине? Ну а потом просто запустить как Divx2VCD

Итак Divx2VCD - считает размер, добавляет поля, если нужно,короче переводит потом в стандарт VCD:

#!/bin/bash

DIR=`pwd`
TEMPFOLDER=/tmp/divx2vcd-$RANDOM
TEMP_TEMPLATE=/tmp/tcm-template-$RANDOM

# для 74 минут(650М) => CDSIZE=735
# для 80 минут(700М) => CDSIZE=795
# здесь тебе придется вручную, хотя и это, я думаю, можно
# автоматизировать

VIDEORATE=1150
AUDIORATE=224
if [ $# -eq 0 ]; then
echo "Usage:"
echo " divx2vcd "
exit 1
fi
FILE=$1
if [ "$1" == "`basename \"$l"`" ]; then
FILE="$DIR\$1"
fi

mkdir $TEMPFOLDER
cd $TEMPFOLDER
tcprobe -i "$FILE" > $TEMPFOLDER/info
WIDTH=`grep '\[avilib\] V:' $TEMPFOLDER/info | \ perl -e ' $line= ; $line = ~ /width=(\d+)/ ; print $1 `
HEIGHT=`grep '\[avilib\] V:' $TEMPFOLDER/info | \ perl -e ' $line= ; $line = ~ /height=(\d+)/ ; print $1 `
FPS=`grep '\[avilib\] V:' $TEMPFOLDER/info | \ perl -e ' $line= ; $line =~ /V: (.+?) fps/ ; print $1 `
FPS 1= `echo "scale=1 ; $FPS/1"| bc -l`
FRAMES=`grep '\[avilib\] V:' $TEMPFOLDER/info | \ perl -e ' $line= ; $line =~ /frames=(d+)/ ; print $1 `
SECONDS_TOTAL=`echo "scale=0 ; ($FRAMES / $FPS)"| bc -l' `
HOURS=`echo "scale=0 ; ($SECONDS_TOTAL / 3600)"| bc -l' `
MINUTES=`echo "scale=0 ; (($SECONDS_TOTAL - 3600 * $HOURS) / 60)"| bc -l' `
SECONDS=`echo "scale=0 ; ($SECONDS_TOTAL % 60)"| bc -l' `
echo "**************FILE INFO*******************"
echo "Frame Size: ${WIDTH}x${HEIGHT} - FPS: $FPS"
echo "Lenght: $FRAMES - Seconds: $SECONDS_TOTAL"
echo "$HOURS Hours, $MINUTES Minutes, $SECONDS Seconds"

if [ $FPS_1 == "29.9" -o $FPS_1 == "30" -o $FPS_1 == "23.9" ] ; then
WIDTH_OUT=352
HEIGHT_OUT=240
else
WIDTH_OUT=352
HEIGHT_OUT=288
fi

echo "Video output: ${WIDTH_OUT}x${HEIGHT_OUT}"

#А сейчас нужно посчитать размеры бордюров

B_WIDTH_1_1_OUT=`echo “($HEIGHT_OUT / ¾)”| bc –l`
B_HEIGHT_OUT=`echo “($HEIGHT / ($WIDTH / $B_HEIGHT_OUT))”| bc –l `

#выравниваем

B_HEIGHT_OUT=`echo “scale=0 ; $B_WIDTH_1_1_OUT/1)”| bc –l `

# теперь нужно удостоверится, что они парные

B_HEIGHT_OUT=`echo “scale=0 ; $B_HEIGHT_OUT+$B_HEIGHT_OUT%2” | bc –l `
BORDER=`echo “scale=0 ; ($HEIGHT_OUT-$B_HEIGHT_OUT)/2” | bc –l`
echo “Высота без бордура: $HEIGHT_OUT , с бордюром: $BORDER”

#стираем рабочие исходники

rm –F Movie.mlv Movie.mpa
cd $TEMPFOLDER

echo “transcode –i \”$FILE\” –V –x mplayer –y mpeg2enc , mp2enc \ -F l –Z ${WIDTH_OUT}x$B_HEIGHT-OUT –Y -$BORDER,0,-$BORDER,0 \ -export_asr 2 –E 44100 –b $AUDIORATE –o $DIR/Movie”

transcode –i “$FILE” –V –x mplayer –y mpeg2enc,mp2enc \ -F l –Z ${WIDTH_OUT}x$B_HEIGHT-OUT –Y -$BORDER,0,-$BORDER,0 \ -export_asr 2 –E 44100 –b $AUDIORATE –o $DIR/Movie
rm –rf $TEMPFOLDER
cd $DIR

[ -f Movie.mlv –a –f Movie.mpa ] || exit 1
rm –f Movie*.mpg
echo “maxFileSize = $CDSIZE” > $TEMP_TEMPLATE
tcmplex –i Movie.mlv –p Movie.mpa –o Movie.mpg \ -m 1 –F $TEMP_TEMPLATE
rm $TEMP_TEMPLATE

# и наконец создаем образы

for i in `ls Movie*.mpg ; do vcdimager –t vcd2 –c $i.bin
done

И таким образом нам создаст архивы VCD готовые для продигания.

Divx2CVCD: этот скрипт нам посчитает автоматически все опции и размеры avi файла так, чтобы он влез на балванку. Можно пробовать с различными значениями QUANTUM (от 2 до 31)(2 – наивысшее качество). Можно так же модифицировать AUDIORATE.

Весь скрипт я привожить не буду, поскольку он похож на предыдущий, просто покажу, где и что нужно вставить/изменить:

CDSIZE=795 #это место так же как и в предыдущем, а дальше меняем
QUANTUM=5
#MAXRATE=900 #в данном случае автоматически
AUDIORATE=128

Divx2SVCD: тот же скрипт. Можно менять CDSIZE, QUANTUM, MAXVIDEORATE и AUDIORATE.

CDSIZE=795
QUANTUM=7
MAXVIDEORATE=4000000
AUDIORATE=160

#дальше идет все тоже до
if [ $FPS ==”29.9” –o $FPS == “30” –o $FPS ==”23.9” ]; then

WIDHT_OUT=480
HEIGHT_OUT=480
MPEG_OPTIONS=s,3,$TEMPLATE
else
WIDTH_OUT=480
HEIGHT_OUT=576
MPEG_OPTIONS=s,3,$TEMPLATE

Субтитры:

Здесь все просто: нужно переименовать файл с субтитрами точно такий же именем как и файл avi и положить в ту же дирректорию.

Приятного посмотра!



Все статьи раздела "Multimedia"

©"Linuxportal.Ru". Материалы сайта можно
использовать свободно при условии
сохранения этой свободы при дальнейшем
распространении, если явно не указано иное

Дизайн и программирование:

Поставьте
нашу кнопку:
Получить код кнопки
Linux Portal.ru ::: Линукс Портал.ру
Наш партнер: