Я пытаюсь включить потоковую передачу mp4 на своем сервере содержимого. Из-за некоторых фанатиков безопасности, с которыми я работаю, все файлы доставляются через php-скрипт и имеют следующий формат URL:
http://server.com/cdn/3/getObject?param1=71¶m2=1002&file=File1000.mp4
Таким образом, все запросы потоковой передачи в стандартном формате, такие как следующий URL-адрес, терпят неудачу из-за добавленного параметра
http://server.com/cdn/3/getObject?param1=71¶m2=1002&file=File1000.mp4?start=10.0
В настоящее время я запускаю nginx со скомпилированным и запущенным потоковым модулем mp4. Я подумываю о перезаписи URL для включения потоковой передачи, но пока у меня ничего не получилось. В дополнение к этому на следующем шаге мне нужно будет включить безопасную потоковую передачу ...
Любая помощь будет принята с благодарностью.
Обновить:
Похоже, мой вопрос недостаточно ясен.
Я не хочу транслировать мой файл mp4 с помощью PHP-скрипта или чего-то еще. Моя проблема в том, что для определения пути к файлу используется PHP-скрипт, это связано с тем, что мне нужно убедиться, что люди не могут просто угадать другой URL-адрес. Таким образом, сценарий getObject просто возвращает запрошенный файл без каких-либо изменений или чего-то еще, если все остальные параметры подходят. Проблема в том, что это делает невозможным потоковую передачу файла. Любая попытка потоковой передачи файла mp4 (например, с помощью flowplayer) терпит неудачу, даже если включен потоковый модуль.
Не существует такой вещи, как HTTP Steaming. Однако есть несколько уловок, чтобы смоделировать это.
Первый и самый старый использует Range:
заголовок, чтобы указать, какой фрагмент файла нужен клиенту. Ничто не мешает PHP-скрипту отправить правильный фрагмент на основе этого заголовка, ему просто нужно прочитать заголовок и вернуть правильный заголовок ответа с данными файла.
Во-вторых, используется какой-то серверный модуль, который понимает формат передаваемого файла и доставляет «правильный» объем данных для любого временного интервала. Это то, что делает модуль mp4 для ngninx. Возможно, удастся запрограммировать PHP-скрипт, который вычисляет скорость передачи данных файла, а затем отправляет файл с этой скоростью, но я ничего не знаю, и программировать это будет сложно.