LINUX.ORG.RU

[mencoder] [оптимальный метод] Как?

 


0

0

Интересно вот — с DVD слепил я все vob'ы в один ~7,5 ГБ файл (там один фильм всего был в отличном качестве) и потом его перегнал H264 — получился файл на 375 МБ с прекрасным качеством картинки (звук не трогал — оставил родной Dolby Digital AC-3), по-крайней мере на мониторе 1280х1024 выглядит очень достойно, практически как и на DVD, но при многократно меньшем размере.

Вопрос в том в чего сграбить поток, чтобы потом неслабо так его зажать, без видимой потери качества. Пробовал в тот же «lavc -lavcopts vcodec=mpeg1video» и во второй mpeg, но не жмётся он потом так, как с DVD — в разы и более (максимум раза в 1,5-2). Перепробовал разные ovc, что знал.

Нужно для оцифровки домашних видеокассет и зомбоящика.

★★★★★

Ответ на: комментарий от Led

Я в принципе так и делаю, да чего-то не очень мне картинка при таком немалом размере файла. Ладно, поиграюсь ещё с опциями. Будем искать (с)

amorpher ★★★★★
() автор топика
Ответ на: комментарий от Led

Сейчас вот так:


file=/home/amorpher/'Рабочий стол'/Видеозапись-$(date +%d-%m-%Y-%A-%H:%M:%S).avi

sleep 1
if [ -s `pidof tvtime ffmpeg mencoder gnomeradio` ];
then
mencoder tv:// -tv driver=v4l2:width=624:height=468:input=0:normid=17:alsa:adevice=hw.1,0 \
   -ovc lavc -lavcopts vcodec=mpeg4:vhq:vqmin=2:vqscale=5:threads=4 \
   -oac mp3lame -lameopts vbr=0:br=64:mode=3 \
   -vf pp=ci crop=568:440:16:24 -sws 2 \
   -o «$file» &
fi

sleep 2
mplayer «$file» &

zenity --info --title «Запись ТВ» --text «Идёт запись.
Нажмите "ОК" для её окончания.»

mypid=`pidof -s mencoder`
kill -s SIGTERM «$mypid»

amorpher ★★★★★
() автор топика
Ответ на: комментарий от amorpher

>До этого xvid кодировал, но потом его толком вообще хрен сожмёшь.

Зачем? Либо сжимай сразу и окончательно, либо грабь в лосслесс (или, на крайняк, в мжпег) - если почему-то хочешь потом обрабатывать.

Led ★★★☆☆
()
Ответ на: комментарий от Led

Да вот и не решил ещё как лучше будет для отношения размер/качество — сначала сграбить хорошо и потом зажать или сразу на лету жать.

Сделал так:
ovc lavc -lavcopts vcodec=mpeg1video:vhq:vqscale=2:threads=4

Потом сжал, получилось ~4,5 раза, и все равно — большой получается (и не обрезается чего-то, хотя в скрипте стоит -vf pp=ci crop=568:440:16:24 указано).

Так -ovc xvid -xvidencopts bitrate=1600:chroma_opt:bvhq=1:quant_type=mpeg думаю лучше, но опять же не особо немаленький (1 минута где-то 15 МБ, учитывая, что звук выбран не ахти).

Вот клипы лежат у меня из разных мест, так там где-то 1 минута по 10 МБ и качество видео не хуже, про звук и не говорю — не меньше 192 kbps MPEG 1 Audio, Layer 3 (MP3). Может битрейт на видео меньше ещё сделать? ХЗ.

amorpher ★★★★★
() автор топика

Потыкался и сделал так (кому может пригодится, кто раньше tvtime использовал, а сейчас со звуком проблема в нём, а патченный под ALSA тоже нихрена не работает у меня адекватно).

====================================================================
Смотреть (сначала каналы найдём):

amorpher@xxx ~/Рабочий стол $ cat /home/amorpher/Пакеты/media/scripts/mplayertv/mplayer-tv-scan
#!/bin/bash

mkfifo /tmp/mplayer.fifo > /dev/null 2>&1
mplayer -ao null tv:// -tv driver=v4l2:fps=25:width=720:height=576:immediatemode=0:chanlist=russia:normid=13:buffersize=16:noaudio -nolirc -noconsolecontrols -slave -input file=/tmp/mplayer.fifo 2>&1 | tee /tmp/mplayer.log &
echo «osd_show_text \„Сканирование каналов...\“ 360000» > /tmp/mplayer.fifo
echo «tv_start_scan» > /tmp/mplayer.fifo
while [ «`pidof mplayer`» ]
do
channels=`cat /tmp/mplayer.log | tr «V:» «\n» | grep «channels=» | sed -e 's/.*channels=\(.*\)/\1/g'`
if [ «$channels» ] ; then
echo $channels | sed -e 's/,/,\n/g' > ~/.mplayer/channels.conf
echo «quit» > /tmp/mplayer.fifo
exit 0
fi
sleep 1
done
--------------------------------------------------------------------

Это уже сам «телевизер»:

amorpher@xxx ~ $ cat /home/amorpher/.mplayer-tv
#!/bin/bash

channels=`cat ~/.mplayer/channels.conf | tr -d «\n»`
mplayer tv:// \
-tv driver=v4l2:width=768:height=576\
:outfmt=YV12:fps=25:width=720:height=576\
:immediatemode=0:buffersize=512\
:alsa:adevice=hw.1,0:audiorate=32000:volume=100:forceaudio:forcechan=2:amode=1\
:input=0:normid=13:chanlist=russia\
:channels=$channels \
-vf pp=hb/vb/dr/al/fd,hqdn3d,crop=688:540:18:16 -sws 2 \
-input conf=~/.mplayer/input.conf
====================================================================

Записывать с просмотром (с задержкой ес-сно):

amorpher@xxx ~ $ cat /home/amorpher/.recordTV
#!/bin/bash

file=/home/amorpher/'Рабочий стол'/Видеозапись-$(date +%d-%m-%Y-%A-%H:%M:%S).avi

mencoder tv:// -tv driver=v4l2:width=768:height=576:input=0:normid=17:alsa:adevice=hw.1,0 \
   -ovc xvid -xvidencopts bitrate=1200:chroma_opt:bvhq=1:quant_type=mpeg \
   -oac mp3lame -lameopts vbr=0:br=64:mode=3 \
   -vf pp=hb/vb/dr/al/fd,hqdn3d,crop=688:540:18:16 -sws 2 \
   -o «$file» &

sleep 2
mplayer «$file» &

zenity --info --title «Запись ТВ» --text «Идёт запись.
Нажмите "ОК" для её окончания.»

mypid=`pidof -s mencoder`

kill -s SIGTERM «$mypid»
--------------------------------------------------------------------

Для мышки (типа как в tvtime, удобно когда пишешь — время прошедшее смотреть можно):

amorpher@xxx ~ $ cat /home/amorpher/.mplayer/input.conf
MOUSE_BTN4 tv_step_channel 1
MOUSE_BTN3 tv_step_channel -1
MOUSE_BTN1 osd
MOUSE_BTN5 volume -1
MOUSE_BTN6 volume 1
MOUSE_BTN0_DBL vo_fullscreen

amorpher ★★★★★
() автор топика
Ответ на: комментарий от amorpher

И, чтобы не гадило в ~/.xsession-errors, а то может до немаленьких размеров разрастись — в ~/.mplayer/config и ~/.mplayer/mencoder.conf добавить quiet = true

amorpher ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.