HLS - не работает; /tmp/hls ничего не создается; КАК ЗАСТАВИТЬ РАБОТАТЬ HLS??

1,253 views
Skip to first unread message

Александр Г

unread,
Nov 15, 2014, 6:02:56 PM11/15/14
to nginx-...@googlegroups.com
hls не вещается. в папке /tmp/hls - пусто. nginx не выдает ошибок при запуске. ffmpeg не ругается. ffplay не воспроизводит
(порты только 80 и 443 - через другие не пускают админы и google engine (не нашел, где и как впустить)   )

посоветуйте, пожалуйста, что можно сделать (добавить в конфиг ssl_certificate и ssl_certificate_key, создать m3u8-плейлист и заполнить его чем-либо??)... с какой опцией переустановить, что где создать...?
все везде перелазил...и много чего перепробовал...
(завтра снесу и буду пробовать сначала)
(сервер временно остановил)


как установил:
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

tar -zxvf nginx-1.7.7.tar.gz
unzip master.zip
cd nginx-1.7.7

./configure --add-module=../nginx-rtmp-module-master
$ make
$ sudo make install

конфиг nginx.conf:
worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  130.211.250.61;

        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            # you can move stat.xsl to a different location
            root /usr/local/nginx/html;
        }

        # rtmp control
        location /control {
            rtmp_control all;
        }

        location /hls {
            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            alias /tmp;
#            root /tmp;
            add_header Cache-Control no-cache;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

rtmp {
    server {
        listen 443;
        chunk_size 4096;
        application live {
            live on;
            record off;
        }
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
            hls_base_url http://130.211.250.61:80/hls/;
        }
    }
}


что я вводил в ffmpeg:
ffmpeg -f dshow -i audio="Микрофон (Устройство с поддержк" -acodec libmp3lame -ac 2 -b:a 128k -ar 44100 -f flv "rtmp://130.211.250.61:443/hls/stream"

что вывел на экран ffmpeg:
ffmpeg version N-60240-ge1cb6dc Copyright (c) 2000-2014 the FFmpeg developers
  built on Jan 29 2014 22:01:42 with gcc 4.8.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --
enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --
enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --
enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 63.100 / 52. 63.100
  libavcodec     55. 49.101 / 55. 49.101
  libavformat    55. 28.101 / 55. 28.101
  libavdevice    55.  7.100 / 55.  7.100
  libavfilter     4.  1.101 /  4.  1.101
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Guessed Channel Layout for  Input Stream #0.0 : stereo
Input #0, dshow, from 'audio=╨Ь╨╕╨║╤А╨╛╤Д╨╛╨╜ (╨г╤Б╤В╤А╨╛╨╣╤Б╤В╨▓╨╛ ╤Б ╨┐╨╛╨┤╨┤╨
╡╤А╨╢╨║':
  Duration: N/A, start: 27190.053000, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
Output #0, flv, to 'rtmp://130.211.250.61:443/hls/stream':
  Metadata:
    encoder         : Lavf55.28.101
    Stream #0:0: Audio: mp3 (libmp3lame) ([2][0][0][0] / 0x0002), 44100 Hz, ster
eo, s16p, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le -> libmp3lame)
Press [q] to stop, [?] for help
size=      96kB time=00:00:05.88 bitrate= 133.6kbits/s

что вывел ffplay:

ffplay version N-60240-ge1cb6dc Copyright (c) 2003-2014 the FFmpeg developers
  built on Jan 29 2014 22:01:42 with gcc 4.8.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --
enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --
enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --
enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52. 63.100 / 52. 63.100
  libavcodec     55. 49.101 / 55. 49.101
  libavformat    55. 28.101 / 55. 28.101
  libavdevice    55.  7.100 / 55.  7.100
  libavfilter     4.  1.101 /  4.  1.101
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
[http @ 03453120] HTTP error 404 Not Found    0KB sq=    0B f=0/0




