LINUX.ORG.RU

Управление видео воспроизведением в Linux

 , ,


0

1

Доброго здравия!

Простая, казалось бы задача, но она изрядно подъела мой мозг.

  • Есть raspberry 3b+
  • Есть 4 видео файла
  • Воспроизведение - один файл по кругу на полный экран.
  • По событию(GPIO, клавиша и т.д.) переключается на другой файл, и тот начинает крутиться по кругу
  • Очень важно, что бы переключение происходило без закрытия плеера, иначе показывается на пару секунд содержимое рабочего стола.

Что было сделано:

  1. Через omxplayer все отлично, но! Видео тормозит и переключение идет через закрытие плеера.
  2. VLC сломал весь мозг, либо на весь экран, либо работаем со списком файлов.
mediaPlayer.toggleFullScreen()

выдаёт ошибку нет toggleFullSreen

vlc.Instance('--fullscreen', '--mouse-hide-timeout=0', '--quiet')

ни на что не влияет. 3. Пробовал через командную строку запускать плеер на полный экран со списком фалов, все ок, но как включать 3й файл после 1го ?

Заранее спасибо!



Последнее исправление: stslit (всего исправлений: 1)

mpv --fs

А по поводу остального - не понятно, что ты хочешь.

Yorween
()
Последнее исправление: Yorween (всего исправлений: 1)

но как включать 3й файл после 1го ?

Чтобы в VLC воспроизводилось по кругу (после последнего первое) у меня на панели есть кнопка «Режим повтора», и у этой кнопки 3 режима: повторять всё, повторять одну дорожку, без повторов.

Если у тебя кнопки нет, включи её в «Инструменты» - «Настройка интерфейса», кнопку «Цикл/Повтор» тащи вправо на панель.

Novator ★★★★★
()
Ответ на: комментарий от Novator

Всем спасибо за советы:

@Yorween mpv - вылетает с ошибкой при использовании библиотеки в python. Можно поправить (ибо старый баг), но должно легко переноситься.

@Zubok mplayer - очень замороченный, пишет отладку по каждой секунде видео, а делать через пайпы, запарно.

@Novator Вы невнимательно прочитали цель.

stslit
() автор топика
Ответ на: комментарий от stslit

Сейчас код такой

from vlc import Instance
import os

class VLC:
    def __init__(self):
        self.Player = Instance('--loop','--fullscreen')

    def addPlaylist(self):
        self.mediaList = self.Player.media_list_new()
        path = r"/home/home/Video/"
        media = os.listdir(path)
        for m in media:
            self.mediaList.add_media(self.Player.media_new(os.path.join(path,m)))
        self.listPlayer = self.Player.media_list_player_new()
        self.listPlayer.set_media_list(self.mediaList)
    def play(self):
        self.listPlayer.play()
    def next(self):
        self.listPlayer.next()
    def pause(self):
        self.listPlayer.pause()
    def previous(self):
        self.listPlayer.previous()
    def stop(self):
        self.listPlayer.stop()

player = VLC()        
player.addPlaylist()
player.play()
while True:
    i = input()
    if i=='p':
        player.previous()
    if i=='k':
        player.next()

Любая попытка сделать его на полный экран пишет, что нет такой функции или игнорирует параметр.

stslit
() автор топика
Последнее исправление: stslit (всего исправлений: 1)

Запустит файлы в ткущей дирректории, с бесконечным повтором файла.

mpv -fs --loop-file * 

Найти ID окна:

wmctrl -l

Так чисто ID mpv выдаст:

wmctrl -l | grep -oP "(?<=)(0x\w+)(?=.*mpv$)"

Отправить в окно комбинацию клавиш («>», следующий трек в плейлисте):

xdotool key --window 0x01a00002 "Shift+period"

Доки:

https://github.com/jordansissel/xdotool

https://mpv.io/manual/stable/#keyboard-control

kabanov
()
Последнее исправление: kabanov (всего исправлений: 1)
Ответ на: комментарий от stslit

mplayer - очень замороченный, пишет отладку по каждой секунде видео, а делать через пайпы, запарно.

А ты возьми обвязку на Питоне для slavemode, раз пишешь на нем, и попробуй. Я не пробовал, но вот сразу гуглится: https://github.com/pafcu/pymplb. Ну и как бы погляди что-то в этом роде.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от kabanov

Огонь! Лучшее и рабочее решение! Спасибо огромное!

stslit
() автор топика
Ответ на: комментарий от Zubok

Спасибо! Тему изучил довольно подробно, работать под линукс нормально не будет. Пробовал разные обертки. Модулю 10 лет. Запуск проходит, но возникают сложности. Хотя по варианту выше работать будет на ура.

stslit
() автор топика
Ответ на: комментарий от stslit

В mpv тоже есть slave mode и еще кое-какие методы:

COMMAND INTERFACE
       The  mpv  core can be controlled with commands and properties. A number
       of ways to interact  with  the  player  use  them:  key  bindings  (in‐
       put.conf),  OSD  (showing  information  with properties), JSON IPC, the
       client API (libmpv), and the classic slave mode.
Zubok ★★★★★
()
Ответ на: комментарий от Zubok

ребята, можете тоже посмотреть на проблемку профессиональным взглядом? https://github.com/allwinner-zh/media-codec пытаюсь собрать, но как только [code] make -j2[/code] сыпятся ошибки которым нет конца. я думаю что код невпорядке. пожалуйста найдите пару минут, попробуйте запустить на компиляцию… проблема во мне или в коде?

anonymous
()
Ответ на: комментарий от kabanov

а вы случайно не разбираетесь в сборке программ?

anonymous
()
Ответ на: комментарий от anonymous

Заводи отдельную тему и выкладывай туда все подробности. Выкладывай на pastebin.com, что тебе говорит компилятор. Здесь другая тема.

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