El 25/01/11 09:46, Darien Alonso Camacho escribió:
Saludos.

Resulta que hace unos dias tuve necesidad de grabar mi escritorio (KDE 3.5) para despues mostrar el video resultante a otras personas, para esto use gtk-recordMyDesktop e Istanbul Desktop Session Recorder, ambos solo me dejan exportar a .ogv pero cuando intento reproducir el ogv resultante automaticamente se cierra el reproductor, he probado con el mplayer, vlc, totem, kmplayer y he instalado cuanto plugin o codec de video se me ha ocurrido y continua sucediendome lo mismo. No me quedo mas remedio que cambiar el formato del video. Por cierto la calidad con que graban estos programas que les comento es bastante mala o al menos no he logrado obtener una mejor calidad, las acciones que realizo sobre el escritorio practicamente no se distinguen. Les agradecere cualquier ayuda al respecto.

Gracias por su tiempo.
                                    -dac-



______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Hola.
Para reproducir un video ogv no creo necesites nada especial, los reproductores de Linux los aceptan sin problemas, me inclino a pensar que la cuestión radica en el video y no el reproductor. Para grabar tu escritorio, puedes intentarlo con byzanz. El video grabado puede ser .gif, .ogv, .mpg o flash.
# apt-get install byzanz
Si quieres una interface gráfica para manejarlo, hace un tiempo desarrollé una. Si tienes internet, puedes descargarla desde aquí:
http://fpp.alwaysdata.net/
Si no tienes internet:
# apt-get install python-wxgtk2.8
Este es el código de la aplicación:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.3 on Fri Jan  8 23:17:51 2010

import wx

# begin wxGlade: extracode
import subprocess
# end wxGlade

class MyTaskBarIcon(wx.TaskBarIcon):
    def __init__(self, frame):
        wx.TaskBarIcon.__init__(self)

        self.frame = frame
self.SetIcon(wx.Icon('icono.png', wx.BITMAP_TYPE_PNG), 'Grabar Pantalla')
        self.Bind(wx.EVT_MENU, self.OnTaskBarActivate, id=1)
        self.Bind(wx.EVT_MENU, self.OnTaskBarDeactivate, id=2)
        self.Bind(wx.EVT_MENU, frame.on_boton_ok, id=3)
        self.Bind(wx.EVT_MENU, self.OnTaskBarClose, id=4)

    def CreatePopupMenu(self):
        menu = wx.Menu()
        menu.Append(1, 'Mostrar opciones')
        menu.Append(2, 'Ocultar')
        menu.Append(3, 'Comenzar a grabar')
        menu.Append(4, 'Cerrar')
        return menu

    def OnTaskBarClose(self, event):
        self.frame.Close()

    def OnTaskBarActivate(self, event):
        if not self.frame.IsShown():
            self.frame.Show()

    def OnTaskBarDeactivate(self, event):
        if self.frame.IsShown():
            self.frame.Hide()

class Principal(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: Principal.__init__
        self.tskic = MyTaskBarIcon(self)
        wx.Frame.__init__(self, *args, **kwds)
        self.Bind(wx.EVT_CLOSE, self.OnClose)
        kwds["style"] = wx.FRAME_NO_TASKBAR
        self.label_fichero = wx.StaticText(self, -1, "Fichero:")
        self.text_ctrl_fichero = wx.TextCtrl(self, -1, "")
self.label_tiempo = wx.StaticText(self, -1, u"Tiempo de grabación:")
        self.spin_ctrl_tiempo = wx.SpinCtrl(self, -1, "1", min=0, max=100)
        self.label_espera = wx.StaticText(self, -1, "Esperar:")
        self.spin_ctrl_esperar = wx.SpinCtrl(self, -1, "1", min=0, max=100)
        self.label_area = wx.StaticText(self, -1, "Area a grabar:")
        self.checkbox_area = wx.CheckBox(self, -1, "Pantalla completa")
        self.label_posx = wx.StaticText(self, -1, u"Posición X:")
        self.spin_ctrl_posx = wx.SpinCtrl(self, -1, "0", min=0, max=3000)
        self.label_posy = wx.StaticText(self, -1, u"Posición Y:\n")
        self.spin_ctrl_posy = wx.SpinCtrl(self, -1, "0", min=0, max=3000)
        self.label_ancho = wx.StaticText(self, -1, "Ancho:")
self.spin_ctrl_ancho = wx.SpinCtrl(self, -1, "100", min=0, max=3000)
        self.label_alto = wx.StaticText(self, -1, "Altura:")
        self.spin_ctrl_alto = wx.SpinCtrl(self, -1, "100", min=0, max=3000)
        self.checkbox_cursor = wx.CheckBox(self, -1, "Mostrar cursor")
        #self.checkbox_loop = wx.CheckBox(self, -1, "Loop")
        self.checkbox_cerrar = wx.CheckBox(self, -1, "Cerrar al terminar")
        self.button_grabar = wx.Button(self, wx.ID_OK, "")
        self.button_salir = wx.Button(self, wx.ID_EXIT, "")

        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.EVT_BUTTON, self.on_boton_ok, self.button_grabar)
        self.Bind(wx.EVT_BUTTON, self.on_boton_salir, self.button_salir)
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: Principal.__set_properties
        self.SetTitle("Grabador de pantalla")
        self.SetSize((366, 350))
        self.SetBackgroundColour(wx.Colour(255, 255, 255))
        _icon = wx.EmptyIcon()
        _icon.CopyFromBitmap(wx.Bitmap("icono.png", wx.BITMAP_TYPE_ANY))
        self.SetIcon(_icon)
        self.text_ctrl_fichero.SetMinSize((200, 27))
