Как стать автором
Обновить

Комментарии 49

словил диссонанс, сидя на Mac OS.
наложение нескольких звуковых потоков?
НЛО прилетело и опубликовало эту надпись здесь
А в чем отличие от pyd.io/about/ ну и owncloud опять же? Продуманный API?
habrastorage.org/files/641/f15/b54/641f15b5492c4356ab6bc7e6578c5fb1.png
Три скриншота, для сравнения.
Owncloud — это linux приложения, для организации своего облака? Пусть и доступом через web.
Данный mediabox это в первую очередь заказная GPL разработка лёгкой web оболочки для организации NAS.
Owncloud довольно печален по функционалу и по реализации (внутри там откровенный говнокод). Pydio не плох, и функционален (хотя написан тоже кажется без фреймверков на свой лад, но там хотя бы можно понять что к чему), но не совсем OpenSource как я понял.
вы про storage? В README.md написано, как его ставить.
autoload.php появится после php composer.phar install

Позже напишу доку по установке самого mediabox
я проделал все необходимое на linux виртуалке, но и тут ждала засада.
image
Папка web должна соответствовать DocumentRoot, то есть по простому URL: http: //localhost/ должно быть доступно приложение.
Для примера, я добавил папку docs в репозиторий, куда положил два конфига: для nginx и для apache2
кстати, обратил внимание: слеш "/" в винде же "\" — нужно менять их на DIRECTORY_SEPARATOR
ничего не надо — PHP сам нормализует если все пути писать в *NIX стиле
Вопрос немного не в тему, но все же — а нет ли такого же приложения, но с возможностью добавлять в плейлист файлы сторонних сервисов, т.е. не лежащие непосредственно на винте где сторейдж установлен. Эдакий онлайн-плеер отовсюду, хостящийся дома. Существует такое в природе?
Интересный проект. Любопытно, а насколько сложно было бы сделать замену имеющемуся плееру на возможность передачи команд на внешний API? К примеру, у меня уже есть проигрыватели на разных компьютерах, которые могут принимать команды по запуску медиа-файлов на воспроизведение и я хотел бы использовать данный проект для работы с медиа-текой.
Не понял. Вопрос в том, с какой стороны рассматривать ваш вопрос :) Где находится плеер (железка или программа?) и где это API, а потом где нужно запускать медиа-файлы?
Скажем так, плеер это некий условный сервис, принимающий команды (open, play, pause, next, stop и т.п.) через своё API. Он, в свою очередь, научен работать с конкретным железом или софтом. У меня есть чем-то похожий навигатор по медиа коллекциям, который в итоге отправляет команду воспроизведения выбранного контента на упомянутый сервис плеера, т.е. локальное воспроизведение в моём случае менее востребовано, хоть и тоже полезно.
Сейчас сделано так: при открытии видео файла вызывается $(file).video(«init»), где:
— file — нужный объект файла, его атрибут data-id=«178» ссылается на файл в БД, по этому же ID можно получить нужный файл (потоком) из storage.
— video(«init»), соответственно, инициализация видео плеера. Для вашего проекта файл mediabox-video.js не нужен, вместо него можно сделать некий mediabox-remote-video.js и вызовом $(file).remotevideo(«init») передавать данные о необходимом файле, в этот внешний API. А этот API уже обращается к storage за нужным файлом.

Как-то так
Здорово! Спасибо за разъяснения, по возможности попробую.
есть стандарт на это — DLNA. в идеале, вам нужно в своём устройстве-плеере иметь dlna-клиент, там где хранятся файлы — dlna-сервер, а этот фронтенд должен работать как dlna-контроллер
Не знаю почему, но у меня половина всего не работает. Ни кроп, ни аплоад, ни проигрывание видео, дальше не смотрел. Так и должно быть на демке?
кроп, аплоад и прочие операции требующие записи в БД на демке работать не будут, потому что там не разрешена запись в БД.
Если не работает видео — надо искать проблему на клиенте, за работу видео отвечает medialement js
А как вы планируете/боретесь с дубликатами файлов?
а зачем с ними бороться? )
т.е. вы на 100% уверенны, что дубликаты в хранилище не появятся?
Сейчас дубликаты приспокойно сохраняются…
да что ж такое, я даже не понял о чём вы
у вас есть хранилище mediabox-storage
в него можно записывать файлы
я беру и записывают туда один и тот же файл 100 раз — получаются дубли.
Почему такое может происходить — по ошибке например.

Как вы с этим боритесь? Планируете бороться?
Нет, это не ошибка.
Данный storage называется Simple не просто так, он умеет сохранять файлы, читать и удалять их. Он не умеет дефрагментировать ФС, не умеет раздавать торренты и ещё много всего не умеет.

Для примера, у меня есть другая версия storage, которая использует БД, она не создаёт дубли, а ещё этот storage умеет сканировать FS и передавать в клиент mediabox-а всю (локальную) базу файлов в ней. Например, очень удобно для того, чтобы пользоваться своей базой мультимедиа файлов.
А в Xvid используется свой storage написанный на python, который работает как в локально с фс, так и с amazon s3.

