Интеграция CDN

Мы создали очень удобные возможности интеграции нашего CDN с Вашими проектами. Перед началом работы прочитайте небольшую инструкцию ниже.

Как работает CDN

Основная цель применения нашего CDN - это трансляция/streaming видео на Вашем сайте и экономия интернет-трафика.

Для того, чтобы начать это делать, Вам нужно выполнить несколько очень простых шагов:

  1. Настроить проект в панели управления CDN
  2. Загрузить контент в наше облачное хранилище
  3. Настроить интеграцию CDN с Вашим сайтом
  4. Установить код плеера на Вашем сайте
  5. Наслаждаться результатом

Настройка проекта

Зайдите в панель управления CDN:

Настройки→Проекты→Новый

  • Наименование - здесь можно указать доменное имя Вашего сайта или условное название, например tube. Это название будет папкой на FTP, в которую Вы будете загружать Ваши файлы. В тексте он может упоминаться ещё и как ProjectName
  • Секрет - создайте уникальный секретный код. Мы рекомендуем создавать код длинной от 14 до 20 символов. В тексте он может упоминаться ещё и как SecretKey
  • Группа хранения - оставляем как есть
  • По умолчанию - эта опция включает или выключает данный проект по-умолчанию. Если у Вас уже есть проект по-умолчанию, то данную опцию нельзя включать. Перед этим нужно отключить существующий по-умолчанию проект.
  • Публичный - опция определяет будет проект публичный или нет. Если проект будет публичным, то ниже можно установить дополнительные опции защиты проекта: по рефереру
  • Защита по рефереру - активирует защиту по рефереру для этого проекта
  • Разрешать пустого реферера - данная опция будет полезна, если Ваши пользователи смотрят видео непосредственно через плеер мобильных устройств. Ниже Вы можете указать допустимые рефереры для Вашего проекта - домены, для которых разешена трансляция контента Вашего проекта. Доменов можно добавлять несколько.
  • ID - В правом верхнем углу страницы находится ID проекта. Он необходим для идентификации Вашего проекта в системе. В тексте он может упоминаться ещё и как ProjectID
  • После того, как настройка будет закончена - нажмите кнопку Сохранить слева вверху данного блока

Интеграция с плеером

Пример стандартного HTML5 плеера ниже:

HTML на примере стандартного плеера:

  <video controls="controls" width="640" height="480" poster="/cdn.php?path=/test/cinema.jpg&link=1">
      <source src="https://mentor.dfcdn.net?v=1&p=311989d4-4799-455e-a645-ca4899527504&f=%2Ftest%2Fx1080.mp4&e=1582582172&s=-120&sig=E7X2ee%2FP%2F0kVUiaLdG41ZfJQ8CI5wZSRrNONywVI3mM%3D&b=60&a=86400" type="video/mp4">
  </video>

Интеграция CDN с KVS

CDN для Kernel Video Sharing (KVS) настраивается очень просто.

Прежде всего Вам нужно выполнитьнастройку проекта

Затем, скачайте 2 файла:

  • dragonfly.php - Это PHP-библиотека для работы с CDN
  • dragonflycdn.php - Это модуль для работы KVS с CDN

Эти файлы нужно разместить в папке /admin/cdn на FTP вашего сайта

Далее, переходим к настройкам в панели администратора KVS: добавляем новую группу серверов и сервер хранения.

Настраиваем сервер храния следующим образом:

  • Название: - Dragonfly
  • Группа серверов: - выбирайте группу хранения, котрую Вы только что создали
  • URL: - http://dragonfly.cdn
  • Тип стриминга: - CDN
  • Скрипт управления CDN: - dragonflycdn.php
  • Ключ стриминга: - SecretKey;ProjectID;PreloadTime;SpeedLimit (пример:5zpoHYdoCqAcxq;311989d4-4799-455e-a645-ca4899527504;30;-120 )
    SecretKey - берём из настройки проекта
    ProjectID - берём из настройки проекта
    PreloadTime - Время предзагрузки видео в секундах до ограничения скорости, если установить отрицательное значение, то - в процентах (пример: 30 - это 30 секунд прелоада или -30 - 30 процентов)
    SpeedLimit - Ограничение скорости трансляции видео в kbps, если установить отрицательное значение, то - в процентах (пример: 320 - 320 kbps -120 - 120 процентов относительно битрейта видео)
  • Тип подключения: - FTP
  • FTP хост: - ftp.dfcdn.net
  • FTP порт: - 21
  • FTP пользователь: - смотрите данные доступа к FTP, которые Вы получили в письме при регистрации
  • FTP пароль: - смотрите данные доступа к FTP, которые Вы получили в письме при регистрации
  • FTP директория: - /projects/ProjectName/files, ProjectName берём из настройки проекта
  • FTP таймаут: - 120

