Skip to content

mexoboy/tv-archive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tv-archive

Техническое задание на разработку тестового функционала

Необходимо разработать микроприложение с использованием языка PHP 5.x и базы данных MySQL 5, реализующие следующий функционал: Базовые предположения:

  1. Существует непрерывный видеопоток (телеканал) данных реального времени, доступный по адресу rtmp://localhost:1935/tv/mp4:superchannel
  2. Существует консольное приложение, позволяющее записывать видеопоток данных на диск в файл ffmpeg –i rtmp://localhost:1935/tv/mp4:superchannel –c copy –f mp4 –t <seconds_need_to_write> <output_file_name>
    В процессе работы, приложение непрерывно выводит в консоль (буфер) данные в следующем виде: Capturing. Time: [000:00:15] fps: 25 vbr: 4600 abr: 1400 … Capturing. Time: [000:00:17] fps: 25 vbr: 4500 abr: 1410 … … Capturing. Time: [000:23:54] fps: 25 vbr: 4700 abr: 1320 … Т.е. выводится длительность уже захваченного фрагмента. Перескок времени от строчки к строчке может быть в интервале 1-10 секунд.
  3. Существует SOAP сервис, позволяющий получить информацию о передачах, идущих на телеканале по времени начала и конца https://localhost/WebServices/Schedule.asmx?WSDL Удаленный метод: getInfoByTime параметры: start_time -> <Время в формате Y-m-d H:i>, end_time -> <Время в формате Y-m-d H:i> Метод возвращает массив из строк с названиями телепередач, транслируемых в канале в указанном интервале времени.

Приложение должно:

  1. Записывать фрагменты видепотока длительностью 1 час в отдельные файлы и размещать их в папке /storage/video/… Именование файлов на усмотрение исполнителя.
  2. Каждый записанный фрагмент должен иметь смещение относительно предыдущего на ~5 минут. Т.е. запись (захват) каждого следующего часового потока должна начаться за 5 минут до конца записи предыдущего. Нужно так же учитывать что процесс записи распределен в реальном времени неравномерно, и зависит от текущей скорости канала данных, т.е. к примеру за 10 минут реального времени может быть записано от 10 минут видео (реалтайм поток) до, к примеру 1 минуты (поток с прерывистой буферизацией), таким образом для выполнения поставленного условия, описанного выше, необходимо ориентироваться на лог программы ffmpeg, в которую выводится реальная информация о длительности записанного на данный момент фрагменте, а не на обычный таймер (sleep и пр.)
  3. Собирать информацию (названия) о передачах, транслируемых в записанном фрагменте видеопотока.
  4. Весь процесс записи и получения/обработки информации должен происходить в одном PHP файле, запущенным ТОЛЬКО один раз. Т.е. запущенный PHP файл работает бесконечно, а несколько таких одновременно запущенных файлов-обработчиков не допускается.
  5. Вся полученная информация о файле, передаче, времени и пр. должна храниться в базе данных.
  6. Приложение должно предоставлять отдельный веб интерфейс для вывода таблицы сохраненных материалов, содержащую всю доступную информацию, а также ссылку на открытие видео файла. Необходимо предусмотреть возможность сортировки по следующим полям: ID, время начала фрагмента, время конца фрагмента, названия передач фрагмента.

Архитектура и применяемые паттерны остаются на усмотрение разработчика. Плюсом будет использование фреймворка Phalcon (v. >= 2) в качестве основы приложения.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published