LINUX.ORG.RU

Gstreamer cache

 , , ,


0

1

Итак, меня интересует буферизация в pygst. Приложение играет поток из сети, в нем есть возможность поиска по песне (seek). Этот seek получается слишком дерганным, не ровным. Seek производится по изменению слайдера в окне:


def UpdatePos(self):
		val = self.seekslider.GetValue()
		if self.player.get_state()[1] == gst.STATE_PLAYING or self.player.get_state()[1] == gst.STATE_PAUSED:
			try:
				self.player.seek_simple(gst.FORMAT_TIME,gst.SEEK_FLAG_FLUSH | gst.SEEK_FLAG_KEY_UNIT, val * gst.SECOND)
				self.seekslider.SetValue(val)
				pos_i = self.player.query_position(self.time_format,None)[0]
	 			dur_i =  self.player.query_duration(self.time_format,None)[0]	 		
				self.SetTimingText(pos_i,self.tpos)
				self.SetTimingText(dur_i-pos_i+1,self.tdur)
			except gst.QueryError:
				pass
Мне кажется, что это связано с размером буфера. Как его можно увеличить, если gstreamer инициализируется так:
 
	###PyGST (Gstreamer) init###
		self.player = gst.element_factory_make("playbin", "player")
		fakesink = gst.element_factory_make("fakesink", "fakesink")
		self.player.set_property("video-sink", fakesink)
   		bus = self.player.get_bus()
   		bus.add_signal_watch()
   		bus.connect("message", self.on_message)
		self.time_format = gst.Format(gst.FORMAT_TIME)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.