Сохраняем настройки сервера. Добавляем или переносим новое видео на этот сервер хранения данных средствами KVS.

Библиотека PHP

Скачайте PHP-библиотеку для работы с CDN dragonfly.php и сохраните в корневую папку Вашего сайта

Переменные, которые используются в функциях библиотеки и их применение.

  • $SecretKey - SecretKey Вашего проекта. Пример: 5zpoHYdoCqAcxq
  • $ProjectID - $ProjectID Вашего проекта. Пример: 311989d4-4799-455e-a645-ca4899527504
  • $burst - Время предзагрузки видео в секундах до ограничения скорости, если установить отрицательное значение, то - в процентах. Пример: 30 - это 30 секунд прелоада или -30 - 30 процентов
  • $SpeedLimit - Ограничение скорости трансляции видео в kbps, если установить отрицательное значение, то - в процентах. Пример: 320 - 320 kbps -120 - 120 процентов относительно битрейта видео
  • $secondsTTL - Время жизни ссылки в секундах. Пример: 600 - 600 секунд или 10 минут; 60 * 60 * 2 - 2 часа
  • $maxAge - Устанавливает значение HTTP-заголовка Expires. Пример: 86400 - сутки, 1d; 60 * 60 * 24 * 7 - Неделя, 7d, 1w. Для удобства восприятия
  • $downloadFn - Устанавливает значение HTTP-заголовка filename. Пример: out.pdf - Будет скачан файл с именем out.pdf false - пустое поле и при загрузки файл будет стриммится
  • $fileId (by Path) - путь к файлу на CDN относительно корневой папки (/projects/ProjectName/files) проекта на CDN. Пример: указываем значение 100/10/11.mp4 и получим файл: /projects/tube/files/100/10/11.mp4. Так же, это значение может являться ExtID элемента
  • $fileId (by UID) - для некоторых функций эта переменная является UUID файла в системе и она является уникальным значением. Система работает с этими функциями на порядок быстрее. Получить это значение можно в панели управления CDN - колонка ID

Самый распространённый пример интеграции и создания ссылки на видео ниже:

    <?php
    	require_once 'dragonfly.php';
    	$file_name = $_GET['path'];
    	$dragonfly = new Dragonfly("//mentor.dfcdn.net", "5zpoHYdoCqAcxq");
    	$link = $dragonfly->getUrlByExtId("311989d4-4799-455e-a645-ca4899527504", $file_name, 30, -110, 60 * 60 * 2, 0, $download);
    	header('Location: ' . $link );
    ?>

Функции библиотеки dragonfly.php:

  • getUrlByExtId($projectId, $fileId, $burst, $speedLimit, $secondsTTL, $maxAge, $downloadFn) - генерирует URL c ограниченным временем жизни по имени файла $fileId (by Path)
  • getUrl($fileId, $burst, $speedLimit, $secondsTTL, $maxAge, $downloadFn) - генерирует URL c ограниченным временем жизни по имени файла $fileId (by UID)
  • getPermanentUrlByExtId($projectId, $fileId, $burst, $speedLimit, $maxAge, $downloadFn) - генерирует постоянный URL по имени файла $fileId (by Path)
  • getPermanentUrl($fileId, $burst, $speedLimit, $maxAge, $downloadFn) - генерирует постоянный URL по имени файла $fileId (by UID)

Мы постарались использовать расширенные функциональные возможности в очень удобном виде, но если Вам будет необходимые дополнительные функции или удобства, то Вы всегда можете обратиться к нам и мы реализуем их

Облачное хранилище

В письме, которое Вы получили при регистрации указаны данные доступа к FTP.
В данный момент - это самый удобный способ использовать наше облачное хранилище для хранения файлов Вашего CDN

  • Просим Вас учитывать при работе с нашим FTP, что во время загрузки файлов происходит мгновенное распределение их по узлам кластера, и в эти моменты возможны малозаметные задержки (несколько миллисекунд), но это происходит крайне редко и является нормальным поведением системы.
  • Наш FTP сервер является кластером, поэтому скорость загрузки файлов можно масштабировать до любых пределов. В данный момент мы имеем возможность увеличить скорость загрузки до 40 GBps.
  • Размер нашего хранилища так же практически не ограничен системой. В данный момент мы можем расширить наше хранилище до 18 эксабайт (1 Эбайт = 1000 Пбайт )
  • Мы храним минимум 2 копии каждого файла на разных узлах - это позволяет обеспечить максимальную сохранность Ваших данных.