Debian 8.4 / Raspbian 8.0
Nginx 1.9.15
ffmpeg 2.6.8 (на стороне сервера) / avconv 11.6-6:11.6-1~deb8u1+rpi1 (camera collect). Avconv-это вилка FFMPEG, она отлично работает на raspbian.
схема
cam-1: малина pi / модель B / raspbian 8.0 (Jessie) / avconv
mercure: debian server 8.4 (Jessie) / nginx / ffmpeg
cam-1 [rapivid / avconv (ffmpeg)] ->mercure [nginx rtmp / hls]
Я прочитал много сообщений в интернете с 2 недель о настройке сервера потокового видео в реальном времени, который получал видеопотоки с камеры raspberry pi. не беспокойтесь о потоковом источнике малины, проблема не сосредоточена.
Цель состоит в том, чтобы иметь возможность читать RTMP и HLS прямые трансляции на удаленном сервере NGINX
факты :
это работает, я умею читать прямая трансляция с сервера RTMP / NGINX через
ffplay rtmp://mercure/live/cam-1 (defaults to 1935 port)
Примечание :
он не использует VLC и приложение QT5, встраивающее виджеты QMediaPlayer / QMediaContent.
Я узнал, что VLC вводит проблемы с librtmp.таким образом, на debian и, кажется, то же самое на window 7 (тест также терпит неудачу). Источник : Блог дебиан. Вопрос QT5 это возможно побочный эффект как QT5, возможно, использует в VLC библиотеки ? Я все еще расследую. Компоненты QT5 могут читать любой видеофайл диска, но заморозка первого изображения при потоковой передаче с rtmp
установлен модуль nginx hls.
камера (raspberry pi)
для подключения видеопотока с камеры и его публикации на сервере nginx rtmp с помощью пакетов raspivid и avconv (вилка FFMPEG) используется команда:
вытащить из рашпиля кулачка (cam-1):
/opt/vc/bin/raspivid -hf -vf -fl -pf main -a 8 -mm matrix -w 640 -h 480 -g 250 -t 0 -b 2048000 -o -
нажмите на сервер RTMP (mercure)
avconv -re -i - -nostats -c copy -copyts -an -r 25 -f flv rtmp://mercure:1935/live/cam-1
полная команда встроенный в службу debian тогда
/opt/vc/bin/raspivid -hf -vf -fl -pf main -a 8 -mm matrix -w 640 -h 480 -g 250 -t 0 -b 2048000 -o - | avconv -re -i - -nostats -c copy -copyts -an -r 25 -f flv rtmp://mercure:1935/live/cam-1
RTMP / HTTP server side
все сообщения, похоже, указывают на этот тип конфигурации (/etc/nginx.конф отрывок ). Это работает при чтении чистых RTMP-потоков через ffplay, как упоминалось выше
rtmp {
server {
listen 1935;
chunk_size 4000;
application live {
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
}
}
http {
server {
server_name mercure;
location / {
root /var/www;
index index.html;
}
location /hls{
types {
video/MP2T ts;
application/vnd.apple.mpegurl m3u8;
}
root /tmp;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
}
}
Я не совсем понимаю, как nginx работает с hls ... ли входящий поток от avconv (ffmpeg и SDL) - это динамично толкнул на заявка /ЗОЖ протоколу RTMP ? когда поток камеры получен, папка/tmp / hls создается вместе с cam-1-0.файл ТС .. но больше ничего ... нет индекса m3u8 форматов ...
попытка доступа к HLS ресурсу с помощью http://mercure/hls/cam-1 (.m3u8,.m3u ...) и ответом является ошибка HTTP 404: стандартное поведение http.
Я пытался кормить / hls rtmp приложение, изменив trought раздел конфигурации rtmp жить
application live {
live on;
exec ffmpeg -i rtmp://mercure/live/cam-1 -c copy -f flv rtmp://mercure/hls/cam-1;
}
Я абсолютно не уверен в способности nginx управлять потоками HLS а документации на него.
мой вопрос: действительно ли кто - нибудь преуспевает в публикации входящего источника flv в поток HLS с использованием транспорта FFMPEG и сервера NGINX / http-rtmp (/hls/dash)?