[Проект] RPi video remote

  1. Идеята ми е да направя REST API за контрол на OmxPlayer в/у Raspberry Pi.

    OmxPlayer е единственият player, който поддържа private interface-а на Broadcom за достъп до хардуерния декодер на RPi. Той може да се управлява чрез клавиатурата (stdin) или чрез DBus. Аз се целя към DBus. REST интерфейсът ще export-ва основните функции за контрол на видео (pause, play, volume control, get position, set position...). За тези функции има предоставено DBus API и най-вероятно просто ще се облепят в REST API.

    Също смятам да поддържам и пускаме на избрано видео (или URL). За тази цел трябва да се стартира player-а (нещо което може би не е подходящо за REST server, но...) като executable.

  2. Звучи добре, но не съм сигурен точно колко сложно ще е. Ако е прекалено лесно (пр. един прост http сървър, който слуша на 5 url-а и изпълнява 5 команди), ще искаме допълнителни неща. Възможни разширения:

    • authentication
    • media management - REST API-то ти да може да връща списък с медия файлове в някои зададени папки и да може да ги пуска чрез player-а (и евентуално изтрива/качва нови)
    • клиент (може и command line), който да ползва това API

    Наистина не знам колко е трудна работата с този player, но ако е прост за контролиране ще искаме да имплементираш едно-две от горните неща или да си избереш нещо друго, което да разшири scope-а.

  3. Може би частта със wrap-ването на REST endpoint-и в DBus notification-и няма да е много сложна (освен стандартната работа с DBus, понеже не се работи никак лесно с него). Единствено виждам по-голямм challenge в стартирането на видео, понеже за това не трябва да се използва DBus интерфейс, а да се стартира процес в background-а (така че server-а да не му е parent) и след това закачането към DBus на новосъздадения процес.

    Това което си мислех като възможно разширение е имплементиране на някакъв протокол от типа UPnP, DLNA, OpenHome с цел сървъра да се ползва от всеки клиент поддържащ този протокол. Проблемът с това е, че типично тези протоколи са прекалено сложни. Т.е. ако аз имам един playing stream и искам да го контролирам, то в контекста на този протокол трябва да имам 2-3 обекта (тип player, video, playlist, stream, output source, input source, controller...), което си е досада.

    Друг аспект, за който съм мислил е добавянето на web client, който да бъде достатъчно прост и да може да се отвори от webview (или нещо подобно), за да ползва на Android. Проблемът с това е, че не е много свързано с Go.

    От възможните разширения, които Вие сте дали, може би media management-а ми се струва най-полезен. В command line клиент няма много голям смисъл. А за authentication не смятам, че има нужда (обикновено хората пускат подобни неща в trusted environment, home). А дори и да има нужда, най-вероятно HTTP Basic Auth би свършило достатъчно добра работа.

    Към кое от гореспоменатите неща да се насоча?

Трябва да сте влезли в системата, за да може да отговаряте на теми.