Хочу в качестве сервера для раздачи потока с vlc использовать Nginx.
На сервер вещания с локальной машины видео-поток передаю через туннель ssh.
Конфиг Nginx такой:
server {
listen 8083;
location = /stream.flv {
proxy_pass http://localhost:8082/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Суть вопроса: можно ли как-то сделать, чтобы nginx каждый раз не дергал поток по ssh от vlc?
Для тестов запустил «ab» для проверки:
ab -n 100 -c 100 -g test_data_1.txt -t 60 http://streaming-server:8083/stream.flv
Судя по логам «nethogs» трафик увеличивается не 1:1, а почему-то 1:2(то есть если nginx отдает 3мбит, то трафик по ssh 1.5мбит), также plink.exe(через нее поднят туннель) при новом подключении к веб-серверу рапортует:
Received remote port 8082 open request from 127.0.0.1:54887
Attempting to forward remote port to 127.0.0.1:8082
Forwarded port opened successfully
Решение:
Ничего лучше и проще обычного рестиминга через vlc найти не удалось. Чтобы избавиться от проблем с совместимостью скачал для Windows версию 2.0.5 x32, для Ubuntu установил дневной билд из
ppa.
Сама команда ретрансляции очень простая:
cvlc http://localhost:8082/ --sout '#http{mux=flv,dst=:8083/}'
Соответственно видео отдавать по этому адресу:
server_public_name:8083/