если я делаю через RTMP:
ffmpeg -f dshow -i audio="Микрофон (Устройство с поддержк" -acodec libmp3lame -ac 2 -b:a 128k -ar 44100 -f flv "rtmp://130.211.250.61:443/live/stream"

...
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Guessed Channel Layout for  Input Stream #0.0 : stereo
Input #0, dshow, from 'audio=╨Ь╨╕╨║╤А╨╛╤Д╨╛╨╜ (╨г╤Б╤В╤А╨╛╨╣╤Б╤В╨▓╨╛ ╤Б ╨┐╨╛╨┤╨┤╨
╡╤А╨╢╨║':
  Duration: N/A, start: 28102.224000, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
Output #0, flv, to 'rtmp://130.211.250.61:443/live/stream':
  Metadata:
    encoder         : Lavf55.28.101
    Stream #0:0: Audio: mp3 (libmp3lame) ([2][0][0][0] / 0x0002), 44100 Hz, ster
eo, s16p, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le -> libmp3lame)
Press [q] to stop, [?] for help
size=      55kB time=00:00:03.37 bitrate= 134.2kbits/s

вышло через ffplay:
(странное окошко, которое потом "не отвечает" и очень странный вывод...)




что делать?? как можно попытаться найти ошибку. может, я не правильно установил? забыл какие-л опции? прошу помощи....

ad...@aqproject.ru

unread,
Nov 19, 2014, 12:59:21 AM11/19/14
to nginx-...@googlegroups.com
замените
alias /tmp;
на
alias /tmp/hls;

потом
mkdir /tmp/hls
chown nginx:nginx /tmp/hls

и перезапустите nginx

воскресенье, 16 ноября 2014 г., 2:02:56 UTC+3 пользователь Александр Г написал:
Message has been deleted
Message has been deleted
Message has been deleted

Александр Г

unread,
Dec 1, 2014, 5:44:34 PM12/1/14
to nginx-...@googlegroups.com
 ///
по прежнему не создается ничего в папке hls. 

сейчас взял поток радио рекорда http://air.radiorecord.ru:8102/rus_320
пропускаю через ffmpeg 
exec_static ffmpeg -i "http://air.radiorecord.ru:8102/rus_320" -c copy -acodec libmp3lame -ac 2 -b:a 128k -ar 44100 -f segment -segment_list_type hls -segment_time 10 -segment_format mpegts -segment_list "/tmp/hls/live/my_stream.m3u8" >> "/var/log/nginx/ffmpeg.log";

пробовал такой вариант работой с ffmpeg
exec_static ffmpeg -i "http://air.radiorecord.ru:8102/rus_320" -c copy -f flv -an "rtmp://104.155.193.171:443/hls/live">>"/var/log/nginx/ffmpeg.log";

тоже ничего

