我的上一个问题http://www.oschina.net/question/437227_126231是我看到这个开源的代码模拟的一个小例子,但没有达到同样的效果,而且我好像也没有表达清楚,现在直接引用原来的代码:
有一个player.py(https://github.com/remap/ndnvideo/blob/master/videostreaming/player.py),里面有一个类GstPlayer:
class GstPlayer(gobject.GObject): __pipeline = None def __init__(self, videowidget, cmd_args): self.player = gst.parse_launch(self.__pipeline)还有一个play.py( https://github.com/remap/ndnvideo/blob/master/videostreaming/play.py),里面GstPlayer类继承了player.py里的GstPlayer类:
class GstPlayer(player.GstPlayer): __pipeline = """ multiqueue name=mqueue use-buffering=true identity name=video_input ! ffdec_h264 ! mqueue. mqueue. ! %s \ identity name=audio_input ! decodebin ! mqueue. mqueue. ! %s """ % (utils.video_sink, utils.audio_sink)
当我把play.py中的__pipeline注释掉后,运行报错如下:
Traceback (most recent call last): File "./play.py", line 76, in <module> sys.exit(main()) File "./play.py", line 68, in main w = player_gui.PlayerWindow(GstPlayer, cmd_args) File "/home/kl/ndn/ndnvideo/videostreaming/player_gui.py", line 42, in __init__ self.player = gst_player(self.videowidget, cmd_args) File "/home/kl/ndn/ndnvideo/videostreaming/player.py", line 35, in __init__ self.player = gst.parse_launch(self.__pipeline) TypeError: parse_launch() argument 1 must be string, not None最后一句说明player.py中的GstPlayer类调用parse_launch()函数,self.__pipeline作为参数,但这个self.__pipeline不是player.py中GstPlayer这个父类的__pipeline,而是调用的play.py中GstPlayer这个子类的__pipeline,这不是类似虚函数的效果么?求指导?还有我上一个问题模拟的小例子怎么跑不出这个效果?非常感谢~
<spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;line-height:14.65625px;background-color:#FFFFFF;">应该是<spanstyle="font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;line-height:14.65625px;background-color:#FFFFFF;">gobject这个搞出来的回复<aclass='referer'target='_blank'>@socket:原来是类名一样~~我在代码里把self.__pipeline打印出来了,就是子类的__pipeline的字串
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。