Я использую GStreamer для воспроизведения аудио и регулярно требую отметки времени, где я нахожусь в файле.Вопрос GStreamer со временем
Если я отрегулирую скорость воспроизведения, используйте команду поиска, указав новую скорость воспроизведения, или если я использую плагин как «шаг» для настройки компонента «темп». Все тайминги выходят из окна, так как GStreamer регулирует длину звука и его текущее положение, чтобы повлиять на скорость, с которой он играет. Так, например, 18 секунд, например, 14 секунд.
Я также попытался остановить звук и начать заново, обновляя новые настройки, а также выдавая поиск со скоростью 1,00, а также темп темпа не сработал. На данный момент у меня заканчиваются идеи, поэтому эта просьба к SO.
Пример кода
#Slow down rate of file play
def OnSlow(self, evt):
media_state = self.media_get_state()
self.rate = Gpitch.get_property("tempo")
if self.rate > 0.2:
self.rate = self.rate - 0.10
Gpitch.set_property("tempo", self.rate)
r = "%.2f" % (self.rate)
self.ma3.SetLabel("Speed: "+r)
if media_state == Gst.State.PLAYING or media_state == Gst.State.PAUSED:
self.timer.Stop() #momentarily stop updating the screen
seek_event = Gst.Event.new_seek(self.rate, Gst.Format.TIME,
(Gst.SeekFlags.FLUSH),#NONE),
Gst.SeekType.NONE, 0, Gst.SeekType.NONE, -1)
Gplayer.send_event(seek_event)
time.sleep(0.1)
self.timer.Start() #Restart updating the screen
Я попытался умножения продолжительности и текущую позицию по корректировке в попытке тянуть или толкать метки обратно на свои позиции, как если бы она играется с нормальной скоростью, но но безрезультатно.
Я вытягиваю свои волосы из-за этого и настоящий удар в зубах, это то, что если я выполняю ту же задачу, используя Vlc, как мой звуковой движок, это работает, но мне нужно изменить шаг отдельно. Вся причина перехода на GStreamer заключалась в том, что плагин основного тона отслеживает компонент темпа, но если я не могу получить точные и согласованные временные метки, проект мертв в воде.
Мой вопрос, есть кто-нибудь а) сталкивалась с этим вопросом и б) освоил его