vlc пишет: (подключаюсь к http://104.155.193.171:80/hls/live)

в файле /var/log/nginx/error.log;
2014/12/01 21:43:53 [error] 3022#0: *1 directory index of "/tmp/hls/live/" is forbidden, client: 91.236.31.180, server: 104.155.193.171, request: "GET /hls/live/ HTTP/1.1", host: "104.155.193.171"
там только такие строчки(( их много

в файле /var/log/nginx/access.log;
91.236.31.180 - - [01/Dec/2014:21:19:41 +0000] "GET /hls/live HTTP/1.1" 301 184 "-" "VLC/2.1.5 LibVLC/2.1.5" 
91.236.31.180 - - [01/Dec/2014:21:19:41 +0000] "GET /hls/live/ HTTP/1.1" 403 168 "-" "VLC/2.1.5 LibVLC/2.1.5" 
91.236.31.180 - - [01/Dec/2014:21:19:42 +0000] "GET /hls/live/ HTTP/1.1" 403 168 "-" "VLC/2.1.5 LibVLC/2.1.5" 
91.236.31.180 - - [01/Dec/2014:21:19:43 +0000] "GET /hls/live/ HTTP/1.1" 403 168 "-" "NSPlayer/7.10.0.3059"
так же как и в эррор.лог повторяется на протяжении всего лога

права вот такие:
 l
alex_grigorenko2942_gmail_com@redwell:/$ ls -l /tmp/ 
total 12
drwxr-xr-x 3 root root 4096 Dec 1 22:00 hls
-rw-r--r-- 1 root root 394 Dec 1 12:08 keyfile.1922.pub
drwx------ 2 alex_grigorenko2942_gmail_com alex_grigorenko2942_gmail_com 4096 Dec 1 20:13 ssh-7wvZiMfGbw
l  
alex_grigorenko2942_gmail_com@redwell:/$ ls -l /tmp/ssh-7wvZiMfGbw/
total 0
srwxr-xr-x 1 alex_grigorenko2942_gmail_com alex_grigorenko2942_gmail_com 0 Dec 1 20:13 agent.381
l  
alex_grigorenko2942_gmail_com@redwell:/$ ls -l tmp/hls/live/
ls: cannot open directory tmp/hls/live/: Permission denied
alex_grigorenko2942_gmail_com@redwell:/$ sudo ls -l tmp/hls/live/
total 0
 l

конфиг на сейчас: 
user root; worker_processes 1; events { worker_connections 1024; } error_log logs/error.log debug; http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name 104.155.193.171; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /usr/local/nginx/html; } # rtmp control location /control { rtmp_control all; } location /hls { # Serve HLS fragments types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } alias /tmp/hls; add_header Cache-Control no-cache; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } rtmp { server { listen 443; chunk_size 4096; application live { live on; record off; } application hls { live on; hls on; hls_path /tmp/hls/live; #hls_base_url http://130.211.250.61:80/hls/; hls_fragment_naming timestamp; #exec_static ffmpeg -i "http://air.radiorecord.ru:8102/rus_320" -c copy -f flv -an "rtmp://104.155.193.171:443/hls/live">>"/var/log/nginx/ffmpeg.log"; exec_static ffmpeg -i "http://air.radiorecord.ru:8102/rus_320" -c copy -acodec libmp3lame -ac 2 -b:a 128k -ar 44100 -f segment -segment_list_type hls -segment_time 10 -segment_format mpegts -segment_list "/tmp/hls/live/main.m3u8" >> "/var/log/nginx/ffmpeg.log"; } } } 
вот так
 

Александр Г

unread,
Dec 2, 2014, 9:17:41 AM12/2/14
to nginx-...@googlegroups.com
перековеркал конфиг. все равно ничего не создается в папке tmp
задал права:

sudo usermod -aG www-data www-data
sudo chown -R www-data:www-data /tmp

конфиг:
user www-data;
worker_processes  1;
events {
    worker_connections  1024;
}
error_log logs/error.log debug;
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  104.155.193.171;
                access_log /var/log/nginx/access.log;
                error_log /var/log/nginx/error.log;
        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp/hls;
            add_header Cache-Control no-cache;
        }
    }
}
rtmp {
    server {
        listen 443;
        chunk_size 4096;
        application live {
            live on;
            record off;
            exec ffmpeg -i "rtmp://radiomir.by/live/stream" -c copy -loglevel debug -f flv -an "rtmp://104.155.193.171:443/hls/live";
        }
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
            hls_fragment_naming timestamp;
            hls_cleanup off;
        }
    }
}


Roman Stone

unread,
Dec 7, 2014, 7:06:26 PM12/7/14
to nginx-...@googlegroups.com
Очень похоже что exec не выполняется,  или выполняется не правильно, или у  www-data   нет прав на запуск ffmpeg.
 Попробуйте написать полный путь к ffmpeg   ( /usr/bin/ffmpeg )   узнать можно командой:

 [root@local ~]# which ffmpeg

 мне удалось запустить только так (CentOS 6.5 x386)