Проект выложен, на github, если он интересен вы можете пользоваться им, можете править исходники (если умеете), можете сделать свой storage с торрентами и блекджеком. Можете написать отличную документацию и сделать pull request в этот репозиторий или исправлять ошибки, но только вот перестаньте мне срать мозг :)
Не работает коннект к storage: «Политика одного источника запрещает чтение удаленного ресурса»
Проблема связана с Cross-origin resource sharing, пока починил добавив в Index.php нужные заголовки, но кажется это стоит исправить на уровне приложения.

Так же хотелось бы иметь возможность подключить медиабокс к уже существующему файловому хранилищу.
Хорошо, что сами определил проблему :) Напишите проблему, что за ось, используемый вами браузер и как расположен storage относительно mediabox?
+ напишите мне headers, добавлю их в след коммите
А кстати, в демо (mediabox.8x86.ru) также выскакивает CORS? Или же там у вас всё нормально, на той же системе? (там аналогично разные домены для mediabox и storage)
Там при аплоаде 500 Internal Server Error.
Это нормальное поведение, т.к. upload там запрещён. Значит уведомление CORS появляется при upload?
Я всё к тому, что мне хочется понять причину возникновения. У меня и на demo всё нормально (я же туда загружал файлы) и во время тестов на локальном ПК с удалённым storage.
Все что я сделал, это поднял на домашнем сервере 2 хоста, сторейдж и медиабокс. И при аплоаде в консоле браузер начал ругаться на CORS. И на самом деле это верно, так как по умолчанию кросс-доменные AJAX запросы могут быть только через JSONP. Только вот не ясно почему они происходят, ведь по логике фронт должен быть связан с бекендом только. Иначе зачем тогда бекенд.
upload происходит при помощью XMLHttpRequest, не AJAX запрос с JSONP.
Вот тут: /web/js/mediabox/mediabox-uploader.js 69 строка
Это и есть ajax ) Любые не GET запросы из js к чужим доменам браузеры пресекают. Если только их не разрешить заранее.
AJAX запрос с JSONP — я имею ввиду $.ajax({ dataType: «JSONP» })
CORS по идее и есть замена JSONP?
Ну это как бы лекарство )
на стороне storage я специально добавляю во время /save/ (upload):

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type');
header('Access-Control-Max-Age: 600');

В чём то другом у вас ошибка, мне кажется? Или же в конфиге yii не верное указан URLдо storage или же клиентский компьютер не знает этого URL?
По логике запросы к сторейдж должен разрешить именно backend (то где хостится mediabox). А там такого заголовка я не видел. Да и возможно звездочка не самая лучшая идея )
чтобы не путать:

frontend — куча JS
backend — сама БД, с информацией о файлах, пользователях и превьюшках

Upload происходит между frontend и storage. Backend здесь не участвует, не его это дело. В контексте mediabox backend нужен для быстрого доступа к информации о файлах и фс. Поэтому он и расположен рядом с frontend.
А storage может быть расположен далеко не локально и он должен принимать простые команды от frontend: сохранить, получить и удалить.
Оставлю тут свое мнение и советы.

1 — Основной минус Mediabox (лично для меня) в том что он хранит информацию о файлах в базе данных. Получается любые операции с файлами надо дублировать и в базе, что убивает на корню использование его для уже имеющейся медиатеки, плюс использования в связке с другими сервисами. Торренты, samba, webdav, etc. Советую все же посмотреть как работает Pydio, это вроде бы прямой конкурент. =)

2 — Не до конца понятно как подключить несколько сторейджей (файловую систему, dropbox, webdav) и как они будут между собой взаимодействовать.

3 — Было бы очень круто иметь простой интерфейс для добавления плагинов, особенно плагинов для редактирования файлов, что бы например можно было запилить интеграцию с редакторами документов habrahabr.ru/company/teamlab/blog/219761/ или каким нибудь онлайн редактором фото и изображений )

4 — Паблик ссылки на скачивание файлов.
5 — Шаринг файлов между пользователями.

4 и 5 не критично совсем
Мнение и советы это хорошо :) А то я в основном получаю письма; «как поставить mediabox?», «документация плохая», «сделайте, как я хочу» или «всё тлен — не нужно». До того, чтобы сделать нормальную документацию и инсталятор как в wordpress, хочется услышать, как раз варианты куда развивать, как развивать и нужно ли вообще.

1 — Вот тут habrahabr.ru/post/221737/#comment_7576655 чуть-чуть отписался, зачем нужен именно такой backend.
2 — Об этом я не думал, но подумать можно, мысль интересная.
3 — Опять же мысль полезная. Вы бы их в issue поместили (https://github.com/Zazza/mediabox-php-yii/issues) чтобы не потерялись
4 и 5 — немного в другом виде уже было реализовано. Но сначала, мне нужно понять «куда развивать, как развивать и нужно ли вообще»
Я бы брал вектор на развитие приложения для домашних и мало-офисных NAS систем. Ввиду некоторого не доверия к облакам (важные документы там хранить все же стремно, у того же гугла были прецеденты с выдачей информации спец. службам), у людей есть желание построить свой собственный google drive, с блек-джеком.

Пока что получилась вещь в себе, вроде бы интересно, но как применить ее к уже существующему сторейджу (как я писал, с самбой btsync-ом и торрентами) не понятно )
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.