Как реализовать плавную 5-секундную перемотку назад и вперед в видеоплеере Kivy с помощью FFpyPlayer и KivyMDPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как реализовать плавную 5-секундную перемотку назад и вперед в видеоплеере Kivy с помощью FFpyPlayer и KivyMD

Сообщение Anonymous »

Я работаю над собственным видеоплеером, используя Kivy, KivyMD и FFpyPlayer на Python. В настоящее время плеер поддерживает основные функции воспроизведения, паузы и остановки, но я планирую добавить кнопки перемотки назад и вперед, которые будут перематывать 5 секунд назад или вперед, как это видно в большинстве медиаплееров.
Моя цель — реализовать кнопки для:
  • перемотки назад на 5 секунд
  • перемотки вперед на 5 секунд.
Мне известно о возможных проблемах с синхронизацией и синхронизацией при ручной настройке положения курсора воспроизведения, поэтому я хотел бы понять, как лучше всего обеспечить плавную работу .
Мои текущие настройки:
  • Использование Kivy Video в качестве основного компонента для воспроизведение видео.
  • Использование FFpyPlayer для рендеринга видео.
  • Использование KivyMD для стилизации пользовательского интерфейса. и макет.
Я попытался обновить положение курсора воспроизведения с помощью метода search() в FFpyPlayer, скорректировав его на 5 секунд вперед или назад. . Однако такой подход привел к проблемам с плавностью, поскольку видео иногда зависает или заикается при поиске.
Ниже приведена упрощенная версия моей настройки. Код включает в себя кнопки для перемотки назад и вперед на 5 секунд. Однако кнопки иногда не работают должным образом и иногда переходят к началу или концу видео вместо того, чтобы пропустить его на желаемую величину.

Код: Выделить всё

from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.video import Video
from kivy.clock import Clock
from kivymd.app import MDApp
from kivymd.uix.button import MDRaisedButton
from kivymd.uix.slider import MDSlider
from kivymd.uix.screen import MDScreen

KV = '''
MDScreen:
BoxLayout:
orientation: 'vertical'

Video:
id: video
source: 'videos/test.mp4'
state: 'stop'
allow_stretch: True

BoxLayout:
size_hint_y: None
height: '50dp'
padding: '10dp'
spacing: '10dp'

MDRaisedButton:
text: 'Play'
on_release: app.play_pause_video()

MDRaisedButton:
text: 'Pause'
on_release: app.play_pause_video()

MDRaisedButton:
text: 'Rewind 5s'
on_release: app.rewind_5s()

MDRaisedButton:
text: 'Forward 5s'
on_release: app.forward_5s()

MDSlider:
id: slider
min: 0
max: 100
value: 0
on_touch_up: app.on_slider_touch_up(*args)
'''

class VideoPlayerApp(MDApp):
def build(self):
self.screen = Builder.load_string(KV)
self.video = self.screen.ids.video
self.slider = self.screen.ids.slider

Clock.schedule_interval(self.update_slider, 1 / 30)
return self.screen

def play_pause_video(self):
if self.video.state == 'play':
self.video.state = 'pause'
else:
self.video.state = 'play'

def rewind_5s(self):
new_position = max(self.video.position - 5, 0)
self.video.seek(new_position)

def forward_5s(self):
new_position = min(self.video.position + 5, self.video.duration)
self.video.seek(new_position)

def update_slider(self, dt):
if self.video.duration > 0:
self.slider.max = self.video.duration
self.slider.value = self.video.position

def on_slider_touch_up(self, instance, touch):
if instance.collide_point(*touch.pos):
self.video.seek(instance.value)

if __name__ == '__main__':
VideoPlayerApp().run()
Проблемы, с которыми я столкнулся:
  • Синхронизация времени: Видео не всегда плавно переключается при поиске, что приводит к заметным заиканиям или задержкам.
  • Отзывчивость кнопок: Кнопки перемотки назад и вперед реагируют непостоянно, возможно, из-за ограничений метода seek().
  • Переход к началу/концу. Иногда при нажатии кнопок перемотки назад или вперед на 5 с видео неожиданно переходит к самому началу или концу вместо пропуска всего на 5 секунд.
Мои вопросы:
  • Есть ли более эффективный подход в FFpyPlayer или Kivy, чтобы повысить производительность функции search() для плавных 5-секундных пропусков?

    Существуют ли какие-либо библиотеки, методы или приемы, которые обеспечивают лучший контроль над воспроизведением видео в Kivy, особенно для реализации функций перемотки вперед и назад?


Подробнее здесь: https://stackoverflow.com/questions/791 ... -player-wi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»