2015-09-17 5 views
0

Я использую Gstreamer RTSPMediaFactory (libgstrtspserver 1.0) v 1.2.3-0. Из Python я получил из MediaFactory и переопределил create_element. К сожалению, мой create_element никогда не вызывается, поэтому RtspServer жалуется no launch line specified.Метод недоступен в RTSPMediaFactory

я распечатал все методы, объявленные в супер, например, и получил это:

[ 'set_buffer_size', 'set_suspend_mode', 'set_protocols', 'конструктов', 'get_suspend_mode', «get_launch », 'set_launch', 'is_eos_shutdown', 'get_permissions', 'get_address_pool', 'set_shared', 'is_shared', 'set_address_pool', 'get_protocols', 'get_buffer_size', 'set_permissions', 'set_eos_shutdown']

No create_element!

Неудивительно, что моя реализация никогда не называется ... но почему нет функции create_element? Что я делаю?

ответ

0

Я использую версию 1.4.3.

Это мой полный тест:

from gi.repository import Gst, GObject, GstRtspServer 
Gst.init(None) 
rtsp_server = GstRtspServer.RTSPServer() 
rtsp_server.attach(None) 


class Factory(GstRtspServer.RTSPMediaFactoryURI): 

    def __init__(self): 
     super(Factory, self).__init__() 
     print [(x, type(y)) for x, y 
       in GstRtspServer.RTSPMediaFactory.__dict__.items()] 

    def do_create_element(self, url): 
     print "in do_create_element" 

factory = Factory() 
factory.set_uri('rtsp://camera_url') 
rtsp_server.get_mount_points().add_factory('/mount', factory) 
GObject.MainLoop().run() 

На запустить его распечатке:

[('set_buffer_size', <type 'function'>), ('do_media_configure', <class 'gi.types.NativeVFunc'>), 
('__module__', <type 'str'>), ('do_configure', <class 'gi.types.NativeVFunc'>), 
('set_suspend_mode', <type 'function'>), ('do_media_constructed', <class 'gi.types.NativeVFunc'>), 
('__info__', <type 'ObjectInfo'>), ('do_create_element', <class 'gi.types.NativeVFunc'>), 
('priv', <type 'property'>), ('set_protocols', <type 'function'>), 
('construct', <type 'function'>), ('get_suspend_mode', <type 'function'>), 
('_gst_reserved', <type 'property'>), ('new', <type 'classmethod'>), 
('__gtype__', <type 'gobject.GType'>), ('get_launch', <type 'function'>), 
('__doc__', <type 'NoneType'>), ('set_launch', <type 'function'>), 
('do_construct', <class 'gi.types.NativeVFunc'>), ('parent', <type 'property'>), 
('is_eos_shutdown', <type 'function'>), ('get_permissions', <type 'function'>), 
('get_address_pool', <type 'function'>), ('do_gen_key', <class 'gi.types.NativeVFunc'>), 
('set_shared', <type 'function'>), ('create_element', <type 'function'>), 
('is_shared', <type 'function'>), ('set_address_pool', <type 'function'>), 
('get_protocols', <type 'function'>), ('get_buffer_size', <type 'function'>), 
('get_profiles', <type 'function'>), ('set_permissions', <type 'function'>), 
('set_profiles', <type 'function'>), ('set_eos_shutdown', <type 'function'>)] 

, как вы видите, что есть create_element FUNC, а вы должны переопределить do_create_element, , которые имеют тип gi.types.NativeVFunc. и если я связываю с RTSP клиентом rtsp://127.0.0.1:8554/mount так ли распечатки:

in do_create_element 
+0

Спасибо - никто из этого кода не работает в 1.2.3-0. Есть только несколько методов, которые, как считается, переопределяемы. – Adam

Смежные вопросы