exec_play bash -c '/usr/bin/ffmpeg -i rtmp://radiomir.by/live/stream -c copy -f flv -an rtmp://127.0.0.1:1935/hls/live';


Roman Stone

unread,
Dec 8, 2014, 10:06:05 AM12/8/14
to nginx-...@googlegroups.com
  exec ffmpeg -i "rtmp://radiomir.by/live/stream" -c copy -loglevel debug -f flv -an "rtmp://104.155.193.171:443/hls/live";

чтоб сделать debug того что происходит при запуске ffmpeg : 

exec_static bash -c '/usr/bin/ffmpeg -i rtmp://radiomir.by/live/stream -c copy -loglevel debug -f flv -an rtmp://104.155.193.171:443/hls/live  2>>/var/log/nginx/ffmpeg.log';

но можно попробовать что-нибудь типа :

exec_static touch /var/log/nginx/ffmpeg.log;




Александр Г

unread,
Dec 27, 2014, 4:40:59 PM12/27/14
to nginx-...@googlegroups.com
уже пересобрал все снова... :-( 
проблема с правами (корее всего), но как сделать правильно - не могу понять((
...ffmpeg запускаю отдельно... - это самая маленькая проблема)
 
конфиг nginx.conf

user root root;
worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {

        listen     80;
        server_name  localhost;
                access_log /var/log/nginx/access.log;
                error_log /var/log/nginx/error.log;
        location / {
            root   html;
            index  index.html index.htm;
        }

        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            alias /tmp/hls;
            add_header Cache-Control no-cache;
        }
    }
}

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;
#            pull rtmp://radiomir.by/live/stream;
        }
         application live2 {
            live on;
            record off;
        }

        application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
            hls_fragment_naming timestamp;
            hls_nested on;
            hls_cleanup off;
        }
}
}

смотрел от чьего имени запускается nginx
ps axwu | grep nginx
root     14085  0.0  0.1  38832  2220 ?        Ss   17:46   0:00 nginx: master process /usr/local/nginx/sbin/nginx
root     14481  0.7  0.1  39260  2544 ?        S    18:52   0:00 nginx: worker process
root     14508  0.0  0.0   7860   872 pts/0    S+   18:54   0:00 grep nginx

смотрел кому принадлежит директория tmp и вложенная в неё hls
ls -l /
...
какие-то файлы
...
drwxrwxrwx   7 root root     4096 Дек 27 18:55 tmp
...

ls -l tmp/
...
какие-то файлы
...
drwxrwxrwx   2 root root     4096 Дек 27 15:34 hls
...

вроде как и права дал, и пользователя в конфиге прописал. и группу указал... а вот не хочет...(( 

Александр Г

unread,
Jan 16, 2015, 6:10:10 AM1/16/15
to nginx-...@googlegroups.com
разобрался... была проблема с правами (их нужно было датьдля папки tmp
а так же проблема кодеков (я с помощью ffmpeg подавал на вход сигнал сделанный с помощью libmp3lame, а надо было libfdk_aac)
Всем спасибо! :-)

воскресенье, 16 ноября 2014 г., 2:02:56 UTC+3 пользователь Александр Г написал:
hls не вещается. в папке /tmp/hls - пусто. nginx не выдает ошибок при запуске. ffmpeg не ругается. ffplay не воспроизводит

m.mo...@gmail.com

unread,
Jun 26, 2015, 10:36:45 AM6/26/15
to nginx-...@googlegroups.com
Hello

We are a large company looking for exchange RTMP Nginx

Exchange Local Rtmp Nginx

PUSH = PUSH
PULL = PULL

 IPTV ( RTMP TO RTMP ) Nginx 

i wait send all chaneel  to my 
applicion


i have 350 chaneel push

My applicion


Gmail

Reply all
Reply to author
Forward
0 new messages