играть в hls / rtmp на android

У меня есть сервер wowza, на котором я транслирую прямые трансляции, которые воспроизводятся с помощью jwplayer. Однако все отлично работает с Android и другими системами. (работает как с rtmp, так и с hls в android 4.4 и jwplayer (!)). Потоки отправляются на мой сервер wowza с avconv, запущенным на компьютере с Linux, это отлично работает.

Но когда я пытаюсь отправить свои потоки прямо с компьютера linux с помощью avconv (команда samme, как в приведенном выше случае, но в другом месте назначения) на локальный сервер, он не работает на Android со всеми браузерами, которые я пробовал, включая jwplayer. Потоки работают в других системах, но с jwplayer, например linux, chromebook. Ошибка, которую я получаю от jwplayer в Android: «Не найдено воспроизводимых источников»

Я пробовал использовать crtmp rtmp, а также модуль nginx rtp для rtmp и hls. Всегда с одним и тем же результатом андроид не работает. Почему эти потоки не работают, когда они работают на Android при использовании wowza?

Моя текущая установка - это nginx с модулем rtmp, вот nginx.conf:

worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;



events {
    worker_connections  1024;
}


http {

    server {

        listen      8080;


 location / {
            add_header Access-Control-Allow-Origin *;
            root   html;
            index  index.html index.htm;
        }


        location /hls {
            # Serve HLS fragments
            types {
            add_header Access-Control-Allow-Origin *;

                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;

        }

        location /dash {
            # Serve DASH fragments
            root /tmp;
            add_header Cache-Control no-cache;
        }
    }
}


rtmp {

    server {

        listen 1935;
        chunk_size 4000;

        application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
        }

        # MPEG-DASH is similar to HLS

        application dash {
            live on;
            dash on;
            dash_path /tmp/dash;
        }
    }
}

Вот команда avconv:

avconv -g 40 -threads 4  -f video4linux2  -video_size $SIZE   -r 15 -i /dev/video0  -itsoffset -3.35 -i audio0.fifo -re -vcodec libx264 -r 15  -preset veryfast -tune zerolatency  -aq 0  -q 3 -vbr 3 -maxrate 3M   -threads 4 -f flv rtmp://192.168.0.6/hls/mycam

При использовании приведенной выше команды через wowza вместо localhost (! 92.168.0.6) она работает на android с jwplayer.

Так что никакого успеха только для Android через локальный сервер, только при использовании wowza ... странно, есть идеи? Мой Android - это планшет с Android 4.4, но я пробовал и несколько других версий Android. Я, конечно, готов использовать другие проигрыватели для устранения неполадок, но для конечного результата это должен быть какой-нибудь проигрыватель на основе браузера.


person ziggestardust    schedule 22.04.2015    source источник
comment
Вы пробовали это с mx-player для отладки? А как выглядит ваша команда avconv?   -  person user1767754    schedule 23.04.2015
comment
Просто добавил команду avplayer к моему исходному вопросу, спасибо, что указали на это. Загляну завтра в mx-player и обновлю, спасибо за наводку!   -  person ziggestardust    schedule 23.04.2015
comment
Как выглядит ваш код установки JW Player?   -  person emaxsaun    schedule 24.04.2015
comment
Опубликуйте консольный журнал команды avconv. То, как это происходит сейчас, приведет по крайней мере к одной ошибке, поскольку вы добавляете -re к выходу, когда ему нужен вход (должен быть помещен перед -i)   -  person aergistal    schedule 27.04.2015


Ответы (1)


Вы также можете использовать вывод MPEG-DASH из Wowza и воспроизводить его в HTML5 на Android с помощью проигрывателя BitDash HTML5 MPEG-DASH: http://www.dash-player.com

person Stefan Lederer    schedule 26.04.2015
comment
Это не отвечает на исходный вопрос. Это было бы больше подходит в качестве комментария. - person aergistal; 27.04.2015