La mayor comunidad de Debian en español

TV Timeshift en Debian Sarge


Imagen de picpic

By picpic- Publicado14 Mayo 2006

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.

Tags
Imagen de picpic

# 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
#

Imagen de 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
#

Imagen de 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
#

Imagen de 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
#

Imagen de 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&gt;.

#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
#

Imagen de 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&gt;.

#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

Imagen de 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&gt;.

#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

Imagen de 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&gt;.
#
#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&quot;
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

Imagen de 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&gt;.
#
#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&quot;
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

Imagen de picpic

Pagina web de timeshift.sh con las ultimas versiones:

http://es.geocities.com/yrmateo/

picpic

Relacionado con TV Timeshift en Debian Sarge



Buscador

Búsqueda avanzada

Inicio de sesión