LOR-FAQ-Multimedia
Материал из Викиучебника
|
||
|
Для начала ссылка на некоторые ресурсы:
[править] Как сделать, чтобы MPlayer использовал rtc, не ставя на него suid бит?
Для тех, у кого в системе есть /etc/sysctl.conf:
dev/rtc/max-user-freq=1024
Для остальных:
/etc/rc.local:
echo 1024 > /proc/sys/dev/rtc/max-user-freq
[править] При просмотре фильмов в MPlayer включается скринсейвер (или монитор "засыпает"), что делать?
user@linux$ man mplayer
На предмет опции -stop-xscreensaver.
Чтобы не добавлять эту опцию каждый раз при запуске mplayer вручную, сделаем следующее:
для mplayer, без графического интерфейса, берем ваш файл конфигурации ~/.mplayer/config и пишем в нем строчку
stop-xscreensaver = 1
для gmplayer мы пропишем строчку
~/.mplayer/gui.conf:
stop-xscreensaver = "yes"
Это остановит также запуск gnome-screensaver, если вы используете его вместо xscreensaver.
Так же следует учитывать что stop-xscreensaver срабатывает только для режима x11, или для всех остальных но только в Gnome/Kde.
[править] После перекомпиляции ядра mplayer стал вылетать с segmentation fault. Куда копать?
Можно попробовать включить в ядре параметр CONFIG_BSD_PROCESS_ACCT пересобрать его.
[править] Как записать тв-программу, используя 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 тоже может стать причиной сбоя).
[править] Сделал все, как написано здесь, но картинка с тв-тюнера пишется, а звук - нет. Звуковая система - alsa. Что делать?
Запускаем alsamixer и в нем снимаем, если есть, mute с канала Line (клавиша m), далее ставим capture на каналы Line и Capture (клавиша пробел).
[править] Как посылать именно фильм на телевизор, а все остальное - на монитор?
При настроенном X-сервере - легко:
user@linux# alias mplayertv='export DISPLAY=:0.1 & qut;" mplayer -fs'
О настройках карточек nvidia через TwinView читайте в документации nvidia, если нужны более хитрые настройки, читайте здесь. О настройке карт ATI читайте здесь.
[править] Как на 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
[править] Почему при попытке просмотра фильма в 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
[править] MPlayer - проблемы с интерфейсом: любой "скин" он показывает черным, элементов управления тоже не видно. Что делать?
Это проявляется на определенных картах. Попробуйте поменять битность цвета. Должно сработать.
[править] Как в MPlayer просмотреть VCD?
- Не надо монтировать диск.
- mplayer -vcd://номер_трека [остальные ключи].
[править] Как в сграбить 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=`egrep '^Artist\:' tracks.cddb | gawk -F\: '{print $2}' | sed -e's/^ *//' -e's/ *$//'`
ALBUM=`egrep '^Title\:' tracks.cddb | 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
[править] Как перегнать mp3 в ogg (в том числе из консоли)?
Вы можете воспользоваться программой ecasound.
Для преобразования из консоли воспользуйтесь скриптом mp32ogg. Это не домашняя страница проекта, а сам скрипт, исправленный svyatogor для перекодировки тэгов сразу в unicode.
Внимание! Преобразование mp3 в ogg и наоборот ведет к потере качества звука!
[править] Как записать 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.
[править] Чем под Linux сделать DVD-диск из avi-файла?
Можно попробовать графическую утилиту (и она вам пригодится для создания менюшек и т.п.) под названием QDVDAuthor или же сделать все скриптами как показано ниже (но удобнее всего совмещать оба способа).
Алгоритм кодирования в dvd такой:
- Звук конвертируете в pcm, ac3, mp2 (mpeg 1 layer2).
- Видео конвертируете в mpeg2video. Это можно сделать с помощью mplex из комплекта mjpegtools, или с помощью mencoder (output format: -of mpeg), но лучше первым. К тому же mencoder не умеет делать звук mp2.
- Далее можно пропустить это через dvdauthor, чтобы сформировать структуру каталогов.
- Затем делается image.
- Запись.
Все прочитали? Можно автоматизировать процесс с помощью 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
Замечания.
- Для NTSC материала нужно правильно подобрать значение параметра -j. Указанное значение (-92) корректно для фильмов им. тов. Гоблина (тех, что я кодировал).
- Максимальный размер диска -- 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/
[править] Как в Linux работать с видео? Какие есть программы для работы с видео? (кодирование видео, avi, mpeg, dvd)
Внимательно читайте список требований. Обычно для работы нужны
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.kinodv.org
Если нравится mencoder, но хочется получить графический интерфейс - вам поможет kmencoder ( http://sourceforge.net/projects/kmencoder/).
[править] Как перекодировать 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
[править] В mplayer при быстрой смене кадров вылазят горизонтальные полосы. В xine их нет. Что делать?
Использовать параметр -double или прописать его в свой файл конфигурации double = 1