mPlayRecTv - assiste e grave a programação da TV com MPlayer
Publicado por Pedro Robson Leão 05/04/2005
[ Hits: 5.553 ]
Grave a programação da tv com o uso do cron/at e mplayer.
Passei por varias opções vcr, http://www.stack.nl/~brama/vcr/, mplayerTv, http://www.mplayertv.tk/. Mas foi no site http://www.anandtech.com/guides/viewfaq.aspx?i=154 que encontrei os parametros necessários para usar o mplayer para fazer minhas gravações.
Criei então um script para fazer isto e conto com a comunidade para aprimorar este script.
Mandem suas dicas, criticas e melhorias.
#!/usr/bin/bash
#name       : mPlayRecTv
#born       : 01-April-2005 (it is not lie)
#author     : Pedro Robson Leão (pedro.leao@ig.com.br)
#description: A simple interface to play and rec tv with mplayer.
#change log :
#20050401 ** first version.
#mencoder -tv driver=v4l:norm=palm:channel=3:chanlist=us-cable:width=320:height=240:input=0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900      -oac mp3lame -lameopts cbr:br=64 -o output.avi tv://
#mplayer  -tv driver=v4l:norm=palm:channel=3:chanlist=us-cable:width=352:height=240:input=0 -vo sdl tv://
#-- default Parameters
driver=${driver:-v4l};
norm=${norm:-palm};
channel=${channel:-3};
channelist=${channelist:-us-cable};
width=${width:-320};
height=${height:-240};
ovc=${ovc:-lavc -lavcopts};
vcodec=${vcodec:-mpeg4};
vbitrate=${vbitrate:-900};
oac=${oac:-mp3lame -lameopts};
cbr=${cbr:-br=64};
input=${input:-Television};
output=${output:-output.avi};
vo=${vo:-sdl};
log=${log:-/dev/null};
time=;
play=1;
myname=$0;
#-- convert hour and minuts to seconds
function convTime() {
   value=${1};
   value=${value//:/};
   min=$((value%100));
   hour=$((value/100))
   min=$((min*60));
   hour=$((hour*3600));
   sec=$((hour+min));
   echo $sec;
}
#-- error message
function errMsg() {
   echo "Use: ${myname} [options ...]";
   echo;
   echo "Default options:";
   echo "--driver=${driver}";
   echo "--norm=${norm} [palm/paln/pal/ntsc]";
   echo "--channel=${channel}";
   echo "--channelist=${channelist}";
   echo "--width=${width}";
   echo "--height=${height}";
   echo "--ovc=${ovc}";
   echo "--vcodec=${vcodec}";
   echo "--vbitrate=${vbitrate}";
   echo "--oac=${oac}";
   echo "--cbr=${cbr}";
   echo "--input=${input} [Television/Composite1/S-Video]";
   echo "--output=${output}";
   echo "--vo=${vo}";
   echo "--log=${log}";
   echo;
   echo;
   case $1 in
      pid)   echo "ERROR IN PLAY/REC : To debug errors to play/rec use --log option and see log to many informations.";;
      input) echo "INVALID INPUT     : Use --input with [Television/Composite1/S-Video]";;
      mplayer|mencoder) echo "CAN'T FOUND PROGRAM ${1}";
   esac
   
}
#-- Change input parameters to getopts format
set -- ${*//--driver/-d};
set -- ${*//--norm/-n};
set -- ${*//--channel/-c};
set -- ${*//--channelist/-l};
set -- ${*//--width/-W};
set -- ${*//--heigth/-H};
set -- ${*//--ovc/-V};
set -- ${*//--vcodec/-C};
set -- ${*//--vbitrate/-b};
set -- ${*//--oac/-A};
set -- ${*//--cbr/-R};
set -- ${*//--input/-i};
set -- ${*//--output/-o};
set -- ${*//--vo/-O};
set -- ${*//--play/-p};
set -- ${*//--rec/-r};
set -- ${*//--log/-L};
set -- ${*//--time/-T};
set -- ${*//--help/-h};
#- get parameters
while getopts d:n:c:l:W:H:V:C:b:A:R:i:o:O:prhL:T: value 2>/dev/null ; do
   case $value in
      d) driver="${OPTARG}";;
      n) norm="${OPTARG}";;
      c) channel="${OPTARG}";;
      l) channelist="${OPTARG}";;
      w) width="${OPTARG}";;
      H) heigth="${OPTARG}";;
      V) ovc="${OPTARG}";;
      C) vcodec="${OPTARG}";;
      b) vbitrate="${OPTARG}";;
      A) oac="${OPTARG}";;
      R) cbr="${OPTARG}";;
      i) input="${OPTARG}";;
      o) output="${OPTARG}";;
      O) vo="${OPTARG}";;
      L) log="${OPTARG}";;
      T) time="${OPTARG}";;
      p) play=1;;
      r) play=;;
      h) errMsg help; exit 0;;
      *) errMsg help; exit 0;;
   esac
done 
#-- convert input parms
case ${input} in
   Television) input=0;;
   Composite1) input=1;;
   S-Video)    input=2;;
   *)               errMsg input; exit 0;;
esac
gparms="driver=${driver}:norm=${norm}:channel=${channel}:chanlist=${channelist}:width=${width}:height=${height}:input=${input}";
if [ ! -z ${play} ] ; then
   command="mplayer  -tv ${gparms} -vo ${vo} tv://";
   msglog="${0} play channel ${channel} ";
else
   command="mencoder -tv ${gparms} -ovc ${ovc} vcodec=${vcodec}:vbitrate=${vbitrate} -oac ${oac} cbr:${cbr} -o ${output} tv://";
   msglog="${0} rec channel ${channel} ";
fi
#-- verify command
if  ! which $( echo $command | cut -d" " -f1 ) ; then
   errMsg $command;
   exit 1;
fi
#-- execute the mplayer our mencoder
start=$(date);
${command} >${log} 2>&1 &
cmdpid=${!};
#-- in error case no has pid
[ -z "${cmdpid}" ] && errMsg pid && exit 0;
#-- get time to reproduction
time=$( convTime ${time} );
#-- if time reproduction, kill proccess after time
[ ${time} -ge 0 ] && sleep ${time} && kill ${cmdpid};
end=$(date);
#-- write log message
logger 0 "${msglog} pid:${cmdpid} start:${start} end:${end}";
exit 1;
Script para atualizar o sistema
Restaurar backup de uma conta cpanel mesmo que ela já exista
Script para compilação manual do nessus
Configurando um Domínio no BIND9 com Debian 3.1
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Programa fora de escala na tela do pc (36)
Instalação dualboot Windows 11 e Debian 13 (0)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









