Всем привет!
Здесь пробегало несколько писем с предложениями о том, как грабить
телепередачи и конвертировать их во что-либо удобохранимое. Просмотрев
эти письма и маны по mplayer'у и mencoder'у - написал следующий скрипт.
При запуске с параметром --help - будет ясно как с ним управляться.
С удовольствием и радостью приму Ваши комментарии и пожелания по
доработке (либо сами доработки :).
Да, еще, по умолчанию качество сжатия - GOOD, при этом 1,5 часа видео ~
700Mb, т.е. достаточно для оцифровки нормального фильма с ТВ.
Единственное, чего еще не понял, это как лучьше избавиться от рекламы.
Вырезать ее потом или склеивать фрагменты, полученные в результате
остановки записи? У кого есть какие варианты?
Итак.
Начало mencoder_grab_tv #! /bin/sh
#######################################################################
###############
#
# Этот скриптик предназначен исключительно для грабления
# TV-программ
#
# Большое спасибо Kuznetsov Alexander <sk***@h*****.ru> за идею
# указанную в письме от 30.08.03.
#
###
# Формат запуска: mencoder_grab_tv time Channel_ID [filename]
#
# Пример: [alon@home ]$ mencoder_grab_tv 10:00 NTV
#
# Создаст файл /home/alon/video/video-#####.avi с 10-минутным фрагментом
# вещания НТВ
#
#######################################################################
################
DD=`date +"%d-%m-%Y_-_%H:%M"`
if [ $# -eq 0 ]
then
echo
echo "Формат запуска: mencoder_grab_tv Время Канал [качество]
[имя файла]" echo "Для более полной информации запустите с ключем --help
?" echo
exit 0
fi
case $1 in
--help|help|h|-help)
echo
echo "Формат запуска: mencoderer_grab_tv Время Канал [качество]
[имя файла]" echo " где: "
echo " Время - это параметр формата мм:сс или чч:мм:сс -
означающий " echo " длительность записи. Этот параметр
так же может быть указан в mb" echo " Например: 100mb -
означает, что необходимо записать только 100 Мб." echo " Канал - это
оди из ТВ-каналов в России. Для получения списка " echo "
запустите скрипт с ключем --tvlist" echo " Качество - один из четырех
вариантов: " echo " Super, Best, Good, Normal."
echo " По умолчанию - Good."
echo " Имя файла - имя результирующего файла (без указания
каталога!). " echo " По олчанию
$HOME/video/video-дата_-_время.avi" echo
echo
echo "Пример: "
echo " [alon@home ]$ mencoderer_grab_tv 10:00 NTV "
echo
echo " Создаст файл /home/alon/video/video-#####.avi с
10-минутным фрагментом вещания НТВ" echo
echo
exit 0
;;
--tvlist|tvlist|-tvlist|list|--list)
echo
echo "Для Санкт-Петербурга и Лен. области справедливо
следующее:" echo
echo " [Название канала] [Его номер] [Как его понимает
скрипт]" echo
echo " ОРТ R12 ORT"
echo " РТР R2 RTR"
echo " СПб-ТВ R7 SPB"
echo " НТВ R9 NTV"
echo " Культура SR4 KULTURA"
echo " ТкТ R5 TKT"
echo " MTv SR1 MTV"
echo " ТВ 3 SR2 TV3"
echo " 7 ТВ (спорт) SR5 7TV"
echo " СТС SR6 CTC"
echo " Региональное ТВ SR8 RTV"
echo " NBN (40 канал) SR12 NBN"
echo " TNT SR14 TNT"
echo " Невский Канал SR16 NEVSKIY"
echo
echo "Этот список может быть далеко не полным, но для моей
антены - это именно так. :) Если у кого не совпадает - сверьтесь с
файлом $HOME/.xawtv" echo
exit 0
;;
*) # В первом параметре указано что-то, что должно быть временем
if [ -z $2 ]
then echo
echo "Не указан канал. Попробуйте с ключем --help";
echo
exit 1
fi
case $2 in
ORT|ort|Ort|ОРТ|Орт|орт|1) CH=R12 ;;
RTR|rtr|Rtr|РТР|Ртр|ртр|1) CH=R2 ;;
SPB|spb|Spb|СПБ|Спб|спб|3) CH=R7 ;;
NTV|ntv|Ntv|НТВ|Нтв|нтв|4) CH=R9 ;;
KUL*|kul*|Kul*|Культура) CH=SR4 ;;
TKT|tkt|TkT|Tkt|ТКТ|ткт) CH=R5 ;;
MTV|mtv|Mtv|MTv|Мтв|МТв|МТВ) CH=SR1 ;;
TV3|tv3|Tv3|ТВ3|тв3|Тв3) CH=SR2 ;;
7*|sport|Sport|SPORT) CH=SR5 ;;
CTC|STS|sts|ctc|Sts|Ctc|СТС|стс) CH=SR6 ;;
NBN|nbn|Nbn|"40"|НБН|нбн|Нбн) CH=SR12 ;;
RENTV|rentv|RenTv|RenTV|RTV|rtv) CH=SR8 ;;
TNT|tnt|Tnt|ТНТ|тнт|Тнт) CH=SR14 ;;
NEVSKIY|Nevskiy|nevskiy|Nev|nev|NTV) CH=SR16 ;;
*)
echo "Неправильно указан канал, запустите с ключем --tvlist"
exit 1
;;
esac
TIME=$1
;;
esac
case $3 in
SUPER|Super|super) QUALITY=2000 ;;
BEST|Best|best) QUALITY=1480 ;;
GOOD|Good|good) QUALITY=1024 ;;
NORMAL|Normal|normal|norm|NORM|Norm) QUALITY=800 ;;
*)
QUALITY=1024
;;
esac
[ -d $HOME/video ] || mkdir $HOME/video
FILEPATH=$HOME/video
FILENAME=$FILEPATH/video-$DD.avi
[ -z $4 ] || FILENAME=$FILEPATH/$4
CODEC=msmpeg4
##echo "Итак, приступаем: "
echo
echo " Канал - $CH"
echo " Время в пути - $1"
echo " Конечный файл - $FILENAME"
echo " Качество (битрейт) - $QUALITY"
echo " Кодек - $CODEC"
echo " Пишем..."
##mencoder -tv
on:driver=v4l:input=0:width=384:height=288:fps=30:norm=SECAM:channel=$C
H:chanlist=europe-east:amode=0:forcechan=1 -endpos $1 \-ovc lavc
-lavcopts vcodec=msmpeg4:vbitrate=$QUALITY \-vop pp=al/tn:64:128:256/dr
\-oac mp3lame -lameopts cbr=0:aq=0:vol=0:br=96 -o $FILENAME 2>/dev/null
1>/dev/null
##echo "Поздравляю, файл записан! :)"
echo
exit 0
#######################################################################
#######################
#
#Различные варианты запуска mencoder'a - использовалось для подбора
#оптимальных параметров...
#
#######################################################################
#######################
#mencoder -tv
#on:driver=v4l:input=0:norm=SECAM:chanlist=europe-east:channel=R12:widt
#h=384:height=288 -ovc copy -oac mp3lame -lameopts vbr=0:aq=0:vol=0:q=0
#-frames 1500 -o /home/video/test.avi
#mencoder -tv
#on:driver=v4l:input=0:norm=SECAM:chanlist=europe-east:channel=R12:widt
#h=384:height=288 -ovc lavc -lavcopts vcodec=msmpeg4:vbitrate=2000:vhq
#-oac mp3lame -lameopts
#mencoder -tv
#on:driver=v4l:input=0:norm=SECAM:chanlist=europe-east:channel=R12:widt
#h=384:height=288 -ovc xvid -xvidencopts bitrate=2000:me_quality=6 -oac
#mp3lame -lameopts vbr
#mencoder -tv
#on:driver=v4l:input=0:width=320:height=240:fps=15:norm=SECAM:channel=R
#7:chanlist=europe-east:amode=0:forcechan=1 -endpos $1 -ovc lavc
#-lavcopts vcodec=mpeg4:vbitrate=768 -oac mp3lame -lameopts vbr=0:br=96
#-o /home/video/video-$DD.avi
#mencoder -tv
#on:driver=v4l:width=640:height=480:chanlist=europe-east:channel=$1:nor
#m=SECAM -ovc divx4 -oac pcm -o $2
# mencoder -tv
# on:driver=v4l:input=0:norm=SECAM:chanlist=europe-east:channel=$1:widt
# h=496:height=372 -ovc xvid -xvidencopts bitrate=800:me_quality=6 -oac
# pcm -o $2
Конец mencoder_grab_tv Планирую добавить возможность выбора различных кодеков (DivX, XviD,
msmpeg, mpeg и пр.)