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