Возможно ли иметь nginx stream файл для скачивания, в который в данный момент записывается файл? - PullRequest
3 голосов
/ 31 июля 2011

Итак, у меня запущено 2 службы: одна транскодирует файл в реальном времени (ffmpeg), а другая - через http (nginx).У меня сейчас проблема в том, что когда ffmpeg начинает транскодирование, и я получаю доступ к файлу через nginx, загружается только часть записанных байтов.

Вопрос, возможно ли настроить nginx таким образом, чтобыпередать файл, в который выполняется запись, до тех пор, пока запись не закончится, и теперь у меня есть полный файл на локальном компьютере?

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 августа 2011

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

У меня был php-скрипт, который делал системные вызовы (хотя вы могли написать это практически на любом языке). В сценарии ffmpeg была запись во временный файл. Перед вызовом ffmpeg он проверил, существует ли временный файл для устранения проблем параллелизма. Если это так, он ждал, пока не появится настоящий файл.

Как только файл завершил преобразование, он переименовал временный файл в реальный файл и перенаправил http-запрос в транскодированный файл.

0 голосов
/ 31 июля 2011

Я не верю, что Nginx сам по себе может это сделать.Вам понадобится приложение (php, perl, python и т. Д.), Которое может отслеживать ход транскодирования и обрабатывать запрос с помощью chunked Transfer Encoding По существу, оно будет держать соединение открытым для клиента и доставлять больше данных, поскольку оностановится доступным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...