TV Timeshift en Debian Sarge
El timeshift consiste en ver un programa de television en directo con la posibilidad de hacer pausas, avanzar o retroceder. El programa se va grabando en un buffer, generalmente un archivo de video en el disco duro, y es esta grabacion lo que se va viendo (hay una ligera perdida de calidad con respecto a ver la televiion como siempre).
Voy a explicar como hago timeshift por software con mi equipo algo desfasado (AMD Athlon 750 MHz) y una tarjeta bttv (miro PCTV) de manera muy sencilla y eficaz con el codificador de video mpg1 mp1e corriendo Linux Debian Sarge.
El proyecto mp1e parece estar parado (a pesar de que lo utiliza el media center Freevo), y la ultima version no funciona sin aplicar parches que andan por la red. Yo lo he instalado alienizando un rpm que esta en rpm search ( http://rpm.pbone.net/index.php3/stat/2/simple/2 ).
Busque el paquete mp1e, descargue la version mp1e-1.9.5-alt0.1.cvs.i586.rpm , luego lo converti con alien
... como root en una consola:
alien mp1e-1.9.5-alt0.1.cvs.i586.rpm
Instale el paquete deb generado, aunque el archivo man lo tuve que convertir a. gz, y depues solo hay que ejecutarlo en consola. En mi caso tengo una soundblaster live y la tarjeta de television miro PCTV, a mi me funciona bien con todas las opciones por defecto salvo el video capture device (opcion c):
mp1e -v -c/dev/video0 -f25 > test.mpg
Esto graba un video mpg-1 en el directorio de trabajo a 25 fps, con un bitrate de 2.800 kbps para video y 80 kbps para audio mono.
Luego lanzo el archivo mpg que se va generando con kaffeine o kplayer (recomendado) y ya esta.
Cuando se quiera terminar de usar el timeshift se hace control-d en la consola donde se ejecuta mp1e, y el video mpg generado podemnos borrarlo o convertrilo a mpeg-4, xdiv o divx para que ocupe menos.
mp1 e es muy rapido y consume muy poco procesador, con las opciones por defecto da una calidad bastante buena pero los archivos que genera son muy grandes (una pelicula puede ocupar mas de 1 GB de disco duro) y tiene una ligera desincronizacion entre el audio y el video que se puede corregir con kplayer en tiempo real o cuando se vaya a convertir a un formato mas pequeño.
Tambien se puede ejecutar mp1e con otros bitrates (opcion -b), dividr los archivos en trozos, sonido estereo, y otras mas opciones (mirar el man):
No hay una forma mas sencilla y eficaz de grabar y hacer timeshift con equipos desfasados y sin encoder por hardware.
- Inicie sesión o regístrese para enviar comentarios
- 1487 lecturas

# script para hacer timeshift con las opciones por defecto de kplayer y ***teniendolo en modo repeticion de archivo*** (tambien es requisito necesario tener claro los volumenes iniciales de PCM, Wave Surround, Line y Capture)
#funcion para gestionar la salida al pulsar Control-C
function salir()
{
cp $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
echo "Finalizado. Pulse ENTER para borrar los archivos buffer "$HOME"/test0.mpg y "$HOME"/test1.mpg ..."
read TECLA
rm $HOME/test0.mpg
rm $HOME/test1.mpg
exit 0
}
trap "salir" 2
#preguntar tamaño del buffer y bitrate
clear
echo "Introduzca minutos del buffer (numero entre 1 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" = "" ]; then
MIN=15
fi
echo "Introduzca bitrate de video (numero entre 1000-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" = "" ]; then
BIT=2300
fi
# guarda playlist y copia el nuevo
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
echo "[Playlist Entries]
Entries=2
Entry 0=file:///"$HOME"/test0.mpg
Entry 1=file:///"$HOME"/test1.mpg
Selected 0=false
Selected 1=false" > $HOME/.kde/share/config/kplayerplaylistrc
#primera ejecucion para lanzar kplayer
mp1e -v -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 > $HOME/test0.mpg | kplayer $HOME/test0.mpg $HOME/test1.mpg
#repetir lo mimso hasta que se pulse Control-C en la consola u ocurra un error
while [ $? = 0 ]; do
mp1e -v -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 > $HOME/test1.mpg
if [ $? = 0 ]; then
mp1e -v -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 > $HOME/test0.mpg
fi
done
cp $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
rm $HOME/test0.mpg
rm $HOME/test1.mpg
echo "Ha ocurrido un error."
exit 1
#*************************************************************************
#NOTAS:
#
#Lo he hecho hace poco asi que no se si tiene bugs...
#
#Cuidado al elegir minutos y bitrate con el espacio libre de la particion HOME.
#
#Yo lo uso para hacer pausas, avanzar y retroceder es otra historia.
#
#
#picpic
#
Respuesta a # script para hacer timeshift
# script para hacer timeshift con las opciones por defecto de kplayer y ***teniendolo en modo repeticion de archivo*** (tambien es requisito necesario tener claro los volumenes y controles iniciales de PCM, Wave Surround, Line y Capture)
#funcion para gestionar la salida al pulsar Control-C
function salir()
{
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
echo "Finalizado. Pulse ENTER para borrar los archivos buffer "$HOME"/test0.mpg y "$HOME"/test1.mpg ..."
read TECLA
rm $HOME/test0.mpg
rm $HOME/test1.mpg
exit 0
}
trap "salir" 2
#preguntar tamaño del buffer y bitrate
clear
echo "Introduzca minutos del buffer (numero entre 1 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" = "" ]; then
MIN=15
fi
echo "Introduzca bitrate de video (numero entre 1000-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" = "" ]; then
BIT=2300
fi
# comprueba, guarda y copia el nuevo playlist
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo "Ya existe una copia anterior del playlist de kplayer. Pulse ENTER para conservarla (por defecto) o introduzca r para reemplazarla : "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
fi
echo "[Playlist Entries]
Entries=2
Entry 0=file:///"$HOME"/test0.mpg
Entry 1=file:///"$HOME"/test1.mpg
Selected 0=false
Selected 1=false" > $HOME/.kde/share/config/kplayerplaylistrc
#primera ejecucion para lanzar kplayer
mp1e -v -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 > $HOME/test0.mpg | kplayer $HOME/test0.mpg $HOME/test1.mpg
#repetir lo mimso hasta que se pulse Control-C en la consola u ocurra un error
while [ $? = 0 ]; do
mp1e -v -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 > $HOME/test1.mpg
if [ $? = 0 ]; then
mp1e -v -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 > $HOME/test0.mpg
fi
done
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
rm $HOME/test0.mpg
rm $HOME/test1.mpg
echo "Ha ocurrido un error."
exit 1
#***************************************************************************++
#
# NOTAS:
#
# Ejecutar en consola, con un lanzador puede fallar por el tema de los permisos.
#
#
# picpic
#
Respuesta a # script para hacer timeshift
# script para hacer timeshift con las opciones por defecto de kplayer y ***teniendolo en modo repeticion de archivo*** (tambien es requisito necesario tener claro los volumenes y controles iniciales de PCM, Wave Surround, Line y Capture)
#funcion para gestionar la salida al pulsar Control-C
function salir()
{
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
echo "Finalizado. Pulse ENTER para borrar los archivos buffer "$HOME"/test0.mpg y "$HOME"/test1.mpg ..."
read TECLA
rm $HOME/test0.mpg
rm $HOME/test1.mpg
exit 0
}
trap "salir" 2
#preguntar tamaño del buffer y bitrate
clear
echo "Introduzca minutos del buffer (numero entre 1 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" = "" ]; then
MIN=15
fi
echo "Introduzca bitrate de video (numero entre 1000-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" = "" ]; then
BIT=2300
fi
# comprueba, guarda y copia el nuevo playlist
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo "Ya existe una copia anterior del playlist de kplayer. Pulse ENTER para conservarla (por defecto) o introduzca r para reemplazarla : "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
fi
echo "[Playlist Entries]
Entries=2
Entry 0=file:///"$HOME"/test0.mpg
Entry 1=file:///"$HOME"/test1.mpg
Selected 0=false
Selected 1=false" > $HOME/.kde/share/config/kplayerplaylistrc
#primera ejecucion para lanzar kplayer
mp1e -v -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 > $HOME/test0.mpg | kplayer $HOME/test0.mpg $HOME/test1.mpg
#repetir lo mimso hasta que se pulse Control-C en la consola u ocurra un error
while [ $? = 0 ]; do
mp1e -v -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 > $HOME/test1.mpg
if [ $? = 0 ]; then
mp1e -v -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 > $HOME/test0.mpg
fi
done
echo "Ha ocurrido un error. Pulse ENTER para borrar los archivos buffer "$HOME"/test0.mpg y "$HOME"/test1.mpg ..."
read TECLA
rm $HOME/test0.mpg
rm $HOME/test1.mpg
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 1
#********************************************************************
# NOTAS:
#
#Version final...
#
#
#picpic
#
#
# timeshift.sh - script para hacer timeshift con kplayer
#
#funcion para gestionar la salida al pulsar Control-C
function salir()
{
echo
echo "Finalizado. Pulse ENTER para borrar los archivos buffer "$HOME"/test0.mpg y "$HOME"/test1.mpg ..."
read TECLA
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
rm $HOME/test0.mpg
rm $HOME/test1.mpg
exit 0
}
trap "salir" 2
#preguntar tamaño del buffer y bitrate
clear
echo "Primero ejecute cualquier programa de television para seleccionar el canal y establecer los valores de brillo, contraste y color."
echo "Los rangos de valores sugeridos puede superarlos en algunos casos."
echo
echo "Introduzca minutos del buffer (numero entre 1 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" = "" ]; then
MIN=15
fi
echo
echo "Introduzca bitrate de video (numero entre 1000-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" = "" ]; then
BIT=2300
fi
echo
echo "Introduzca bitrate de audio (numero entre 40-128) o pulse ENTER para 80 kbps (por defecto): "
read BAT
if [ "$BAT" = "" ]; then
BAT=80
fi
echo
echo "Introduzca numero del modo de audio (0 = estereo, 2 = dual) o pulse ENTER para 3 (mono, por defecto): "
read AUD
if [ "$AUD" = "" ]; then
AUD=3
fi
# comprueba, guarda y copia el nuevo playlist
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo
echo "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca r para reemplazarla por otra posterior: "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
echo "[Playlist Entries]
Entries=2
Entry 0=file:///"$HOME"/test0.mpg
Entry 1=file:///"$HOME"/test1.mpg
Selected 0=false
Selected 1=false" > $HOME/.kde/share/config/kplayerplaylistrc
#primera ejecucion para lanzar kplayer
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$HOME/test0.mpg | kplayer $HOME/test0.mpg $HOME/test1.mpg
#repetir lo mimso hasta que se pulse Control-C en la consola u ocurra un error
while [ $? = 0 ]; do
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$HOME/test1.mpg
if [ $? = 0 ]; then
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$HOME/test0.mpg
fi
done
echo
echo "Ha ocurrido un error. Pulse ENTER para borrar los archivos buffer "$HOME"/test0.mpg y "$HOME"/test1.mpg ..."
read TECLA
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
rm $HOME/test0.mpg
rm $HOME/test1.mpg
exit 1
# ******************************************************************************************************************************++++
#
# timeshift.sh version final para debian sarge (kernel 2.6.8-3-386, gnome 2.8.2, alsa, bttv-v4l2, mpe1 1.9.5, kplayer 0.5.3)
#
#script para hacer algo parecido al timeshift con las opciones por defecto de kplayer y
# ***con la repeticion de la lista de reproduccion activada***
#
#
#Notas de la ultima version:
#
#-Corregido un bug con el tratamiento del playlist de kplayer
#
#-Nuevas opciones para el sonido
#
#Problemas con el sonido?...mirar los volumenes y controles iniciales del mezclador (AC97, PCM, Wave, Line, Capture,...),
# o en el man de mp1e (cambiar-añadir en los comandos mp1e del script las opciones -r -p ...)
#
#picpic
#
#!/bin/sh
#
# timeshift.sh - script para hacer timeshift con kplayer, grabar o camara de vigilancia
#
# Copyright 2006 Antonio Ruiz
# Licensed under the GNU General Public License, version 2. See the file
# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
#preguntar la funcion del script
clear
echo "Primero ejecute cualquier programa de television para seleccionar el canal (o la entrada de video) y establecer los valores de brillo, contraste y color si no lo ha hecho ya antes."
echo
echo "Cierre todo programa de television que este funcionando antes de continuar. Los rangos de valores sugeridos puede superarlos en algunos casos."
echo
echo "Elija el numero de la funcion deseada (1 = Grabacion de video, 2 = Camara de vigilancia) o pulse ENTER para 3 (= TV Timeshift):"
read FUN
if [ "$FUN" = "" ]; then
FUN=3
fi
# se ha elegido la funcion TV timeshift
if [ "$FUN" = "3" ]; then
#funcion para gestionar la salida al pulsar Control-C
function salir3()
{
echo
echo "Finalizado. Pulse ENTER para borrar los archivos buffer "$HOME"/test0.mpg y "$HOME"/test1.mpg ..."
read TECLA
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$TECLA" = "" ]; then
rm $HOME/test0.mpg
rm $HOME/test1.mpg
else echo ""$HOME"/test0.mpg y "$HOME"/test1.mpg NO han sido borrados."
fi
exit 0
}
trap "salir3" 2
#preguntar datos
echo "Introduzca minutos del buffer (numero entre 1 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" = "" ]; then
MIN=15
fi
echo
echo "Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" = "" ]; then
BIT=2300
fi
echo
echo "Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 80 kbps (por defecto): "
read BAT
if [ "$BAT" = "" ]; then
BAT=80
fi
echo
echo "Introduzca numero del modo de audio (0 = estereo, 2 = dual) o pulse ENTER para 3 (mono, por defecto): "
read AUD
if [ "$AUD" = "" ]; then
AUD=3
fi
# comprueba, guarda y copia el nuevo playlist
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo
echo "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca r para reemplazarla por otra posterior: "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
echo "[Playlist Entries]
Entries=2
Entry 0=file:///"$HOME"/test0.mpg
Entry 1=file:///"$HOME"/test1.mpg
Selected 0=false
Selected 1=false" > $HOME/.kde/share/config/kplayerplaylistrc
#primera ejecucion para lanzar kplayer
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$HOME/test0.mpg | kplayer $HOME/test0.mpg $HOME/test1.mpg
#repetir lo mimso hasta que se pulse Control-C en la consola u ocurra un error
while [ $? = 0 ]; do
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$HOME/test1.mpg
if [ $? = 0 ]; then
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$HOME/test0.mpg
fi
done
echo
echo "Ha ocurrido un error. Pulse ENTER para borrar los archivos buffer "$HOME"/test0.mpg y "$HOME"/test1.mpg ..."
read TECLA
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$TECLA" = "" ]; then
rm $HOME/test0.mpg
rm $HOME/test1.mpg
else echo ""$HOME"/test0.mpg y "$HOME"/test1.mpg NO han sido borrados."
fi
exit 1
fi
# se ha elegido la funcion de grabacion
if [ "$FUN" = "1" ]; then
#funcion para gestionar la salida al pulsar Control-C
function salir1()
{
echo
echo "Ha cortado la grabacion. Pulse ENTER ..."
read TECLA
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 0
}
trap "salir1" 2
#preguntar datos
echo "Introduzca horas de grabacion (numero entre 0 y 24) o pulse ENTER para 1 hora (por defecto): "
read HORA
if [ "$HORA" = "" ]; then
HORA=1
fi
echo "Introduzca minutos de grabacion (numero entre 0 y 59) o pulse ENTER para 0 minutos (por defecto): "
read MIN
if [ "$MIN" = "" ]; then
MIN=0
fi
echo
echo "Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2800 kbps (por defecto): "
read BIT
if [ "$BIT" = "" ]; then
BIT=2800
fi
echo
echo "Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 160 kbps (por defecto): "
read BAT
if [ "$BAT" = "" ]; then
BAT=160
fi
echo
echo "Introduzca numero del modo de audio (0 = estereo, 2 = dual) o pulse ENTER para 3 (mono, por defecto): "
read AUD
if [ "$AUD" = "" ]; then
AUD=3
fi
# comprueba, guarda y copia el nuevo playlist
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo
echo "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca r para reemplazarla por otra posterior: "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
echo "[Playlist Entries]
Entries=1
Entry 0=file:///"$HOME"/grabado.mpg
Selected 0=false" > $HOME/.kde/share/config/kplayerplaylistrc
#primera ejecucion para lanzar kplayer
echo
echo "Va a grabar un video de $HORA horas y $MIN minutos que ocupara aproximadamente $((((HORA*3600+MIN*60)*(BIT+BAT))/8192)) MBytes de disco duro. Pulse ENTER para comenzar..."
read TECLA
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n$HORA:$MIN:00 -o$HOME/grabado.mpg | kplayer $HOME/grabado.mpg
#fin de la grabacion o error
if [ $? = 0 ]; then
echo
echo "Ha finalizado la grabacion. Pulse ENTER ..."
read TECLA
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 0
else
echo
echo "Ha ocurrido un error. Pulse ENTER..."
read TECLA
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 1
fi
fi
#se ha elegido la funcion de camara de vigilancia
if [ "$FUN" = "2" ]; then
#funcion para gestionar la salida al pulsar Control-C
function salir2()
{
echo
echo "Finalizado $DATE -> $(date +%Y,%m,%e,%k,%M,%S) ..."
read TECLA
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 0
}
trap "salir2" 2
echo
echo "La funcion de camara de vigilancia guarda archivos de seis horas de video a 25/8 fps con sonido (aproximadamente 700 MBytes por cada video de seis horas... tenga en cuenta el espacio libre de disco duro). En kplayer podra ver las primeras 24 horas en directo, si ha continuado grabando el resto de videos los puede abrir de uno en uno con kplayer. No parara hasta que pulse Control-C. Pulse ENTER para comenzar..."
read TECLA
DATE=$(date +%Y,%m,%e,%k,%M,%S)
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo
echo "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca r para reemplazarla por otra posterior: "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
echo "[Playlist Entries]
Entries=4
Entry 0=file:///"$HOME"/camara1.mpg
Entry 1=file:///"$HOME"/camara2.mpg
Entry 2=file:///"$HOME"/camara3.mpg
Entry 3=file:///"$HOME"/camara4.mpg
Selected 0=false
Selected 1=false
Selected 2=false
Selected 3=false" > $HOME/.kde/share/config/kplayerplaylistrc
mp1e -v -B32 -b0.200 -f3.125 -s320x240 -c/dev/video0 -r6,0 -z -n06:00:00 -o$HOME/camara1.mpg | kplayer $HOME/camara1.mpg $HOME/camara2.mpg $HOME/camara3.mpg $HOME/camara4.mpg
echo
echo "Ha ocurrido un error $DATE -> $(date +%Y,%m,%e,%k,%M,%S) ..."
read TECLA
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 1
fi
echo "No ha elegido ninguna de las opciones. Pulse ENTER..."
read TECLA
exit 0
# ******************************************************************************************************************************+++++
#
# timeshift.sh version final para debian sarge (kernel 2.6.8-3-386, gnome 2.8.3, alsa, bttv-v4l2, mpe1 1.9.5, kplayer 0.5.3)
#
#script para hacer algo parecido al timeshift con las opciones por defecto de kplayer y
# ***con la repeticion de la lista de reproduccion activada***
#
#
#Notas de la ultima version:
#
#-Añadidas funciones de grabacion y camara de vigilancia
#
#
#La desincronizacion audio/video se puede corregir con accesos rapidos de kplayer en tiempo real
# o con las opciones del encoder de video al pasarlo a otro formato (ej: con avidemux --> opcion timeshift -en ms !!!- en el filtro de audio).
#
#Hacer un STOP y/o cambiar fichero de la lista de reproduccion cada vez que se quiera avanzar o retroceder.
#
#Problemas con el sonido?...mirar los volumenes y controles iniciales del mezclador (AC97, PCM, Wave, Line, Capture,...),
# o en el man de mp1e (cambiar-añadir en los comandos mp1e del script las opciones -r -p ...)
#
#picpic
#
#!/bin/sh
#
# timeshift.sh - script para hacer timeshift con kplayer, grabar o camara de vigilancia
#
# Copyright 2006 Antonio Ruiz <yrmateo@yahoo.com>
# Licensed under the GNU General Public License, version 2. See the file
# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
#preguntar la funcion del script
clear
echo "Primero ejecute cualquier programa de television para seleccionar el canal (o la entrada de video) y establecer los valores de brillo, contraste y color si no lo ha hecho ya antes."
echo
echo "Cierre todo programa de television que este funcionando antes de continuar. Los rangos de valores sugeridos puede superarlos en algunos casos."
echo
echo -n "Elija el numero de la funcion deseada (1 = Grabacion de video, 2 = Camara de vigilancia) o pulse ENTER para 3 (= TV Timeshift):"
read FUN
if [ "$FUN" = "" ]; then
FUN=3
fi
ERROR=0
#path donde se guardaran los archivos
echo
echo -n "Introduzca la ruta donde se guardaran los archivos de video o pulse ENTER para "$HOME" (por defecto): "
read RUTA
if [ "$RUTA" = "" ]; then
RUTA=$HOME
fi
# se ha elegido la funcion TV timeshift
if [ "$FUN" = "3" ]; then
#funcion para gestionar la salida al pulsar Control-C
function salir3()
{
if [ "$ERROR" = "0" ]; then
echo
echo -n "Finalizado. Pulse ENTER para borrar los archivos buffer "$RUTA"/test0.mpg y "$RUTA"/test1.mpg ..."
else
echo
echo -n "Ha ocurrido un error. Pulse ENTER para borrar los archivos buffer "$RUTA"/test0.mpg y "$RUTA"/test1.mpg ..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$TECLA" = "" ]; then
rm $RUTA/test0.mpg
rm $RUTA/test1.mpg
else
echo ""$RUTA"/test0.mpg y "$RUTA"/test1.mpg NO han sido borrados."
fi
if [ "$ERROR" = "0" ]; then
exit 0
else
exit 1
fi
}
trap "salir3" 2
#preguntar datos
echo
echo -n "Introduzca minutos del buffer (numero entre 1 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" = "" ]; then
MIN=15
fi
echo
echo -n "Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" = "" ]; then
BIT=2300
fi
echo
echo -n "Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 80 kbps (por defecto): "
read BAT
if [ "$BAT" = "" ]; then
BAT=80
fi
echo
echo -n "Introduzca numero del modo de audio (0 = estereo, 2 = dual) o pulse ENTER para 3 (mono, por defecto): "
read AUD
if [ "$AUD" = "" ]; then
AUD=3
fi
# comprueba, guarda y copia el nuevo playlist
echo
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo
echo -n "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca r para reemplazarla por otra posterior: "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
echo "[Playlist Entries]
Entries=2
Entry 0=file:///"$RUTA"/test0.mpg
Entry 1=file:///"$RUTA"/test1.mpg
Selected 0=false
Selected 1=false" > $HOME/.kde/share/config/kplayerplaylistrc
#primera ejecucion para lanzar kplayer
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test0.mpg | kplayer $RUTA/test0.mpg $RUTA/test1.mpg
#repetir lo mimso hasta que se pulse Control-C en la consola u ocurra un error
while [ $? = 0 ]; do
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test1.mpg
if [ $? = 0 ]; then
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test0.mpg
fi
done
ERROR=1
echo
echo -n "Ha ocurrido un error. Pulse ENTER para borrar los archivos buffer "$RUTA"/test0.mpg y "$RUTA"/test1.mpg ..."
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$TECLA" = "" ]; then
rm $RUTA/test0.mpg
rm $RUTA/test1.mpg
else echo ""$RUTA"/test0.mpg y "$RUTA"/test1.mpg NO han sido borrados."
fi
exit 1
fi
# se ha elegido la funcion de grabacion
if [ "$FUN" = "1" ]; then
#funcion para gestionar la salida al pulsar Control-C
DATE=$(date +%Y%m%d_%H%M%S)
function salir1()
{
if [ "$ERROR" = "0" ]; then
echo
echo "Ha cortado la grabacion. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER ..."
else
echo
echo "Ha ocurrido un error. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$ERROR" = "0" ]; then
exit 0
else
exit 1
fi
}
trap "salir1" 2
#preguntar datos
echo
echo -n "Introduzca horas de grabacion (numero entre 0 y 24) o pulse ENTER para 1 hora (por defecto): "
read HORA
if [ "$HORA" = "" ]; then
HORA=1
fi
echo
echo -n "Introduzca minutos de grabacion (numero entre 0 y 59) o pulse ENTER para 0 minutos (por defecto): "
read MIN
if [ "$MIN" = "" ]; then
MIN=0
fi
echo
echo -n "Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2800 kbps (por defecto): "
read BIT
if [ "$BIT" = "" ]; then
BIT=2800
fi
echo
echo -n "Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 160 kbps (por defecto): "
read BAT
if [ "$BAT" = "" ]; then
BAT=160
fi
echo
echo -n "Introduzca numero del modo de audio (2 = dual, 3 = mono) o pulse ENTER para 0 (estereo, por defecto): "
read AUD
if [ "$AUD" = "" ]; then
AUD=0
fi
# comprueba, guarda y copia el nuevo playlist
echo
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo
echo -n "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca r para reemplazarla por otra posterior: "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
#primera ejecucion para lanzar kplayer
echo
echo "Va a grabar un video de $HORA horas y $MIN minutos que ocupara aproximadamente $((((HORA*3600+MIN*60)*(BIT+BAT))/8192)) MBytes de disco duro. Pulse ENTER para comenzar..."
read TECLA
DATE=$(date +%Y%m%d_%H%M%S)
echo "[Playlist Entries]
Entries=1
Entry 0=file:///"$RUTA"/grabado"$DATE".mpg
Selected 0=false" > $HOME/.kde/share/config/kplayerplaylistrc
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n$HORA:$MIN:00 -o$RUTA/grabado$DATE.mpg | kplayer $RUTA/grabado$DATE.mpg
#fin de la grabacion o error
if [ $? = 0 ]; then
echo
echo "Ha finalizado la grabacion. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER ..."
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 0
else
ERROR=1
echo
echo "Ha ocurrido un error. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER..."
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 1
fi
fi
#se ha elegido la funcion de camara de vigilancia
if [ "$FUN" = "2" ]; then
DATE=$(date +%Y%m%d_%H%M%S)
#funcion para gestionar la salida al pulsar Control-C
function salir2()
{
if [ "$ERROR" = "0" ]; then
echo
echo "Finalizado. Archivos de video guardados como "$RUTA"/cam"$DATE"-*.mpg ($DATE -> $(date +%Y%m%d_%H%M%S) ..."
else
echo
echo "Ha ocurrido un error. Archivos de video guardados como "$RUTA"/cam"$DATE"-*.mpg ($DATE -> $(date +%Y%m%d_%H%M%S) ..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$ERROR" = "0" ]; then
exit 0
else
exit 1
fi
}
trap "salir2" 2
echo
echo "La funcion de camara de vigilancia guarda archivos de seis horas de video a 25/8 fps con sonido (aproximadamente 700 MBytes por cada video de seis horas... tenga en cuenta el espacio libre de disco duro). En kplayer podra ver las primeras 24 horas en directo, si ha continuado grabando el resto de videos los puede abrir de uno en uno con kplayer. No parara hasta que pulse Control-C. Pulse ENTER para comenzar..."
read TECLA
echo
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo
echo -n "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca r para reemplazarla por otra posterior: "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
DATE=$(date +%Y%m%d_%H%M%S)
echo "[Playlist Entries]
Entries=4
Entry 0=file:///"$RUTA"/cam"$DATE"-1.mpg
Entry 1=file:///"$RUTA"/cam"$DATE"-2.mpg
Entry 2=file:///"$RUTA"/cam"$DATE"-3.mpg
Entry 3=file:///"$RUTA"/cam"$DATE"-4.mpg
Selected 0=false
Selected 1=false
Selected 2=false
Selected 3=false" > $HOME/.kde/share/config/kplayerplaylistrc
mp1e -v -B32 -b0.200 -f3.125 -s320x240 -c/dev/video0 -r6,0 -z -n06:00:00 -o$RUTA/cam$DATE-1.mpg | kplayer $RUTA/cam$DATE-1.mpg $RUTA/cam$DATE-2.mpg $RUTA/cam$DATE-3.mpg $RUTA/cam$DATE-4.mpg
ERROR=1
echo
echo "Ha ocurrido un error. Archivos de video guardados como "$RUTA"/cam"$DATE"-*.mpg ($DATE -> $(date +%Y%m%d_%H%M%S) ..."
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 1
fi
echo
echo "No ha elegido ninguna de las opciones. Pulse ENTER..."
read TECLA
exit 0
# ******************************************************************************************************************************++++++
#
# timeshift.sh version final para debian sarge (kernel 2.6.8-3-386, gnome 2.8.3, alsa, bttv-v4l2, mpe1 1.9.5, kplayer 0.5.3)
#
#script para hacer algo parecido al timeshift con las opciones por defecto de kplayer y
# ***con la repeticion de la lista de reproduccion activada***
#
#
#Notas de la ultima version:
#
#-Añadida opcion para elegir la ruta donde se guardan los archivos de video
#
#-Cambiado el nombre de los videos grabados, con la fecha y hora incluidas.
#
#-Corregido un bug que destruia el playlist en modo grabacion si no era cerrado kplayer
#
#-Mejorada la robustez del script en caso de algun error con kplayer.
#
#
#AYUDA:
#
#Hacer un STOP y/o cambiar fichero de la lista de reproduccion cada vez que se quiera avanzar o retroceder.
#
#La desincronizacion audio/video se puede corregir con accesos rapidos de kplayer en tiempo real
# o con las opciones del encoder de video al pasarlo a otro formato (ej: con avidemux --> opcion timeshift -en milisegundos !!!- en el filtro de audio)
#
#Es necesario cambiar el nombre de los test*.mpg o borrar los antiguos archvos de indices del video, que pueden generar avidemux u otros programas, antes de editarlos o convertirlos a otro formato mas pequeño.
#
#Problemas con el sonido?...mirar los volumenes y controles iniciales del mezclador (AC97, PCM, Wave, Line, Capture,...),
# o en el man de mp1e (cambiar-añadir en los comandos mp1e del script las opciones -r -p ... el script asume por defecto la tarjeta de sonido /dev/mixer)
#
#timeshift.sh asume, por defecto, que la tarjeta de television es /dev/video0 (si esto no es asi: cambiar todas las lineas del script donde aparezca)
#
#
#lista de POR HACER:
#
#-opcion para convertir el video grabado a otros formatos tipicos
#-grabar efectos especiales de video en tiempo real con effectv y vloopback
#-varias camaras a la vez con la funcion camara de vigilancia
#-version en ingles
#...
#
#
#picpic
#!/bin/sh
#
# timeshift.sh - script para hacer timeshift con kplayer, grabar o camara de vigilancia
#
# Copyright 2006 Antonio Ruiz <yrmateo@yahoo.com>
# Licensed under the GNU General Public License, version 2. See the file
# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
#preguntar la funcion del script
clear
echo "Primero ejecute cualquier programa de television para seleccionar el canal (o la entrada de video) y establecer los valores de brillo, contraste y color si no lo ha hecho ya antes."
echo
echo "Cierre todo programa de television que este funcionando antes de continuar. Los rangos de valores sugeridos puede superarlos en algunos casos."
echo
echo -n "Elija el numero de la funcion deseada (1 = Grabacion de video, 2 = Camara de vigilancia) o pulse ENTER para 3 (= TV Timeshift):"
read FUN
if [ "$FUN" = "" ]; then
FUN=3
fi
ERROR=0
#path donde se guardaran los archivos
echo
echo -n "Introduzca la ruta donde se guardaran los archivos de video o pulse ENTER para "$HOME" (por defecto): "
read RUTA
if [ "$RUTA" = "" ]; then
RUTA=$HOME
fi
# se ha elegido la funcion TV timeshift
if [ "$FUN" = "3" ]; then
#funcion para gestionar la salida al pulsar Control-C
function salir3()
{
trap '' 2
if [ "$ERROR" = "0" ]; then
echo
echo -n "Finalizado. Pulse ENTER para borrar los archivos buffer "$RUTA"/test0.mpg y "$RUTA"/test1.mpg ..."
else
echo
echo -n "Ha ocurrido un error. Pulse ENTER para borrar los archivos buffer "$RUTA"/test0.mpg y "$RUTA"/test1.mpg ..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$TECLA" = "" ]; then
rm $RUTA/test0.mpg
rm $RUTA/test1.mpg
else
echo ""$RUTA"/test0.mpg y "$RUTA"/test1.mpg NO han sido borrados."
fi
if [ "$ERROR" = "0" ]; then
exit 0
else
exit 1
fi
}
trap "salir3" 2
#preguntar datos
echo
echo -n "Introduzca minutos del buffer (numero entre 1 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" = "" ]; then
MIN=15
fi
echo
echo -n "Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" = "" ]; then
BIT=2300
fi
echo
echo -n "Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 80 kbps (por defecto): "
read BAT
if [ "$BAT" = "" ]; then
BAT=80
fi
echo
echo -n "Introduzca numero del modo de audio (0 = estereo, 2 = dual) o pulse ENTER para 3 (mono, por defecto): "
read AUD
if [ "$AUD" = "" ]; then
AUD=3
fi
# comprueba, guarda y copia el nuevo playlist
echo
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo
echo -n "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca r para reemplazarla por otra posterior: "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
echo "[Playlist Entries]
Entries=2
Entry 0=file:///"$RUTA"/test0.mpg
Entry 1=file:///"$RUTA"/test1.mpg
Selected 0=false
Selected 1=false" > $HOME/.kde/share/config/kplayerplaylistrc
#primera ejecucion para lanzar kplayer
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test0.mpg | kplayer $RUTA/test0.mpg $RUTA/test1.mpg
#repetir lo mimso hasta que se pulse Control-C en la consola u ocurra un error
while [ $? = 0 ]; do
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test1.mpg
if [ $? = 0 ]; then
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test0.mpg
fi
done
ERROR=1
echo
echo -n "Ha ocurrido un error. Pulse ENTER para borrar los archivos buffer "$RUTA"/test0.mpg y "$RUTA"/test1.mpg ..."
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$TECLA" = "" ]; then
rm $RUTA/test0.mpg
rm $RUTA/test1.mpg
else echo ""$RUTA"/test0.mpg y "$RUTA"/test1.mpg NO han sido borrados."
fi
exit 1
fi
# se ha elegido la funcion de grabacion
if [ "$FUN" = "1" ]; then
#funcion para gestionar la salida al pulsar Control-C
DATE=$(date +%Y%m%d_%H%M%S)
function salir1()
{
trap '' 2
if [ "$ERROR" = "0" ]; then
echo
echo "Ha cortado la grabacion. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER ..."
else
echo
echo "Ha ocurrido un error. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$ERROR" = "0" ]; then
exit 0
else
exit 1
fi
}
trap "salir1" 2
#preguntar datos
echo
echo -n "Introduzca horas de grabacion (numero entre 0 y 24) o pulse ENTER para 1 hora (por defecto): "
read HORA
if [ "$HORA" = "" ]; then
HORA=1
fi
echo
echo -n "Introduzca minutos de grabacion (numero entre 0 y 59) o pulse ENTER para 0 minutos (por defecto): "
read MIN
if [ "$MIN" = "" ]; then
MIN=0
fi
echo
echo -n "Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2800 kbps (por defecto): "
read BIT
if [ "$BIT" = "" ]; then
BIT=2800
fi
echo
echo -n "Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 160 kbps (por defecto): "
read BAT
if [ "$BAT" = "" ]; then
BAT=160
fi
echo
echo -n "Introduzca numero del modo de audio (2 = dual, 3 = mono) o pulse ENTER para 0 (estereo, por defecto): "
read AUD
if [ "$AUD" = "" ]; then
AUD=0
fi
# comprueba, guarda y copia el nuevo playlist
echo
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo
echo -n "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca r para reemplazarla por otra posterior: "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
#primera ejecucion para lanzar kplayer
echo
echo "Va a grabar un video de $HORA horas y $MIN minutos que ocupara aproximadamente $((((HORA*3600+MIN*60)*(BIT+BAT))/8192)) MBytes de disco duro. Pulse ENTER para comenzar..."
read TECLA
DATE=$(date +%Y%m%d_%H%M%S)
echo "[Playlist Entries]
Entries=1
Entry 0=file:///"$RUTA"/grabado"$DATE".mpg
Selected 0=false" > $HOME/.kde/share/config/kplayerplaylistrc
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n$HORA:$MIN:00 -o$RUTA/grabado$DATE.mpg | kplayer $RUTA/grabado$DATE.mpg
#fin de la grabacion o error
if [ $? = 0 ]; then
echo
echo "Ha finalizado la grabacion. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER ..."
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 0
else
ERROR=1
echo
echo "Ha ocurrido un error. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER..."
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 1
fi
fi
#se ha elegido la funcion de camara de vigilancia
if [ "$FUN" = "2" ]; then
DATE=$(date +%Y%m%d_%H%M%S)
#funcion para gestionar la salida al pulsar Control-C
function salir2()
{
trap '' 2
if [ "$ERROR" = "0" ]; then
echo
echo "Finalizado. Archivos de video guardados como "$RUTA"/cam"$DATE"-*.mpg ($DATE -> $(date +%Y%m%d_%H%M%S). Pulse ENTER ..."
else
echo
echo "Ha ocurrido un error. Archivos de video guardados como "$RUTA"/cam"$DATE"-*.mpg ($DATE -> $(date +%Y%m%d_%H%M%S). Pulse ENTER ..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$ERROR" = "0" ]; then
exit 0
else
exit 1
fi
}
trap "salir2" 2
echo
echo "La funcion de camara de vigilancia guarda archivos de seis horas de video a 25/8 fps con sonido (aproximadamente 700 MBytes por cada video de seis horas... tenga en cuenta el espacio libre de disco duro). En kplayer podra ver las primeras 24 horas en directo, si ha continuado grabando el resto de videos los puede abrir de uno en uno con kplayer. No parara hasta que pulse Control-C. Pulse ENTER para comenzar..."
read TECLA
echo
cat $HOME/kplayerplaylistrc.back
if [ $? = 0 ]; then
echo
echo -n "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca r para reemplazarla por otra posterior: "
read REE
if [ "$REE" = "r" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
DATE=$(date +%Y%m%d_%H%M%S)
echo "[Playlist Entries]
Entries=4
Entry 0=file:///"$RUTA"/cam"$DATE"-1.mpg
Entry 1=file:///"$RUTA"/cam"$DATE"-2.mpg
Entry 2=file:///"$RUTA"/cam"$DATE"-3.mpg
Entry 3=file:///"$RUTA"/cam"$DATE"-4.mpg
Selected 0=false
Selected 1=false
Selected 2=false
Selected 3=false" > $HOME/.kde/share/config/kplayerplaylistrc
mp1e -v -B32 -b0.200 -f3.125 -s320x240 -c/dev/video0 -r6,0 -z -n06:00:00 -o$RUTA/cam$DATE-1.mpg | kplayer $RUTA/cam$DATE-1.mpg $RUTA/cam$DATE-2.mpg $RUTA/cam$DATE-3.mpg $RUTA/cam$DATE-4.mpg
ERROR=1
echo
echo "Ha ocurrido un error. Archivos de video guardados como "$RUTA"/cam"$DATE"-*.mpg ($DATE -> $(date +%Y%m%d_%H%M%S). Pulse ENTER ..."
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 1
fi
echo
echo "No ha elegido ninguna de las opciones. Pulse ENTER..."
read TECLA
exit 0
# ******************************************************************************************************************************+++++++
#
# timeshift.sh version final para debian sarge (kernel 2.6.8-3-386, gnome 2.8.3, alsa, bttv-v4l2, mpe1 1.9.5, kplayer 0.5.3)
#
#script para hacer algo parecido al timeshift con las opciones por defecto de kplayer y
# ***con la repeticion de la lista de reproduccion activada***
#
#
#Notas de la ultima version:
#
#-Añadida opcion para elegir la ruta donde se guardan los archivos de video
#
#-Cambiado el nombre de los videos grabados, con la fecha y hora incluidas.
#
#-Corregido un bug que destruia el playlist en modo grabacion si no era cerrado kplayer
#
#-Mejorada la robustez del script en caso de algun error con kplayer.
#
# --Corregido un bug al pulsar dos veces control-c
#
#
#AYUDA:
#
#Hacer un STOP y/o cambiar fichero de la lista de reproduccion cada vez que se quiera avanzar o retroceder.
#
#La desincronizacion audio/video se puede corregir con accesos rapidos de kplayer en tiempo real
# o con las opciones del encoder de video al pasarlo a otro formato (ej: con avidemux --> opcion timeshift -en milisegundos !!!- en el filtro de audio)
#
#Es necesario cambiar el nombre de los test*.mpg o borrar los antiguos archvos de indices del video, que pueden generar avidemux u otros programas, antes de editarlos o convertirlos a otro formato mas pequeño.
#
#Problemas con el sonido?...mirar los volumenes y controles iniciales del mezclador (AC97, PCM, Wave, Line, Capture,...),
# o en el man de mp1e (cambiar-añadir en los comandos mp1e del script las opciones -r -p ... el script asume por defecto la tarjeta de sonido /dev/mixer)
#
#timeshift.sh asume, por defecto, que la tarjeta de television es /dev/video0 (si esto no es asi: cambiar todas las lineas del script donde aparezca)
#
#
#lista de POR HACER:
#
#-opcion para convertir el video grabado a otros formatos tipicos
#-grabar efectos especiales de video en tiempo real con effectv y vloopback
#-varias camaras a la vez con la funcion camara de vigilancia
#-version en ingles
#...
#
#
#picpic
#!/bin/sh
#
# timeshift.sh - script para hacer timeshift con kplayer, grabar o camara de vigilancia
#
# Copyright (C) 2006 Antonio Ruiz <yrmateo@yahoo.com>
#
# Licensed under the GNU General Public License, version 2. See the file
# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
#
#Este programa es software libre. Ud. lo puede redistribuir y/o modificar bajo los términos de la Licencia Pública General de GNU publicada por #la Free Software Foundation, ya sea la versión 2 de la Licencia o (a opción suya) cualquier versión posterior.
#
#Este programa se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA ALGUNA, ni siquiera la garantía implícita de COMERCIABILIDAD o #APTITUD PARA UN PROPÓSITO ESPECÍFICO. Véase la Licencia Pública General de GNU para más detalles. [[[[[
#
#Ud. debe haber recibido una copia de la Licencia Pública General de GNU junto con este programa; en caso que no, escriba a la Free Software #Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#informacion general y preguntar la funcion del script
clear
echo "timeshift.sh versión 2.69, Copyright (C) 2006 Antonio Ruiz"
echo "timeshift.sh no ofrece ABSOLUTAMENTE NINGUNA GARANTÍA. Este programa es software libre, y Ud. lo puede redistribuir libremente bajo ciertas condiciones. Para más detalles: http://www.gnu.org/copyleft/gpl.txt"
echo
echo "Primero ejecute cualquier programa de television para seleccionar el canal (o la entrada de video) y establecer los valores de brillo, contraste y color si no lo ha hecho ya antes."
echo
echo "Cierre todo programa de television que este funcionando antes de continuar. Los rangos de valores sugeridos puede superarlos en algunos casos."
echo
echo -n "Elija el numero de la funcion deseada (1 = Grabacion de video, 2 = Camara de vigilancia, 4 = TV Timeshift version 2 TESTING) o pulse ENTER para 3 (= TV Timeshift):"
read FUN
if [ "$FUN" == "" ]; then
FUN="3"
fi
ERROR=0
#path donde se guardaran los archivos
echo
echo -n "Introduzca la ruta donde se guardaran los archivos de video o pulse ENTER para "$HOME" (por defecto): "
read RUTA
if [ "$RUTA" == "" ]; then
RUTA=$HOME
fi
# se ha elegido la funcion TV timeshift
if [ "$FUN" == "3" ]; then
#funcion para gestionar la salida al pulsar Control-C
function salir3()
{
trap '' 2
if [ $ERROR -eq 0 ]; then
echo
echo -n "Finalizado. Pulse ENTER para borrar los archivos buffer "$RUTA"/test0.mpg y "$RUTA"/test1.mpg o introduzca cualquier caracter para mantenerlos ..."
else
echo
echo -n "Ha ocurrido un error. Pulse ENTER para borrar los archivos buffer "$RUTA"/test0.mpg y "$RUTA"/test1.mpg o introduzca cualquier caracter para manternerlos ..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$TECLA" == "" ]; then
rm $RUTA/test0.mpg
rm $RUTA/test1.mpg
else
echo ""$RUTA"/test0.mpg y "$RUTA"/test1.mpg NO han sido borrados."
fi
if [ $ERROR -eq 0 ]; then
exit 0
else
exit 1
fi
}
trap "salir3" 2
#preguntar datos
echo
echo -n "Introduzca minutos de cada buffer (numero entre 1 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" == "" ]; then
MIN=15
fi
echo
echo -n "Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" == "" ]; then
BIT=2300
fi
echo
echo -n "Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 80 kbps (por defecto): "
read BAT
if [ "$BAT" == "" ]; then
BAT=80
fi
echo
echo "Para los buffers se van a usar aproximadamente $((((MIN*120)*(BIT+BAT))/8192)) MBytes de disco duro..."
echo
echo -n "Introduzca numero del modo de audio (0 = estereo, 2 = dual) o pulse ENTER para 3 (mono, por defecto): "
read AUD
if [ "$AUD" == "" ]; then
AUD=3
fi
# comprueba, guarda y copia el nuevo playlist
echo
cat $HOME/kplayerplaylistrc.back
if [ $? -eq 0 ]; then
echo
echo -n "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca cualquier caracter para reemplazarla por otra posterior: "
read REE
if [ "$REE" != "" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
echo -e "[Playlist Entries]\nEntries=2\nEntry 0=file:///"$RUTA"/test0.mpg\nEntry 1=file:///"$RUTA"/test1.mpg\nSelected 0=false\nSelected 1=false" > $HOME/.kde/share/config/kplayerplaylistrc
#primera ejecucion para lanzar kplayer
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test0.mpg | kplayer $RUTA/test0.mpg $RUTA/test1.mpg
#repetir lo mimso hasta que se pulse Control-C en la consola u ocurra un error
while [ $? -eq 0 ]; do
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test1.mpg
if [ $? -eq 0 ]; then
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test0.mpg
fi
done
ERROR=1
salir3
fi
# se ha elegido la funcion TV timeshift version 2
if [ "$FUN" == "4" ]; then
#funcion para gestionar la salida al pulsar Control-C
function salir4()
{
trap '' 2
kill $(pidof mp1e)
kill $(pidof kplayer)
if [ $ERROR -eq 0 ]; then
echo
echo -n "Finalizado. Pulse ENTER para borrar los "$BUF" archivos buffers "$RUTA"/test*.mpg o introduzca cualquier caracter para mantenerlos ..."
else
echo
echo -n "Ha ocurrido un error. Pulse ENTER para borrar los "$BUF" archivos buffers "$RUTA"/test0.mpg o introduzca cualquier caracter para manternerlos ..."
fi
read TECLA
if [ $N -lt $((LIM-BUF)) ]; then #comprueba la posibilidad de unir los buffers
echo
echo -n "Introduzca cualquier caracter para unir los buffers en un solo archivo de video o pulse ENTER: "
read TECLB
if [ "$TECLB" != "" ]; then
X=$N
DATE=$(date +%Y%m%d_%H%M%S)
echo "Paso 1/"$BUF". Uniendo en "$RUTA"/grabado"$DATE".mpg ..."
cat $RUTA/test$N.mpg > $RUTA/grabado$DATE.mpg
while [ $((X+1)) -lt $((N+BUF)) ] && [ $? -eq 0 ]; do
X=$((X+1))
echo "Paso "$((X+1-N))"/"$BUF". Uniendo en "$RUTA"/grabado"$DATE".mpg ..."
cat $RUTA/test$X.mpg >> $RUTA/grabado$DATE.mpg
done
if [ -f $RUTA/test$((X+1)).mpg ] && [ $? -eq 0 ]; then # a veces queda un ultimo trozo
X=$((X+1))
echo "Eh!, quedaba uno mas. Paso "$((X+1-N))"/"$BUF". Uniendo en "$RUTA"/grabado"$DATE".mpg ..."
cat $RUTA/test$X.mpg >> $RUTA/grabado$DATE.mpg
fi
if [ $? -eq 0 ]; then
echo "Finalizado. Video guardado en "$RUTA"/grabado"$DATE".mpg ..."
else
echo "Ha ocurrido un error al guardar "$RUTA"/grabado"$DATE".mpg ..."
TECLA=1
fi
fi
fi
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$TECLA" == "" ]; then
X=$N
while [ $X -lt $((N+BUF)) ]; do
rm $RUTA/test$X.mpg
X=$((X+1))
if [ $X -gt $((LIM-1)) ]; then
BUF=$((X-N))
X=0
N=0
fi
done
if [ -f $RUTA/test$X.mpg ] && [ $? -eq 0 ]; then # a veces queda un ultimo trozo
rm $RUTA/test$X.mpg
fi
else
echo ""$RUTA"/test*.mpg NO han sido borrados."
fi
if [ $ERROR -eq 0 ]; then
exit 0
else
exit 1
fi
}
#funcion para repetir comando mp1e al superar el limite de buffers acumulados
function zsplit()
{
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -z -n00:$MIN:00 -o$RUTA/test0.mpg&
if [ $? -ne 0 ]; then
exit 1
fi
}
trap "salir4" 2
LIM=49 # limite de buffers
N=0 # variable contador
#preguntar datos
echo
echo -n "Introduzca numero de buffers (numero entre 2 y "$LIM") o pulse ENTER para 3 buffers (por defecto): "
read BUF
if [ "$BUF" == "" ]; then
BUF=3
fi
echo
echo -n "Introduzca minutos de cada buffer (numero entre 2 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" == "" ]; then
MIN=15
fi
echo
echo -n "Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" == "" ]; then
BIT=2300
fi
echo
echo -n "Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 80 kbps (por defecto): "
read BAT
if [ "$BAT" == "" ]; then
BAT=80
fi
echo
echo "Para los buffers se van a usar aproximadamente $((((BUF*MIN*60)*(BIT+BAT))/8192)) MBytes de disco duro..."
echo
echo -n "Introduzca numero del modo de audio (0 = estereo, 2 = dual) o pulse ENTER para 3 (mono, por defecto): "
read AUD
if [ "$AUD" == "" ]; then
AUD=3
fi
# comprueba, guarda y copia el nuevo playlist
echo
cat $HOME/kplayerplaylistrc.back
if [ $? -eq 0 ]; then
echo
echo -n "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca cualquier caracter para reemplazarla por otra posterior: "
read REE
if [ "$REE" != "" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
#construir playlist
PLA=""
while [ $N -lt $((LIM+1)) ]; do
PLA=""$PLA"Entry "$N"=file:///"$RUTA"/test"$N".mpg\n"
N=$((N+1))
done
N=0
PLB=""
while [ $N -lt $((LIM+1)) ]; do
PLB=""$PLB"Selected "$N"=false\n"
N=$((N+1))
done
echo -e "[Playlist Entries]\nEntries="$N"\n"$PLA"\n"$PLB"" > $HOME/.kde/share/config/kplayerplaylistrc
#argumentos de kplayer
N=0
ARG=""
while [ $N -lt $((LIM+1)) ]; do
ARG=""$ARG""$RUTA"/test"$N".mpg "
N=$((N+1))
done
#primera ejecucion y lanzar kplayer
zsplit
kplayer $ARG&
#borrar los buferes antiguos y comprobar que no se ha rebasado el limite (hasta que se pulse Control-C en la consola u ocurra un error)
N=0
SEM=0
COMP=$((BUF*MIN))
SEG=0
if [ $COMP -gt 1438 ]; then #comprobar no superado las 24 horas de buffers
echo
echo "No puede superar las 24 horas de buffers."
ERROR=1
salir4
fi
while [ $? -eq 0 ]; do #bucle 24 horas
REIN=0
CUC=0
CUCS=1
HORAA=$(($(date +%k)))
MINUTA=$(date +%M)
MINUTA="10#"$MINUTA"" #evitar valor octal
MINUTA=$((MINUTA*1))
TOMA=$((HORAA*60+MINUTA))
while [ $REIN -eq 0 ] && [ $? -eq 0 ]; do # bucle principal
sleep 10
HORAB=$(($(date +%k)))
MINUTB=$(date +%M)
MINUTB="10#"$MINUTB"" #evitar valor octal
MINUTB=$((MINUTB*1))
SEG=$(date +%S)
if [ $HORAB -eq $HORAA ] && [ $MINUTB -eq $MINUTA ] && [ $CUCS -gt 1 ]; then # reiniciar tras 24 horas
REIN=1
fi
TIME=$((CUC+HORAB*60+MINUTB-TOMA))
if [ $TIME -lt 0 ]; then #evitar problema al pasar las 23:59
CUC=$((CUC+1440-TOMA))
TIME=$((TIME+CUC))
fi
MINUTO=$((MINUTB-MINUTA))
if [ $MINUTO -lt 0 ]; then
MINUTO=$((MINUTO+60))
fi
echo
echo -n "ts-> "$TIME" - "$MINUTO":"$SEG""
echo
if [ $TIME -gt $((COMP*CUCS+N*MIN)) ]; then
if [ $SEM -eq 1 ]; then #borrar buffers ultimos tras reinicio de N
X=$((LIM-BUF+N))
rm $RUTA/test$X.mpg
echo
echo "ts-> Borrado test"$X".mpg"
if [ $N -eq $BUF ]; then
SEM=0
if [ -f $RUTA/test$LIM.mpg ]; then # suele quedar un ultimo trozo
rm $RUTA/test$LIM.mpg
echo
echo "ts-> Borrado test"$LIM".mpg"
fi
fi
else
rm $RUTA/test$N.mpg
echo
echo "ts-> Borrado test"$N".mpg"
N=$((N+1))
fi
fi
if [ $N -gt $((LIM-BUF)) ]; then #comprobar si se supero el limite de buffers acumulados
kill $(pidof mp1e)
if [ $? -eq 0 ]; then
SEM=1 #señal para el bucle while
N=0
CUCS=$((CUCS+1))
zsplit #lanza de nuevo mp1e
fi
fi
done
done
ERROR=1
salir4
fi
# se ha elegido la funcion de grabacion
if [ "$FUN" == "1" ]; then
#funcion para gestionar la salida al pulsar Control-C
DATE="_anulado"
function salir1()
{
trap '' 2
if [ $ERROR -eq 0 ]; then
echo
echo "Ha cortado la grabacion. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER ..."
else
echo
echo "Ha ocurrido un error. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ $ERROR -eq 0 ]; then
exit 0
else
exit 1
fi
}
trap "salir1" 2
#preguntar datos
echo
echo -n "Introduzca horas de grabacion (numero entre 0 y 24) o pulse ENTER para 1 hora (por defecto): "
read HORA
if [ "$HORA" == "" ]; then
HORA=1
fi
echo
echo -n "Introduzca minutos de grabacion (numero entre 0 y 59) o pulse ENTER para 0 minutos (por defecto): "
read MIN
if [ "$MIN" == "" ]; then
MIN=0
fi
echo
echo -n "Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2800 kbps (por defecto): "
read BIT
if [ "$BIT" == "" ]; then
BIT=2800
fi
echo
echo -n "Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 160 kbps (por defecto): "
read BAT
if [ "$BAT" == "" ]; then
BAT=160
fi
echo
echo -n "Introduzca numero del modo de audio (2 = dual, 3 = mono) o pulse ENTER para 0 (estereo, por defecto): "
read AUD
if [ "$AUD" == "" ]; then
AUD=0
fi
# comprueba, guarda y copia el nuevo playlist
echo
cat $HOME/kplayerplaylistrc.back
if [ $? -eq 0 ]; then
echo
echo -n "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca cualquier caracter para reemplazarla por otra posterior: "
read REE
if [ "$REE" != "" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
#primera ejecucion para lanzar kplayer
echo
echo "Va a grabar un video de $HORA horas y $MIN minutos que ocupara aproximadamente $((((HORA*3600+MIN*60)*(BIT+BAT))/8192)) MBytes de disco duro. Pulse ENTER para comenzar..."
read TECLA
DATE=$(date +%Y%m%d_%H%M%S)
echo -e "[Playlist Entries]\nEntries=1\nEntry 0=file:///"$RUTA"/grabado"$DATE".mpg\nSelected 0=false" > $HOME/.kde/share/config/kplayerplaylistrc
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n$HORA:$MIN:00 -o$RUTA/grabado$DATE.mpg | kplayer $RUTA/grabado$DATE.mpg
#fin de la grabacion o error
if [ $? -eq 0 ]; then
echo
echo "Ha finalizado la grabacion. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER ..."
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 0
else
ERROR=1
salir1
fi
fi
#se ha elegido la funcion de camara de vigilancia
if [ "$FUN" == "2" ]; then
DATE="_anulado"
#funcion para gestionar la salida al pulsar Control-C
function salir2()
{
trap '' 2
if [ $ERROR -eq 0 ]; then
echo
echo "Finalizado. Archivos de video guardados como "$RUTA"/cam"$DATE"-*.mpg ($DATE -> $(date +%Y%m%d_%H%M%S). Pulse ENTER ..."
else
echo
echo "Ha ocurrido un error. Archivos de video guardados como "$RUTA"/cam"$DATE"-*.mpg ($DATE -> $(date +%Y%m%d_%H%M%S). Pulse ENTER ..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ $ERROR -eq 0 ]; then
exit 0
else
exit 1
fi
}
trap "salir2" 2
echo
echo "La funcion de camara de vigilancia guarda archivos de seis horas de video a 25/8 fps con sonido (aproximadamente 700 MBytes por cada video de seis horas... tenga en cuenta el espacio libre de disco duro). En kplayer podra ver las primeras 24 horas en directo, si ha continuado grabando el resto de videos los puede abrir de uno en uno con kplayer. No parara hasta que pulse Control-C. Para ver los videos guardados posteriormente con los tiempos correctos utilice mplayer o kplayer. Pulse ENTER para comenzar..."
read TECLA
echo
cat $HOME/kplayerplaylistrc.back
if [ $? -eq 0 ]; then
echo
echo -n "Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca cualquier caracter para reemplazarla por otra posterior: "
read REE
if [ "$REE" != "" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
DATE=$(date +%Y%m%d_%H%M%S)
echo -e "[Playlist Entries]\nEntries=4\nEntry 0=file:///"$RUTA"/cam"$DATE"-1.mpg\nEntry 1=file:///"$RUTA"/cam"$DATE"-2.mpg\nEntry 2=file:///"$RUTA"/cam"$DATE"-3.mpg\nEntry 3=file:///"$RUTA"/cam"$DATE"-4.mpg\nSelected 0=false\nSelected 1=false\nSelected 2=false\nSelected 3=false" > $HOME/.kde/share/config/kplayerplaylistrc
mp1e -v -B32 -b0.200 -f3.125 -s320x240 -c/dev/video0 -r6,0 -z -n06:00:00 -o$RUTA/cam$DATE-1.mpg | kplayer $RUTA/cam$DATE-1.mpg $RUTA/cam$DATE-2.mpg $RUTA/cam$DATE-3.mpg $RUTA/cam$DATE-4.mpg
ERROR=1
salir2
fi
echo
echo "No ha elegido ninguna de las opciones. Pulse ENTER..."
read TECLA
exit 0
# ******************************************************************************************************************************++++++++
#
# timeshift.sh version final para debian sarge (kernel 2.6.8-3-386, gnome 2.8.3, alsa, bttv-v4l2, mpe1 1.9.5, kplayer 0.5.3)
#
#script para hacer algo parecido al timeshift (pausar, avanzar y retroceder mientras se ve la television) con las opciones por defecto de kplayer y
# ***con la repeticion de la lista de reproduccion activada***
#
#
#Notas de la ultima version:
#
#-Algunas correcciones
#
#-Nueva funcion TV Timeshift version 2 (opcional, testing): permite elegir la cantidad de buffers y se pueden unir con un simple cat
#
#
#AYUDA:
#
#Hacer un STOP y/o cambiar fichero de la lista de reproduccion cada vez que se quiera avanzar o retroceder.
#
#La desincronizacion audio/video se puede corregir con accesos rapidos de kplayer en tiempo real
# o con las opciones del encoder de video al pasarlo a otro formato (ej: con avidemux --> opcion timeshift -en milisegundos !!!- en el filtro de audio)
#
#La version 2 de la funcion TV Timeshift es mas compleja. La desincronizacion audio/video (de existir) es persistente al cambiar de buffer aunque siempre igual (si no se supera un limite interno amplio). Tiene como ventajas que los videos buffers guardados permanecen mas tiempo en memoria para avanzar y retroceder con mas margen (dependiendo de los valores elegidos en el numero de buffers y en los minutos de cada buffer) y que los buffers se pueden unir (si no se supera el anteriormmente mencionado limite interno) en un video completo con el comando cat.
#
#Es necesario cambiar el nombre de los test*.mpg o borrar los antiguos archvos de indices del video, que pueden generar avidemux u otros programas, antes de editarlos o convertirlos a otro formato mas pequeño.
#
#Problemas con el sonido?...mirar los volumenes y controles iniciales del mezclador (AC97, PCM, Wave, Line, Capture,...),
# o en el man de mp1e (cambiar-añadir en los comandos mp1e del script las opciones -r -p ... el script asume por defecto la tarjeta de sonido /dev/mixer)
#
#timeshift.sh asume, por defecto, que la tarjeta de television es /dev/video0 (si esto no es asi: cambiar todas las lineas del script donde aparezca)
#
#
#lista de POR HACER:
#
#-opcion para convertir el video grabado a otros formatos tipicos
#-grabar efectos especiales de video en tiempo real con effectv y vloopback
#-varias camaras a la vez con la funcion camara de vigilancia
#-version en ingles
#...
#
#picpic
#!/bin/sh
#
# timeshift.sh - script para TV timeshift,grabar o camara de vigilancia utilizando pocos recursos
#
# Copyright (C) 2006 Antonio Ruiz <yrmateo@yahoo.com>
#
# Licensed under the GNU General Public License, version 2. See the file
# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
#
#Este programa es software libre. Ud. lo puede redistribuir y/o modificar bajo los términos de la Licencia Pública General de GNU publicada por #la Free Software Foundation, ya sea la versión 2 de la Licencia o (a opción suya) cualquier versión posterior.
#
#Este programa se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA ALGUNA, ni siquiera la garantía implícita de COMERCIABILIDAD o #APTITUD PARA UN PROPÓSITO ESPECÍFICO. Véase la Licencia Pública General de GNU para más detalles. [[[[[
#
#Ud. debe haber recibido una copia de la Licencia Pública General de GNU junto con este programa; en caso que no, escriba a la Free Software #Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#informacion general y preguntar la funcion del script
clear
echo "timeshift.sh versión 2.85 Copyright (C) 2006 Antonio Ruiz"
echo "timeshift.sh no ofrece ABSOLUTAMENTE NINGUNA GARANTÍA. Este programa es software libre, y Ud. lo puede redistribuir libremente bajo ciertas condiciones. Para más detalles: http://www.gnu.org/copyleft/gpl.txt"
echo
echo "*** Primero ejecute cualquier programa de television para seleccionar el canal (o la entrada de video) y establecer los valores de brillo, contraste y color si no lo ha hecho ya antes ***"
echo
echo "*** Cierre todo programa de television que este funcionando antes de continuar. Los rangos de valores sugeridos puede superarlos en algunos casos ***"
echo
echo -n "¿? Elija el numero de la funcion deseada (1 = Grabacion de video, 2 = Camara de vigilancia, 3 = TV Timeshift version anterior) o pulse ENTER para 4 (= TV Timeshift v.2):"
read FUN
if [ "$FUN" == "" ]; then
FUN="4"
fi
ERROR=0
#path donde se guardaran los archivos
echo
echo -n "¿? Introduzca la ruta donde se guardaran los archivos de video o pulse ENTER para "$HOME" (por defecto): "
read RUTA
if [ "$RUTA" == "" ]; then
RUTA=$HOME
fi
# se ha elegido la funcion TV timeshift
if [ "$FUN" == "3" ]; then
#funcion para gestionar la salida al pulsar Control-C
function salir3()
{
trap '' 2
if [ $ERROR -eq 0 ]; then
echo
echo -n "¿? Finalizado. Pulse ENTER para borrar los archivos buffer "$RUTA"/test0.mpg y "$RUTA"/test1.mpg o introduzca cualquier caracter para mantenerlos ..."
else
echo
echo -n "¿? Ha ocurrido un error. Pulse ENTER para borrar los archivos buffer "$RUTA"/test0.mpg y "$RUTA"/test1.mpg o introduzca cualquier caracter para manternerlos ..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$TECLA" == "" ]; then
rm $RUTA/test0.mpg
rm $RUTA/test1.mpg
else
echo "*** "$RUTA"/test0.mpg y "$RUTA"/test1.mpg NO han sido borrados ***"
fi
if [ $ERROR -eq 0 ]; then
exit 0
else
exit 1
fi
}
trap "salir3" 2
#preguntar datos
echo
echo -n "¿? Introduzca minutos de cada buffer (numero entre 1 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" == "" ]; then
MIN=15
fi
echo
echo -n "¿? Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" == "" ]; then
BIT=2300
fi
echo
echo -n "¿? Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 80 kbps (por defecto): "
read BAT
if [ "$BAT" == "" ]; then
BAT=80
fi
echo
echo "*** Para los buffers se van a usar aproximadamente $((((MIN*120)*(BIT+BAT))/8192)) MBytes de disco duro ***"
echo
echo -n "¿? Introduzca numero del modo de audio (0 = estereo, 2 = dual) o pulse ENTER para 3 (mono, por defecto): "
read AUD
if [ "$AUD" == "" ]; then
AUD=3
fi
# comprueba, guarda y copia el nuevo playlist
echo
cat $HOME/kplayerplaylistrc.back
if [ $? -eq 0 ]; then
echo
echo -n "¿? Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca cualquier caracter para reemplazarla por otra posterior: "
read REE
if [ "$REE" != "" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
echo -e "[Playlist Entries]\nEntries=2\nEntry 0=file:///"$RUTA"/test0.mpg\nEntry 1=file:///"$RUTA"/test1.mpg\nSelected 0=false\nSelected 1=false" > $HOME/.kde/share/config/kplayerplaylistrc
#primera ejecucion para lanzar kplayer
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test0.mpg | kplayer $RUTA/test0.mpg $RUTA/test1.mpg
#repetir lo mimso hasta que se pulse Control-C en la consola u ocurra un error
while [ $? -eq 0 ]; do
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test1.mpg
if [ $? -eq 0 ]; then
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n00:$MIN:00 -o$RUTA/test0.mpg
fi
done
ERROR=1
salir3
fi
# se ha elegido la funcion TV timeshift version 2
if [ "$FUN" == "4" ]; then
#funcion para gestionar la salida al pulsar Control-C
function salir4()
{
trap '' 2
kill $(pidof mp1e)
kill $(pidof kplayer)
if [ $ERROR -eq 0 ]; then
echo
echo -n "¿? Finalizado. Pulse ENTER para borrar los "$BUF" archivos buffers "$RUTA"/test*.mpg o introduzca cualquier caracter para mantenerlos ..."
else
echo
echo -n "¿? Ha ocurrido un error. Pulse ENTER para borrar los "$BUF" archivos buffers "$RUTA"/test0.mpg o introduzca cualquier caracter para manternerlos ..."
fi
read TECLA
if [ $N -le $((LIM+1-BUF)) ]; then #comprobar posibilidad de unir los buffers
echo
echo -n "¿? Introduzca cualquier caracter para unir los buffers en un solo archivo de video o pulse ENTER: "
read TECLB
if [ "$TECLB" != "" ]; then
X=$N
DATE=$(date +%Y%m%d_%H%M%S)
echo "*** Paso 1/"$BUF". Uniendo en "$RUTA"/grabado"$DATE".mpg ***"
cat $RUTA/test$N.mpg > $RUTA/grabado$DATE.mpg
while [ $((X+1)) -lt $((N+BUF)) ] && [ $? -eq 0 ]; do
X=$((X+1))
echo "*** Paso "$((X+1-N))"/"$BUF". Uniendo en "$RUTA"/grabado"$DATE".mpg ***"
cat $RUTA/test$X.mpg >> $RUTA/grabado$DATE.mpg
done
if [ -f $RUTA/test$((X+1)).mpg ] && [ $? -eq 0 ]; then # a veces queda un ultimo trozo
X=$((X+1))
echo "*** Eh!, quedaba uno mas. Paso "$((X+1-N))"/"$BUF". Uniendo en "$RUTA"/grabado"$DATE".mpg ***"
cat $RUTA/test$X.mpg >> $RUTA/grabado$DATE.mpg
fi
if [ $? -eq 0 ]; then
echo "*** Finalizado. Video guardado en "$RUTA"/grabado"$DATE".mpg ***"
else
echo "*** Ha ocurrido un error al guardar "$RUTA"/grabado"$DATE".mpg ***"
TECLA=1
fi
fi
fi
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ "$TECLA" == "" ]; then
X=$N
while [ $X -lt $((N+BUF)) ] && [ $? -eq 0 ]; do
rm $RUTA/test$X.mpg
X=$((X+1))
if [ $X -gt $((LIM)) ]; then
if [ -f $RUTA/test$X.mpg ] && [ $? -eq 0 ]; then # a veces queda un ultimo trozo
rm $RUTA/test$X.mpg
fi
BUF=$((X-N-1))
X=0
N=0
fi
done
if [ -f $RUTA/test$X.mpg ] && [ $? -eq 0 ]; then # a veces queda un ultimo trozo
rm $RUTA/test$X.mpg
fi
else
echo "*** "$RUTA"/test*.mpg NO han sido borrados ***"
fi
if [ $ERROR -eq 0 ]; then
exit 0
else
exit 1
fi
}
#funcion para repetir comando mp1e al superar el limite de buffers acumulados
function zsplit()
{
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -z -n00:$MIN:00 -o$RUTA/test0.mpg&
}
trap "salir4" 2
LIM=48 # limite de buffers
N=0 # variable contador
#preguntar datos
echo
echo -n "¿? Introduzca numero de buffers (numero entre 2 y "$LIM") o pulse ENTER para 4 buffers (por defecto): "
read BUF
if [ "$BUF" == "" ]; then
BUF=4
fi
echo
echo -n "¿? Introduzca minutos de cada buffer (numero entre 2 y 59) o pulse ENTER para 15 minutos (por defecto): "
read MIN
if [ "$MIN" == "" ]; then
MIN=15
fi
if [ $((BUF*MIN)) -gt 1437 ]; then #comprobar no superado las 24 horas de buffers
echo
echo "*** No puede superar las 23 horas y 57 minutos de buffers ***"
exit 1
fi
echo
echo -n "¿? Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2300 kbps (por defecto): "
read BIT
if [ "$BIT" == "" ]; then
BIT=2300
fi
echo
echo -n "¿? Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 80 kbps (por defecto): "
read BAT
if [ "$BAT" == "" ]; then
BAT=80
fi
echo
echo "*** Para los buffers se van a usar aproximadamente $((((BUF*MIN*60)*(BIT+BAT))/8192)) MBytes de disco duro ***"
echo
echo -n "¿? Introduzca numero del modo de audio (0 = estereo, 2 = dual) o pulse ENTER para 3 (mono, por defecto): "
read AUD
if [ "$AUD" == "" ]; then
AUD=3
fi
# comprueba, guarda y copia el nuevo playlist
echo
cat $HOME/kplayerplaylistrc.back
if [ $? -eq 0 ]; then
echo
echo -n "¿? Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca cualquier caracter para reemplazarla por otra posterior: "
read REE
if [ "$REE" != "" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
#construir playlist
PLA=""
while [ $N -lt $((LIM+2)) ]; do
PLA=""$PLA"Entry "$N"=file:///"$RUTA"/test"$N".mpg\n"
N=$((N+1))
done
N=0
PLB=""
while [ $N -lt $((LIM+2)) ]; do
PLB=""$PLB"Selected "$N"=false\n"
N=$((N+1))
done
echo -e "[Playlist Entries]\nEntries="$N"\n"$PLA"\n"$PLB"" > $HOME/.kde/share/config/kplayerplaylistrc
#argumentos de kplayer
N=0
ARG=""
while [ $N -lt $((LIM+2)) ]; do
ARG=""$ARG""$RUTA"/test"$N".mpg "
N=$((N+1))
done
#limpiar buffers anteriores para evitar error en un posible cat al salir
X=0
while [ $X -le $((LIM+1)) ]; do
if [ -f $RUTA/test$X.mpg ]; then
rm $RUTA/test$X.mpg
echo "*** Borrando buffers antiguos ***"
fi
if [ $? -ne 0 ]; then
echo "*** Ha ocurrido un error al borrar buffers antiguos ***"
exit 1
fi
X=$((X+1))
done
#primera ejecucion y lanzar kplayer
zsplit
kplayer $ARG&
#borrar los buferes antiguos y comprobar que no se ha rebasado el limite (hasta que se pulse Control-C en la consola u ocurra un error)
N=0
GFO=0
COMP=$((BUF*MIN))
SEG=0
while [ $? -eq 0 ]; do #bucle 24 horas
SEM=0
REIN=0
CUC=0
CUCS=1
HORAA=$(($(date +%k)))
MINUTA=$(date +%M)
MINUTA="10#"$MINUTA"" #evitar valor octal
MINUTA=$((MINUTA*1))
TOMA=$((HORAA*60+MINUTA))
while [ $REIN -eq 0 ] && [ $? -eq 0 ]; do # bucle principal
sleep 10
HORAB=$(($(date +%k)))
MINUTB=$(date +%M)
MINUTB="10#"$MINUTB"" #evitar valor octal
MINUTB=$((MINUTB*1))
SEG=$(date +%S)
if [ $HORAB -eq $HORAA ] && [ $MINUTB -eq $MINUTA ] && [ $CUCS -gt 1 ]; then # reiniciar tras 24 horas
REIN=1
GFO=$N
fi
TIME=$((CUC+HORAB*60+MINUTB-TOMA))
if [ $TIME -lt 0 ]; then #evitar problema al pasar las 23:59
CUC=$((CUC+1440-TOMA))
TIME=$((TIME+CUC))
fi
MINUTO=$((MINUTB-MINUTA))
if [ $MINUTO -lt 0 ]; then
MINUTO=$((MINUTO+60))
fi
echo
echo -n "timeshift.sh->["$TIME"-"$MINUTO":"$SEG"]" #informacion interna
echo
if [ $TIME -gt $((COMP+LIM*(CUCS-1)*MIN+(CUCS-1)*SEM+(CUCS-1)*MIN+(N-GFO)*MIN)) ]; then # formula secreta
rm $RUTA/test$N.mpg
echo
echo "timeshift.sh->*** Borrado test"$N".mpg ***"
N=$((N+1))
if [ $N -eq $((LIM+2)) ]; then #reiniciar N al llegar al final del limite de buffers
SEM=1
N=0
CUCS=$((CUCS+1))
fi
if [ $N -eq $((LIM+2-BUF)) ]; then #comprobar si se supero el limite de buffers acumulados
kill $(pidof mp1e) # cerrar mp1e
sleep 1 #1 sg de espera para evitar error mp1e-alsa
zsplit #lanzar de nuevo mp1e
fi
fi
done
done
ERROR=1
salir4
fi
# se ha elegido la funcion de grabacion
if [ "$FUN" == "1" ]; then
#funcion para gestionar la salida al pulsar Control-C
DATE="_anulado"
function salir1()
{
trap '' 2
if [ $ERROR -eq 0 ]; then
echo
echo "¿? Ha cortado la grabacion. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER ..."
else
echo
echo "¿? Ha ocurrido un error. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ $ERROR -eq 0 ]; then
exit 0
else
exit 1
fi
}
trap "salir1" 2
#preguntar datos
echo
echo -n "¿? Introduzca horas de grabacion (numero entre 0 y 24) o pulse ENTER para 1 hora (por defecto): "
read HORA
if [ "$HORA" == "" ]; then
HORA=1
fi
echo
echo -n "¿? Introduzca minutos de grabacion (numero entre 0 y 59) o pulse ENTER para 0 minutos (por defecto): "
read MIN
if [ "$MIN" == "" ]; then
MIN=0
fi
echo
echo -n "¿? Introduzca bitrate de video (numero entre 300-3000) o pulse ENTER para 2800 kbps (por defecto): "
read BIT
if [ "$BIT" == "" ]; then
BIT=2800
fi
echo
echo -n "¿? Introduzca bitrate de audio (numero entre 32-224) o pulse ENTER para 160 kbps (por defecto): "
read BAT
if [ "$BAT" == "" ]; then
BAT=160
fi
echo
echo -n "¿? Introduzca numero del modo de audio (2 = dual, 3 = mono) o pulse ENTER para 0 (estereo, por defecto): "
read AUD
if [ "$AUD" == "" ]; then
AUD=0
fi
# comprueba, guarda y copia el nuevo playlist
echo
cat $HOME/kplayerplaylistrc.back
if [ $? -eq 0 ]; then
echo
echo -n "¿? Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca cualquier caracter para reemplazarla por otra posterior: "
read REE
if [ "$REE" != "" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
#primera ejecucion para lanzar kplayer
echo
echo "¿? Va a grabar un video de $HORA horas y $MIN minutos que ocupara aproximadamente $((((HORA*3600+MIN*60)*(BIT+BAT))/8192)) MBytes de disco duro. Pulse ENTER para comenzar..."
read TECLA
DATE=$(date +%Y%m%d_%H%M%S)
echo -e "[Playlist Entries]\nEntries=1\nEntry 0=file:///"$RUTA"/grabado"$DATE".mpg\nSelected 0=false" > $HOME/.kde/share/config/kplayerplaylistrc
mp1e -v -a$AUD -B$BAT -b$BIT -s320x240 -c/dev/video0 -f25 -r6,0 -n$HORA:$MIN:00 -o$RUTA/grabado$DATE.mpg | kplayer $RUTA/grabado$DATE.mpg
#fin de la grabacion o error
if [ $? -eq 0 ]; then
echo
echo "¿? Ha finalizado la grabacion. Archivo de video guardado como "$RUTA"/grabado"$DATE".mpg. Pulse ENTER ..."
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
exit 0
else
ERROR=1
salir1
fi
fi
#se ha elegido la funcion de camara de vigilancia
if [ "$FUN" == "2" ]; then
DATE="_anulado"
#funcion para gestionar la salida al pulsar Control-C
function salir2()
{
trap '' 2
if [ $ERROR -eq 0 ]; then
echo
echo "¿? Finalizado. Archivos de video guardados como "$RUTA"/cam"$DATE"-*.mpg ($DATE -> $(date +%Y%m%d_%H%M%S). Pulse ENTER ..."
else
echo
echo "¿? Ha ocurrido un error. Archivos de video guardados como "$RUTA"/cam"$DATE"-*.mpg ($DATE -> $(date +%Y%m%d_%H%M%S). Pulse ENTER ..."
fi
read TECLA
kill $(pidof kplayer)
mv $HOME/kplayerplaylistrc.back $HOME/.kde/share/config/kplayerplaylistrc #restaura playlist de kplayer
if [ $ERROR -eq 0 ]; then
exit 0
else
exit 1
fi
}
trap "salir2" 2
echo
echo "¿? La funcion de camara de vigilancia guarda archivos de seis horas de video a 25/8 fps con sonido (aproximadamente 700 MBytes por cada video de seis horas... tenga en cuenta el espacio libre de disco duro). En kplayer podra ver las primeras 24 horas en directo, si ha continuado grabando el resto de videos los puede abrir de uno en uno con kplayer. No parara hasta que pulse Control-C. Para ver los videos guardados posteriormente con los tiempos correctos utilice mplayer o kplayer. Pulse ENTER para comenzar..."
read TECLA
echo
cat $HOME/kplayerplaylistrc.back
if [ $? -eq 0 ]; then
echo
echo -n "¿? Esta es la copia guardada del playlist de kplayer de una ejecucion anterior no finalizada. Necesito guardar una copia, pulse ENTER para conservar esta (por defecto) o introduzca cualquier caracter para reemplazarla por otra posterior: "
read REE
if [ "$REE" != "" ]; then
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
else
cp $HOME/.kde/share/config/kplayerplaylistrc $HOME/kplayerplaylistrc.back
fi
DATE=$(date +%Y%m%d_%H%M%S)
echo -e "[Playlist Entries]\nEntries=4\nEntry 0=file:///"$RUTA"/cam"$DATE"-1.mpg\nEntry 1=file:///"$RUTA"/cam"$DATE"-2.mpg\nEntry 2=file:///"$RUTA"/cam"$DATE"-3.mpg\nEntry 3=file:///"$RUTA"/cam"$DATE"-4.mpg\nSelected 0=false\nSelected 1=false\nSelected 2=false\nSelected 3=false" > $HOME/.kde/share/config/kplayerplaylistrc
mp1e -v -B32 -b0.200 -f3.125 -s320x240 -c/dev/video0 -r6,0 -z -n06:00:00 -o$RUTA/cam$DATE-1.mpg | kplayer $RUTA/cam$DATE-1.mpg $RUTA/cam$DATE-2.mpg $RUTA/cam$DATE-3.mpg $RUTA/cam$DATE-4.mpg
ERROR=1
salir2
fi
echo
echo "¿? No ha elegido ninguna de las opciones. Pulse ENTER..."
read TECLA
exit 0
# ******************************************************************************************************************************+++++++++
#
# timeshift.sh version 2.85 para debian sarge (kernel 2.6.8-3-386, gnome 2.8.3, alsa, bttv-v4l2, mp1e 1.9.5, kplayer 0.5.3)
#
#script para hacer algo parecido al timeshift (pausar, avanzar y retroceder mientras se ve la television) con las opciones por defecto de kplayer y
# ***con la repeticion de la lista de reproduccion activada***
#
#
#Notas de la ultima version:
#
#-Reescrita la parte principal de la funcion timeshift version 2... pasa a ser opcion por defecto
#
#-Corregido un bug al unir los buffers en timeshift v.2 cuando quedaban buffers de una ejecucion anterior
#
#-Corregido un bug (alsa no disponible) al reiniciar mp1e en la funcion timeshift v.2
#
#-Cambios esteticos
#
#
#AYUDA:
#
#Hacer un STOP y/o cambiar archivo de la lista de reproduccion cada vez que se quiera avanzar o retroceder.
#
#La desincronizacion audio/video se puede corregir con accesos rapidos de kplayer en tiempo real
# o con las opciones del encoder de video al pasarlo a otro formato (ej: con avidemux --> opcion timeshift -en milisegundos !!!- en el filtro de audio)
#
#La version 2 de la funcion TV Timeshift es mas compleja. La desincronizacion audio/video (de existir) es persistente al cambiar de buffer aunque siempre igual (si no se supera un limite interno amplio). Tiene como ventajas que los videos buffers guardados permanecen mas tiempo en memoria para avanzar y retroceder con un margen mayor (dependiendo de los valores elegidos en el numero de buffers y en los minutos de cada buffer) y que los buffers se pueden unir (de no estar en el anteriormmente mencionado limite interno) en un video completo con el comando cat.
#
#Es necesario cambiar el nombre de los test*.mpg o borrar los antiguos archvos de indices del video, que pueden generar avidemux u otros programas, antes de editarlos o convertirlos a otro formato mas pequeño.
#
#Problemas con el sonido?...mirar los volumenes y controles iniciales del mezclador (AC97, PCM, Wave, Line, Capture,...),
# o en el man de mp1e o con el comando de ayuda mp1e -h (cambiar-añadir en los comandos mp1e del script las opciones -r -p ... el script asume por defecto la tarjeta de sonido /dev/mixer con line en el sexto lugar)
#
#timeshift.sh asume, por defecto, que la tarjeta de television es /dev/video0 (de no ser asi: cambiar todas las lineas del script donde aparezca)
#
#
#lista de POR HACER:
#
#-pagina web del script
#-opcion para convertir el video grabado a otros formatos tipicos
#-grabar efectos especiales de video en tiempo real con effectv y vloopback
#-varias camaras a la vez con la funcion camara de vigilancia
#-version en ingles
#-opcion de parametros en la linea de comandos
#-grabar con subtitulos de la pagina de teletexto
#...
#
#
#picpic
Pagina web de timeshift.sh con las ultimas versiones:
http://es.geocities.com/yrmateo/
picpic