Next Previous Contents

18. Multimedia

Для начала ссылка на некоторые ресурсы (присылайте ссылки и мы их включим):

Неофициальный FAQ по MPlayer

18.1 Как сделать, чтобы MPlayer использовал rtc, не ставя на него suid бит?

Для тех, у кого в системе есть /etc/sysctl.conf:

/etc/sysctl.conf:

dev/rtc/max-user-freq=1024

Для остальных:

/etc/rc.local:

echo 1024 > /proc/sys/dev/rtc/max-user-freq

18.2 При просмотре фильмов в MPlayer включается скринсейвер (или монитора "засыпает"), что делать?

user@linux$ man mplayer

На предмет опции -stop_xscreensaver

Если у вас просто mplayer, без графического интерфейса, берем ваш файл конфигурации  /.mplayer/config и пишем в нем строчку

~/.mplayer/config:

stopxscreensaver = 1

Для gmplayer мы пропишем строчку

~/.mplayer/gui.conf:

stopxscreensaver = "yes"

Это можно сделать и средствами интерфейса.

Из командной строки можно добавить ключ -stop-xscreensaver

Важно: В руководстве ключ назван неверно -stop_xscreensaver (с подчеркиванием вместо тире).

18.3 После перекомпиляции ядра mplayer стал вылетать с segmentation fault. Куда копать?

Можно попробовать включить в ядре параметр CONFIG_BSD_PROCESS_ACCT пересобрать его.

18.4 Как записать тв-программу, используя mencoder?

Для ядра 2.4 и ранних 2.6:

#!/bin/bash

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/bash
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/bash

mencoder -ovc copy -oac mp3lame -lameopts aq=0:ratio=100 pcm_file.avi -o your_ready.avi

Если хочется почистить картинку от помех, это можно сделать примерно так:

#!/bin/bash

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 тоже может стать причиной сбоя).

18.5 Сделал все, как написано здесь, но картинка с тв-тюнера пишется, а звук - нет. Звуковая система - alsa. Что делать?

Запускаем alsamixer и в нем снимаем, если есть, mute с канала Line (клавиша m), далее ставим capture на каналы Line и Capture (клавиша пробел).

18.6 Как посылать именно фильм на телевизор, а все остальное - на монитор?

При настроенном X-сервере - легко:

user@linux# alias mplayertv='export DISPLAY=:0.1 & qut;" mplayer -fs'

О настройках карточек nvidia через TwinView читайте в документации nvidia, если нужны более хитрые настройки, читайте здесь. О настройке карт ATI читайте здесь.

18.7 Как на Nvidia настроить TV-Out так, чтобы фильм из mplayer выводился на TV, а монитор оставался свободным?

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

18.8 Почему при попытке просмотра фильма в MPlayer в полноэкранном режиме фон только меняется на черный, а размер картинки остается прежним?

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

18.9 MPlayer - проблемы с интерфейсом: любой "скин" он показывает черным, элементов управления тоже не видно. Что делать?

Это проявляется на определенных картах. Попробуйте поменять битность цвета. Должно сработать.

18.10 Как в MPlayer просмотреть VCD?

1. Не надо монтировать диск.

2. mplayer -vcd://номер_трека [остальные ключи].

18.11 Как в сграбить audio-CD в mp3 (в том числе из консоли)?

Можно воспользоваться либо грабберами или программами для записи компакт-дисков с поддержкой таких функций.

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;

18.12 Как перегнать mp3 в ogg (в том числе из консоли)?

Вы можете воспользоваться программой ecasound.

Для преобразования из консоли воспользуйтесь скриптом mp32ogg. Это не домашняя страница проекта, а сам скрипт, исправленный svyatogor для перекодировки тэгов сразу в unicode.

Внимание! Преобразование mp3 в ogg и наоборот ведет к потере качества звука!

18.13 Как записать audio-CD из mp3 (wav)?

Пользователи 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.

mp3split Для склеивания mp3wrap (rezound, cutmp3) И есть еще ecasound.

18.15 Чем под Linux сделать DVD-диск из avi-файла?

Можно попробовать графическую утилиту (и она вам пригодится для создания менюшек и т.п.) под названием QDVDAuthor или же сделать все скриптами как показано ниже (но удобнее всего совмещать оба способа).

Алгоритм кодирования в dvd такой:

  1. Звук конвертируете в pcm, ac3, mp2 (mpeg 1 layer2).
  2. Видео конвертируете в mpeg2video. Это можно сделать с помощью mplex из комплекта mjpegtools, или с помощью mencoder (output format: -of mpeg), но лучше первым. К тому же mencoder не умеет делать звук mp2.
  3. Далее можно пропустить это через dvdauthor, чтобы сформировать структуру каталогов.
  4. Затем делается image.
  5. Запись.

Все прочитали? Можно автоматизировать процесс с помощью 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

Замечания.

  1. Для NTSC материала нужно правильно подобрать значение параметра -j. Указанное значение (-92) корректно для фильмов им. тов. Гоблина (тех, что я кодировал).
  2. Максимальный размер диска -- 800Мб, что отлично влезает на 700Мб болванку из-за того, что пишется "полный" сектор. Грубо можно считать "800Мб == 80 мин".

Где взять: mkdvd http://fredrik.hubbe.net/hacks/ mjpegtools http://mjpeg.sourceforge.net/ dvdauthor http://dvdauthor.sourceforge.net mencoder http://www.mplayerhq.hu transcode http://zebra.fh-weingarten.de/~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/

18.16 Как в Linux работать с видео? Какие есть программы для работы с видео?

Внимательно читайте список требований. Обычно для работы нужны

transcode mencoder (MPlayer) и иногда mjpegtools Где взять см. предыдущий вопрос.

Работа с Linux Video Studio на карте Pinnacle Studio DC 10 Plus: http://genphys.phys.msu.su/~dmitriy/site/mv/howto_linuxvideostudio.html

Программа для примитивного монтирования: http://fixounet.free.fr/avidemux/ (IMHO лучше брать из altlinux sysiphus

Программа посложнее: http://www.schirmacher.de/arne/kino/

Если нравится mencoder, но хочется получить графический интерфейс - вам поможет kmencoder ( http://sourceforge.net/projects/kmencoder/).

18.17 Как перекодировать DVD в mpeg4 (dvd2mpeg)?

Пришлось отдельно выносить этот вопрос, потому что предыдущий вопрос-ответ никто не читает.

Перекодировать ваш DVD в mpeg4 можно с помощью консольных утилит mencoder и transcode.

Посчитать битрейт можно с помощью калькулятора DivXcalc.

Кодирование в 3 прохода с двумя звуковыми дорожками на два 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-f2.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

Или в этом скрипте можно поменять несколько строчек и кодировать в 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


Next Previous Contents