LINUX.ORG.RU

Раздача видео и Chrome

 ,


0

3

Столкнулся с очень странной проблемой при решении совсем простой задачи. Есть видеофайлы длиной около минуты (примерно по 13 МБ), которые раздаются nginx (Ubuntu 16.04) как обычная статика. Задача: иметь возможность посмотреть эти видео в браузере через встроенный плеер. Наблюдаемый результат: в Linux всё ожидаемо (Chrome показывает видео, Firefox не показывает из-за неподдерживаемого кодека, но дает возможность скачать), в Windows и macOS именно в Chrome видеоплеер пустой (в Firefox как на Linux, в IE видео правильно показывается). Браузер при этом отправляет запрос на кусок файла и получает валидный ответ 206. В консоли отображается

Unchecked runtime.lastError: The message port closed video.mp4:1 before a response was received
Если видеофайл небольшой (3 МБ), то видео показывается.

Конфиг nginx:

server {
    listen 80 default;
    server_name example.com;
    root /path/to/video/files;

    location / {
        try_files $uri $uri/ =404;
        expires 1m;
    }
}
Пример ответа из логов nginx:
1.2.3.4 - - [11/Jun/2019:09:13:33 +0000] "GET /test2.mp4 HTTP/1.1" 206 2542329 "http://example.com/test2.mp4" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"

Проявляется в том числе на свежеустановленном хроме без дополнений. Предполагаю, что что-то не учтено в конфиге nginx.

Как можно решить эту проблему?

★★★

На самом деле, я плохо тестировал. Недосмотрел, что кодек h265, и видео проигрывается только на самосборном хромиуме с поддержкой hevc. Конвертация в h264 решает проблему.

lu4nik ★★★ ()