grabaciones truncadas con Python GStreamer

Pablo Rodríguez oinos en web.de
Mar Nov 4 21:27:13 CET 2008


Por si a alguien puede servir de consulta posterior, respondo a una 
pregunta que planteé yo mismo.

Pablo Rodríguez wrote:
> Arnau Sanchez wrote:
>> Pablo Rodríguez escribió:
>>  [...]
>>> Por pura curiosidad: ¿cómo podría enviar un evento de EOS que 
>>> cambiase la última línea del código del script de Python que está en 
>>> http://listas.aditel.org/archivos/python-es/2008-October/023026.html?
>>
>> No te entiendo, ¿a qué última línea te refieres?
> 
> No, me equivoqué y está mal, no es la última línea ni de casualidad. En 
> el mensaje citado a:
> 
>     self.player.set_state(gst.STATE_NULL)
> 
> Pero la segunda vez que aparece (después de "elif self.playing"). La 
> primera es en un condicional. Entiendo el segundo parón debe convertirse 
> en un EOS, porque si no la gestión de mensajes ("if t == 
> gst.MESSAGE_EOS:"), de que se pare cuando reciba un EOS no tiene mucho 
> sentido, ¿no?

De pura casualidad, he encontrado como se hace. Había visto la 
documentación de GStreamer ya unas cuantes veces, pero de pura 
casualidad, como al burro la flauta, me sonó. La línea de arriba debe 
sustituirse por:

     self.player.send_event(gst.event_new_eos())

[Lo había probado antes de diferentes maneras, pero no conseguía yo unir 
todo.] De todas formas, gracias a Arnau y Eduardo por haber contestado.

Así funciona el condicional:

     def on_message(self, bus, message):
         t = message.type
         if t == gst.MESSAGE_EOS:
             self.player.set_state(gst.STATE_NULL)

Y de ese modo, el fichero WAV generado no da errores y está bien formado.

> Por cierto, me gustaría hacer otra pregunta. Prefiero usar pulsescr a 
> alsasrc, pero el problema es que no sé cómo se llama ni cómo conseguir 
> los nombres del pulsesrc:
> 
>     self.source = gst.element_factory_make("pulsesrc", "alsa-source")
> 
> Esto es, por si me he explicado mal. En la línea de arriba, no sé por 
> qué nombre sustituir "alsa-source" ni cómo conseguir un listado de lo 
> que los nombres que puede tener "pulsesrc".

Esto sí que me gustaría cómo saber hacerlo.

Gracias y saludos,


Pablo
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es