self.text_ctrl_fichero.SetToolTipString("Nombre de fichero .gif para Imagen, .ogv para Video")
        self.spin_ctrl_tiempo.SetToolTipString("Tiempo")
self.spin_ctrl_esperar.SetToolTipString("Tiempo a esperar antes de empezar a grabar")
        self.checkbox_area.SetToolTipString("Grabar toda la pantalla")
        self.spin_ctrl_posx.SetToolTipString(u"Posición X")
        self.spin_ctrl_posy.SetToolTipString(u"Posición Y")
        self.spin_ctrl_ancho.SetToolTipString(u"Ancho del área")
        self.spin_ctrl_alto.SetToolTipString(u"Altura del área")
        self.checkbox_cursor.SetToolTipString("Mostrar cursor")
        #self.checkbox_loop.SetToolTipString("Reproducir en lazo")
self.checkbox_cerrar.SetToolTipString("Cerrar al terminar de grabar")
        self.button_grabar.SetToolTipString(u"Iniciar grabación")
        self.button_salir.SetToolTipString("Salir")
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: Principal.__do_layout
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_2 = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_1 = wx.FlexGridSizer(2, 4, 2, 2)
        sizer_2.Add(self.label_fichero, 0, 0, 0)
        sizer_2.Add(self.text_ctrl_fichero, 0, 0, 0)
        sizer_2.Add(self.label_tiempo, 0, 0, 0)
        sizer_2.Add(self.spin_ctrl_tiempo, 0, 0, 0)
        sizer_2.Add(self.label_espera, 0, 0, 0)
        sizer_2.Add(self.spin_ctrl_esperar, 0, 0, 0)
        sizer_2.Add(self.label_area, 0, 0, 0)
        sizer_2.Add(self.checkbox_area, 0, 0, 0)
        grid_sizer_1.Add(self.label_posx, 0, 0, 0)
        grid_sizer_1.Add(self.spin_ctrl_posx, 0, 0, 0)
        grid_sizer_1.Add(self.label_posy, 0, 0, 0)
        grid_sizer_1.Add(self.spin_ctrl_posy, 0, 0, 0)
        grid_sizer_1.Add(self.label_ancho, 0, 0, 0)
        grid_sizer_1.Add(self.spin_ctrl_ancho, 0, 0, 0)
        grid_sizer_1.Add(self.label_alto, 0, 0, 0)
        grid_sizer_1.Add(self.spin_ctrl_alto, 0, 0, 0)
        sizer_2.Add(grid_sizer_1, 1, wx.EXPAND, 0)
        sizer_2.Add(self.checkbox_cursor, 0, 0, 0)
        #sizer_2.Add(self.checkbox_loop, 0, 0, 0)
        sizer_2.Add(self.checkbox_cerrar, 0, 0, 0)
sizer_2.Add(self.button_grabar, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) sizer_2.Add(self.button_salir, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        self.Layout()
        # end wxGlade

    def on_boton_ok(self, event): # wxGlade: Principal.<event_handler>
        if self.checkbox_area.IsChecked():
            area = ' --display= '
        else:
area = ' --x=' + str(self.spin_ctrl_posx.GetValue()) + ' --y=' + str(self.spin_ctrl_posy.GetValue()) + ' --width=' + str(self.spin_ctrl_ancho.GetValue()) + ' --height=' + str(self.spin_ctrl_alto.GetValue())
        if self.checkbox_cursor.IsChecked():
            cursor = ' -c '
        else:
            cursor = ''
        #En la nueva version de Byzanz esta opcion ya no existe
        #if self.checkbox_loop.IsChecked():
        #    loop = ' -l '
        #else:
        #    loop = ''
        tiempo = ' -d ' + str(self.spin_ctrl_tiempo.GetValue())
        if self.text_ctrl_fichero.GetValue():
            fichero = ' ' + self.text_ctrl_fichero.GetValue()
        else:
            fichero = ' pantalla.gif'
        delay = ' --delay=' + str(self.spin_ctrl_esperar.GetValue())
#comando = 'byzanz-record' + delay + tiempo + loop + cursor + area + fichero comando = 'byzanz-record -v' + delay + tiempo + cursor + area + fichero
        print 'Ejecutando: ' + comando
result = subprocess.Popen(comando, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
        if result:
            print result[0]
        if self.checkbox_cerrar.IsChecked():
            self.Close()

    def on_boton_salir(self, event): # wxGlade: Principal.<event_handler>
        self.Close()

    def OnClose(self, event):
        self.tskic.Destroy()
        self.Destroy()

# end of class Principal

--

Este mensaje le ha llegado mediante el servicio de correo electronico que 
ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema 
Nacional de Salud. La persona que envia este correo asume el compromiso de usar 
el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a