Для начала ссылка на некоторые ресурсы (присылайте ссылки и мы их включим):
Подробная документация по Mplayer
Хорошо написано о многих опциях кодеков xvid и lavc в mencoder'е
FAQ из которого, в частности, можно узнать, как заставить работать DVD Shrink через wine
Для тех, у кого в системе есть /etc/sysctl.conf:
/etc/sysctl.conf:
dev/rtc/max-user-freq=1024
Для остальных:
/etc/rc.local:
echo 1024 > /proc/sys/dev/rtc/max-user-freq
user@linux$ man mplayer
на предмет опции stop-xscreensaver.
Если у вас просто mplayer, без графического интерфейса, берем ваш файл конфигурации ~/.mplayer/config и пишем в нем строчку
~/.mplayer/config:
stop-xscreensaver = 1
Для gmplayer мы пропишем строчку
~/.mplayer/gui.conf:
stop-xscreensaver = "yes"
Это можно сделать и средствами интерфейса.
Из командной строки можно добавить ключ -stop-xscreensaver
Важно: В руководстве ключ назван неверно -stop_xscreensaver (с подчеркиванием вместо тире).
Формируется примерно такой файлик:
#!/bin/bash
DATE="`date +%H%M%d`"
PH=/mnt/dos/dvd/tv
mplayer tv://14 -tv device=/dev/video0:driver=v4l2:width=512:height=384:forcechan=1:normid=2:channels=R7-Culture,R10-Stolica,R6-Sport,R9-TVC,SR2-M1,SR4-TNT,SR3-MTV,SR12-MuzTv,R2-NTV,SR5-STS,R4-RTR,R12-ORT - vo sdl -fs -ao alsa -quiet
Для ядра 2.4 и ранних 2.6:
#!/bin/sh
DATE="`date +%H%M%d`"
nice -n 0 mencoder tv:// -tv driver=v4l:width=384:height=288:norm=SECAM: \
brightness=10:contrast=-20:hue=-70:saturation=-60: \
audiorate=22050:alsa:forcechan=1:adevice=hw.0: \
buffersize=32:fps=22 -ovc lavc -lavcopts vcodec=mpeg4: \
vbitrate=2100:vme=5:vqscale=3:vb_strategy=1: \
keyint=300 -oac pcm -o "output-"$DATE".avi"
Для ядер 2.6.6 и выше:
!/bin/sh
DATE="`date +%H%M%d`"
PH=/mnt/dos/dvd/tv
mencoder -tv driver=v4l2:width=512:height=384:device=/dev/video0:\
norm=SECAM:buffersize=128:fps=24:brightness=10:contrast=-20:hue=-70:\
saturation=-60:\
audiorate=22050:alsa:forcechan=1 \
-oac pcm \
tv:// \
-o $PH/$DATE".avi" \
-ovc lavc -lavcopts \
vcodec=mpeg4:vbitrate=1200:vme=4:vqscale=3:vb_strategy=1:keyint=300 \
-vf pp=lb
Первая строчка для Celeron 500, вторая для PIII-966. Подбирайте свои значения. Название файла формируется, используя время.Кодируем в MPlayer 1.0pre5. Параметр "on" больше не используется.
Важно что - указать во что кодируем и каким кодеком что для видео, что для аудио.
Аудио лучше пускать в pcm, это написано еще в рассылках MPlayer, а потом уже пережать такой строчкой:
#!/bin/sh
mencoder -ovc copy -oac mp3lame -lameopts aq=0:ratio=100 pcm_file.avi -o your_ready.avi
Если хочется почистить картинку от помех, это можно сделать примерно так:
#!/bin/sh
nice -n 15 mencoder -ovc lavc -lavcopts vcodec=mpeg4:vme=4:vbitrate=1800: \
keyint=300 -oac copy -vf scale=640:480,pp=hb/vb/dr/al/lb,hqdn3d,lavcdeint,eq=05: \
10 /mnt/dos/part2.avi -o ready2.avi
Естественно, можно и совместить. Читайте о постпроцессинге.
Есть еще момент - многие жалуются, что несмотря на сильные машины (piv 2600, например) через некоторое время идет framedrop. Лично я (jackill) боролся с этим, указав число кадров, получаемых с тюнера (опция fps, на более мощной машине можно поставить больше) и можно жестко задать буфер (чем больше разрешение, тем больше буфер), чтобы вся память не забилась (если будет framedrop при динамическом буфере, то сначала кончится память, затем пойдет framedrop). В рассылке говорили, что звук лучше забирать в pcm (мол, lame тоже может стать причиной сбоя).
Тем не менее при битрейте в 900 я записывал звук в mp3, получая меньшую нагрузку на винт и на процессор. Более того, за четыре часа у меня не было ни одной рассинхронизации звука или видео, а так же не заканчивалась память (правда у меня 640Мб RAM):
#!/bin/sh
DATE="`date +%H%M%d`"
PH=/mnt/dos/dvd/tv
mencoder -tv driver=v4l2:width=512:height=384:device=/dev/video0:\
normid=2:buffersize=128:fps=22:brightness=10:contrast=-20:hue=-70:\
saturation=-60:\
audiorate=22050:alsa:forcechan=1 \
-oac mp3lame -lameopts vbr=0:br=32:aq=9:mode=3 -o mult5.avi \
tv:// \
-o $PH/$DATE".avi" \
-ovc lavc -lavcopts \
vcodec=mpeg4:vbitrate=900:vme=4:vqscale=3:vb_strategy=1:keyint=300 \
-vf pp=lb
Другой канал нельзя - приемник-то один. А смотреть и писать теперь можно, если воспользоваться программой xdtv (весьма удобная и быстрая, но иногда валится через пару часов использования, вешая систему намертво).
http://xawdecode.sourceforge.net/htmlpageUS/indexUS.shtml
Запускаем alsamixer
и в нем снимаем, если есть, mute с канала Line (клавиша m), далее ставим capture на каналы Line и Capture (клавиша пробел).
Воспользоваться утилитой amixer. Регулятор Line называется line. Регулятор Capture называется cap.
При настроенном X-сервере - легко:
user@linux# alias mplayertv='export DISPLAY=:0.1 & qut;" mplayer -fs'
О настройках карточек nvidia через TwinView читайте в документации nvidia, если нужны более хитрые настройки, читайте здесь. О настройке карт ATI читайте здесь.
A: Например, так. Приведены только интересующие нас разделы /etc/X11/xorg.conf (ранее /etc/X11/XF86Config)
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Monitor" 0 0
Screen 1 "TVout" RightOf "Monitor"
InputDevice "Mouse1" "CorePointer"
InputDevice "Keyboard1" "CoreKeyboard"
EndSection
Section "Monitor"
Identifier "CRTmonitor"
ModelName "LG 795FT"
HorizSync 30.0 - 96.0
VertRefresh 50.0 - 160.0
EndSection
Section "Monitor"
Identifier "HomeTV"
ModelName "TVset"
HorizSync 30.0 - 50.0
VertRefresh 50.0 - 60.0
EndSection
Section "Device"
Identifier "NVGF4-1"
Driver "nvidia"
BoardName "Ti4800-VDT8X (MS-8900)"
VideoRam 131072
Option "NvAGP" "3"
Option "NoLogo" "1"
Option "RenderAccel" "1"
Option "TwinView" "1"
Option "DPMS" ""
BusID "PCI:1:0:0"
EndSection
Section "Device"
Identifer "NVGF4-2"
Driver "nvidia"
BoardName "Ti4800-VDT8X (MS-8900)"
VideoRam 131072
Option "NvAGP" "3"
Option "NoLogo" "1"
Option "RenderAccel" "1"
Option "TVOutFormat" "COMPOSITE"
Option "ConnectedMonitor" "TV"
Option "TVStandard" "NTSC-M"
BusID "PCI:1:0:0"
Screen 1
EndSection
Section "Screen"
Identifier "Monitor"
Device "NVGF4-1"
Monitor "CRTmonitor"
DefaultDepth 16
SubSection "Display"
Depth 8
Modes "1600x1200" "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1600x1200" "1400x1050" "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1600x1200" "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
Section "Screen"
Identifier "TVout"
Device "NVGF4-2"
Monitor "HomeTV"
DefaultDepth 16
SubSection "Display"
Depth 8
Modes "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "800x600" "640x480"
EndSubSection
EndSection
Еще вариант, без TwinView.
#monitor
Section "Device"
Identifier "nvidia0"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "NvAGP" "1"
Option "NoLogo" "true"
Option "RenderAccel" "true"
Option "CursorShadow" "true"
Option "IgnoreEDID" "true"
Option "IgnoreDisplayDevices" "DFP"
Option "ConnectedMonitor" "CRT"
Screen 0
EndSection
#TV
Section "Device"
Identifier "nvidia1"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "NvAGP" "1"
Option "NoLogo" "true"
Option "RenderAccel" "true"
Option "CursorShadow" "true"
Option "IgnoreEDID" "true"
Option "IgnoreDisplayDevices" "DFP"
Option "ConnectedMonitor" "TV"
Option "TVStandard" "PAL-B"
Option "TVOutFormat" "COMPOSITE"
Screen 1
EndSection
#Monitor description
Section "Monitor"
Identifier "monitor"
HorizSync 30-96
VertRefresh 50-160
Option "DPMS"
EndSection
#TV description
Section "Monitor"
Identifier "tv"
HorizSync 30-50
VertRefresh 60
EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen "screen0"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
EndSection
Section "ServerLayout"
Identifier "crt-tv"
Screen "screen0"
Screen "screen1" RightOf "screen0"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
EndSection
Не забудьте прописать разрешения на оба устройства.
Когда нужен телевизор:
user@localhost$ startx -- -layout ctr-tv
Команда вывода кино на телевизор:
user@localhost$ DISPLAY=:0.1 mplayer -fs файл
DiMoN отвечает:
Список того, какой вывод поддерживается:
user@linux# mplayer film.avi -vo help
Лучшие варианты:
user@linux# mplayer film.avi -vo xv -fs
user@linux# mplayer film.avi -vo xvidix -fs
Когда-то через SDL добился нормального воспроизведения на Celeron333/64Mb/S3Trio64V+:
user@linux# mplayer film.avi -vo sdl -fs
C остальными могут быть проблемы по скорости воспроизведения:
user@linux# mplayer film.avi -vo gl2 -fs
user@linux# mplayer film.avi -vo gl -fs
user@linux# mplayer film.avi -vo dga -fs
Консольные варианты:
user@linux# mplayer film.avi -vo vesa -fs
user@linux# mplayer film.avi -vo svga -fs
user@linux# mplayer film.avi -vo vidix -fs
user@linux# mplayer film.avi -vo cvidix -fs
Текстовыми символами:
user@linux# mplayer film.avi -vo aa -fs
На худой конец так (тормоза + потеря кадров):
user@linux# mplayer film.avi -vo x11 -fs -zoom -framedrop -hardframedrop
Это проявляется на определенных картах. Попробуйте поменять битность цвета. Должно сработать.
1. Не надо монтировать диск.
2. mplayer -vcd://номер_трека [остальные ключи].
Можно воспользоваться либо грабберами или программами для записи компакт-дисков с поддержкой таких функций.
user@linux:~$ mpg123 --cdr file.cdr file.mp3
user@linux:~$ cdrecord -v speed=4 dev=0,0,0 -pad -audio *.cdr
Для группы файлов:
user@linux:~$ find . -name "*.mp3" -exec mpg123 --cdr {}.cdr {} \;
Если полученный wav файл не в формате "16 bit, stereo, 44100 Hz" (проверить можно: "file file.wav", обычно mpg123 осуществляет преобразование автоматически):
user@linux:~$ mpg123 -w file.wav file.mp3
user@linux:~$ sox file.wav -r 44100 file_new.wav
Для нормализации громкости удобно использовать:
normalize -m *.wav
Можно воспользоваться этим скриптом (автор мне, увы, неизвестен):
#!/bin/bash
rm -v track*.wav
disc-cover -e -o tracks -t txt &&
mv tracks.txt tracks.cddb &&
disc-cover -o cover -t ps &&
ARTIST=`cat tracks.cddb | grep -E '^Artist\:'| gawk -F\: '{print $2}' | sed -e's/^ *//' -e's/ *$//'`
ALBUM=`cat tracks.cddb | grep -E '^Title\:'| gawk -F\: '{print $2}' | sed -e's/^ *//' -e's/ *$//'`
echo "$ARTIST/$ALBUM"
#echo $ALBUM
mkdir -p "$ARTIST/$ALBUM"
cdparanoia -sQ 2>&1 | tee toc &&
cdparanoia -w -z5 -B 2>&1 | tee cdparanoia.log || exit
#grep -E '^( )+([0-9])+\.' toc | gawk -F. '{print $1}'
for i in track*.cdda.wav; do
num=`echo $i | sed -e's/^track\([0-9]*\)\.cdda\.wav/\1/'`
#echo -n $num " - "
num1=`echo $num | sed -e's/^0//'`
#echo $num1
title=`grep -E "^([0])*$num1\ " tracks.cddb | \
gawk 'BEGIN {ORS=" "} {for(n=2;n<NF-1;n++) print $n;}' | sed -e's/^ *//' -e's/ *$//'`
#echo $title
nice oggenc -b 192 -N $num -a "$ARTIST" -l "$ALBUM" -t "$title" -n "$ARTIST/$ALBUM/$num - %t.ogg" $i || exit
#mv -v $i $ii
done;
Пользователи KDE скорее всего записывают диски программой k3b, поэтому могут воспользоваться ею. Очень удобно.
Многие пользуются программой xcdroast. Поскольку интерфейс слегка запутан, пара слов о процессе. В каталог для cd-образов копируются wav, сделанные из mp3. Далее делаем "Создать диск" -> "Записать дорожки". В закладке "Раскладка дорожек в правом окне выделяем все wav-файлы и нажимаем кнопку "Добавить". Переходим в закладку "Записать дорожки" и нажимаем на кнопку "Записать дорожки".
Примечание: в старой локализации xcdroast дорожки называются треками.
Также, можно чудесно записать все из консоли
user@linux:~$ cdrecord -audio -pad -dev=0,0,0 1.wav 2.wav 3.wav
Подробнее смотрите man cdrecord
.
Можно попробовать графическую утилиту (и она вам пригодится для создания менюшек и т.п.) под названием QDVDAuthor.
Можно прочитать вот эту статью или же сделать все скриптами как показано ниже.
Алгоритм кодирования в dvd такой:
Все прочитали? Можно автоматизировать процесс с помощью mkdvd. Или скрипта Obidos'а:
1-й случай. PAL (в исходном avi 25fps).
#!/bin/sh
mkdir tmp
ORIG=tmp/`basename $1 .avi`
echo "Doing transcode..."
transcode -i $1 -V -y mpeg2enc,mp2enc -F "5,-S 800" -E 44100 -b 128 -o $ORIG -Z 480x576
echo "Doing mplex..."
mplex -f 4 -S 800 -o $ORIG%d.mpg $ORIG.m2v $ORIG.mpa
2-й случай. NTSC (в исходном avi 29.97fps либо 23.976fps).
#!/bin/sh
mkdir tmp
ORIG=tmp/`basename $1 .avi`
echo "Doing transcode..."
transcode -i $1 -V -y mpeg2enc,mp2enc -F "5,-S 800" -E 44100 -b 128 -o $ORIG -j -92 -Z 480x480
echo "Doing mplex..."
mplex -f 4 -S 800 -o $ORIG%d.mpg $ORIG.m2v $ORIG.mpa
#end
3. Скрипт сборки образа диска для прожига
#!/bin/sh
TITLE=`basename $1 .mpg`
echo "Doing VCDImager..."
vcdimager -p -t svcd -b $TITLE.bin -c $TITLE.cue $@
4. Скрипт прожига
#!/bin/sh
# первый параметр -- имя .cue-файла, второй -- скорость.
cdrdao write -v 2 --speed $2 $1
Замечания.
Где взять: mkdvd http://fredrik.hubbe.net/hacks/ mjpegtools http://mjpeg.sourceforge.net/ dvdauthor http://dvdauthor.sourceforge.net mencoder http://www.mplayerhq.hu transcode http://www.transcoding.org/cgi-bin/transcode
Дополнительное инфо по сборке DVD и редактированию видео с помощью kino: http://www.linuxmafia.com/faq/Apps/AV/consumer-video-to-dvd.html
Дополнительное инфо по правам файловой структуры на получаемом DVD: http://dvd.chevelless230.com/
Дополнительное инфо о том, как писать: http://www.freesoftware.fsf.org/dvdrtools/
Взято отсюда. Автор Vladimir Kurtukov. Переписано в FAQ, дабы не потерялось.
Hеобходимые программы: 1. dvdauthor, dvdunauthor - http://dvdauthor.sourceforge.net/
2. mplex mjpegtools не ниже 1.6.2 - http://mjpeg.sourceforge.net/
3. extract_mpeg2 libmpeg2 - http://libmpeg2.sourceforge.net/
4. extract_a52 liba52 - http://liba52.sourceforge.net/
5. tcprobe - http://www.transcoding.org/cgi-bin/transcode
6. M2VRequantizer - http://metakine.com/files/M2VRequantiser.tgz
7. growisofs, mkisofs
Сам процесс:
1. dvdunauthor
-ом делаем с dvd проект. он его делает не совсем
правильно и надо либо выкинуть vmgm и menus секции, либо как-то
дописать недостающее. для компьютерных dvd можно выкинуть.
2. Надо посмотреть, что собой представляет vob.
# tcprobe -i vob_01_001t.vob
[tcprobe] MPEG program stream (PS)
[tcprobe] summary for vob_01_001t.vob, (*) = not default, 0 = not detected
import frame size: -g 720x576 [720x576]
aspect ratio: 16:9 (*)
frame rate: -f 25.000 [25.000] frc=3
PTS=0.2873, frame_time=40 ms, bitrate=9800 kbps
audio track: -a 1 [0] -e 48000,16,2 [48000,16,2] -n 0x2000 [0x2000]
PTS=0.2873, bitrate=384 kbps
detected (2) subtitle(s)
3. затем большой vob расчленяем на video и audio потоки
extract_mpeg2 <vob_01_001t.vob >vob_01_001t.m2v
extract_a52 -s 1 <vob_01_001t.vob >vob_01_001t.ac3
В ключик -s подставить номер нужной дорожки, см. -a в выводе tcprobe
Проверить, какая же именно дорожка нам нужна, можно задав
mplayer
-у ключик -aid 128+<номер нужной дорожки>
4. Берем софтину M2VRequantizer
.
user@localhost~ $ ls -l vob_01_001t.m2v
-rw-r--r-- 1 root wheel 1833868872 Mar 5 22:58 vob_01_001t.m2v
# ./M2VReqiantizer 1.2 3 1833868872 <vob_01_001t.m2v >vob_01_001t-out.m2v
M2VRequantiser by Makira.
Using 1.200000 as factor, 1833868872 as m2v size.
factor
- число, во сколько раз будет уменьшен размер файла
user@localhost~ $ ls -l vob_01_001t-out.m2v
-rw-r--r-- 1 root wheel 1525283645 Mar 5 23:36 vob_01_001t-out.m2v
5. Собираем обратно vob.
user@localhost~ $ mplex -f 8 -o vob_01_001t.vob vob_01_001t-out.m2v vob_01_001t.ac3
где -f 8
- формат DVD
6. Остается запустить dvdauthor
.
# dvdauthor -o dvd -x dvdauthor.xml
# dvdauthor -T -o dvd
и в каталоге dvd будет результат
7. Запись на болванку.
user@localhost~ $ growisofs -Z /dev/cd0c -speed=4 -dvd-video -V LABEL dvd
Пришлось отдельно выносить этот вопрос, потому что предыдущий вопрос-ответ никто не читает.
Перекодировать ваш DVD в mpeg4 можно с помощью консольных утилит mencoder и transcode.
Посчитать битрейт можно с помощью калькулятора DivXcalc.
Кодирование в 2 прохода с двумя звуковыми дорожками на два cd можно сделать таким скриптом (в mpeg4):
#!/bin/bash
PH=/mnt/dos/dvd
READYPH=/mnt/dos/dvd/ready
BITRATE=1600
NICE=15
ENG=129
RUS=128
FPS=25
DATE="`date +%H%M%d`"
cp divx2pass.log "divx2pass-"$DATE".log"
cat $PH/*vob | nice -n $NICE mencoder - -ofps $FPS -ni -aid $RUS \
-ovc frameno \
-oac mp3lame -lameopts vbr=3:br=192:q=0:aq=0 \
-o $READYPH/"sound-"$RUS".avi"
cat $PH/*.vob | nice -n $NICE mencoder - -ofps $FPS -ni -aid $ENG \
-ovc frameno \
-oac mp3lame -lameopts vbr=3:br=192:q=0:aq=0 \
-o $READYPH/"sound-"$ENG".avi"
cat $PH/*.vob | nice -n $NICE mencoder - -ofps $FPS \
-ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vhq:vbitrate=$BITRATE:vme=5:keyint=300:v4mv:mv0:qpel:trell:cbp:naq \
-vf scale=640:360,pp=hb/vb/dr -sws 2 \
-nosound \
-o /dev/null
cat $PH/*.vob | nice -n $NICE mencoder - -ofps $FPS \
-ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vhq:vbitrate=$BITRATE:vme=5:keyint=300:v4mv:mv0:qpel:trell:cbp:naq \
-vf scale=640:360,pp=hb/vb/dr -sws 2 \
-nosound \
-o $READYPH/final-f1.avi
rm -f $PH/*.vob
nice -n $NICE avimerge -i $READYPH/final-rc1.avi -p $READYPH/"sound-"$RUS".avi" -o $READYPH/final-rc2.avi
nice -n $NICE avimerge -i $READYPH/final-rc2.avi -p $READYPH/"sound-"$ENG".avi" -o $READYPH/final.avi
Для кодирования в три прохода понадобится mplayer версии не ниже 1.0pre7 и кодек lavc.
Или в этом скрипте можно поменять несколько строчек и кодировать в xvid:
меняем строчку с cp:
cp xvid-twopass.stats "xvid-twopass-"$DATE".stats"
и меняем строчки с кодированием видео
cat $PH/*.vob | nice -n $NICE mencoder - -ofps $FPS -ni \
-ovc xvid -xvidencopts pass=1:vhq=1:qpel:trellis \
-nosound \
-vf crop=718:422:2:66,scale=640:356,pp=hb/vb/dr -sws 2 \
-o /dev/null
cat $PH/*.vob | nice -n $NICE mencoder - -ofps $FPS -aid $RUS -ni \
-ovc xvid -xvidencopts bitrate=$BITRATE:pass=2:vhq=1:qpel:trellis \
-nosound \
-vf crop=718:422:2:66,scale=640:356,pp=hb/vb/dr -sws 2 \
-o $READYPH/final-rc1.avi
Если вы хотите оставить звук в ac3 (как он идет в dvd), то вместо строчек перекодирования в mp3 поставьте
-oac copy
Для начала нужно включить аппаратную поддержку.
Потом надо установить libiec61883, libraw1394 с сайта http://www.linux1394.org, а также CLI утилиту dvgrab, с помощью которой можно будет копировать raw dv видео с камеры.
Для работы с MiniDV камерой и несложного редактирования видео существует программа Kino, в состав которой входит набор плагинов и скриптов, например: dv->mpeg4, dv->dvd и т.д.
Статья о том, как это делается в Alt Linux. Подойдет и для использования в других дистрибутивах.
http://rad.xtalk.msk.su/dv-dvd/index.html
Использовать параметр -double
или прописать его в свой файл конфигурации double = 1