К основному контенту

Создание потокового видео

Всем понятно, что защитить свое видео от скачивания невозможно. Тот, кто хочет все равно скачает. Но, можно затруднить данное действие. Если ориентироваться на обычных пользователей, которые просто смотрят, достаточно будет превратить свое видео в поток. Это закроет доступ к нему всем качалкам, таким как Mediaget или Internet Download Manager.
Итак, превратить видео файл в потоковое видео довольно просто. Достаточно сделать следующее:

Шаг 1. Создаем файл потока


Файл потока представляет собой обычный PHP файл. Назовем его streamer.php

Шаг 2. Заголовки

Понятно, что если подсунуть плееру файл PHP, то он не поймет, что с ним делать и, скорее всего, Вы не получите никакого результата. Для того, что бы плеер понял, что это не просто PHP файл, а видео, нужно сказать об этом. Делается при помощи оператора header.

header('Content-type: video/mp4');

Это еще не все. Мы сказали, что мы не PHP файл, а мы видео файл в формате mp4. Теоретически, этого достаточно, но как показывает практика, для нормальной работы нужно еще отправить размер файла.

$file = 'myvideo.mp4';
$file_length = filesize($file);
header('Content-Length: ' . $file_length);

Это минимум для заголовков файла потока. Я добавляю еще несколько, что бы не кешировалось:

header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');

Шаг 3. Вывод

Осталась самая простая часть. По сути нужно всего лишь вывеси содержимое файла.

$fh = fopen($file, 'rb');
while (!feof($fh))
{
    print (fread($fh, filesize($file)));
}
fclose($fh);

Шаг 4. Использование

Использование довольно простое. В качестве ресурса видео нужно указать ссылку на файл потока.

Шаг 5. Защита

Защита, конечно же, не совершенна, но используя поток вместо основного файла, есть смысл закрыть прямой доступ к видеофайлу. Сделать это можно при помощи директив Apache в файле .htaccess.

<Files ~ «\.(flv|mp4)»>
order allow,deny
deny from all
</Files>


Собственно, все.

Известные проблемы

Как я успел заметить, есть проблема с перемещением по файлу. Поскольку видео потоковое, то перемещение, сделанное, допустим, тегом <video> в HTML5, не работает. Эту часть придется контролировать вручную. К сожалению, другого способа я не нашел. Если есть предложения о решении - пишите в комментариях.

Комментарии

Популярные сообщения из этого блога

Прямые ссылки на файлы Google диска

В предыдущей статье я рассказал, как подключить свой JavaScript файл к блогу BLOGSPOT . Но для того, что бы их подключить нужны прямые ссылки на файл, а Google диск при предоставлении общего доступа к файлу выдает ссылку на предварительный просмотр, которая никак напрямую не ссылается на файл. Для Google диска прямая ссылка на файл - это ссылка на скачивание. Ниже описаны два способа создания ссылки на скачивание на примере файла prism.js.

События для ведения таблиц

Как и всегда, в пылу проекта внезапно родилась Z табличка. Главный нюанс был в том, что она должна была хранить пароли для авторизации на стороннем сервере. Естественно, никто не хотел хранить пароли в открытом виде, а двустороннее шифрование SAP не умеет без сторонних пакетов и надстроек. Далее, все как обычно - придумали алгоритм, сделали табличку. Дело осталось за малым - нужно шифровать пароли, которые вводит пользователь. Делать отдельную программу нет смысла, поскольку ее функционал мало чем будет отличаться от сгенерированного. Вот здесь на помощь приходят события! С их помощью можно, наверное, все. По крайней мере, я не нашел чего-либо, что нельзя сделать с данными через события.

OOP ALV GRID с HTML шапкой

В этой статье хочу постараться подробно описать и привести пример, как можно создать ALV отчет с таблицей на весь экран и с HTML шапкой вверху. Я не буду описывать начальный этап, где пишется селекционный экран или делается выборка данных. Будем считать, что основа у нас есть и нам нужно просто вывести данные. Главной изюминкой является то, что нужно вывести ALV GRID на экран без использования каких-либо дополнительных элементов на экране. Step-By-Step Шаг 1. Создание окна Создаем самое простое окно с номером 100. На него не нужно кидать никаких контейнеров. Оно нам нужно только для модулей PAI и PBO и вывода на него ALV GRID.