在android上玩hls / rtmp

时间:2015-04-22 21:52:02

标签: android jwplayer rtmp avconv hls

我有一个wowza服务器,我在那里播放使用jwplayer播放的直播。 尽管如此,一切都与Android和其他系统完美配合。 (适用于android 4.4和jwplayer(!)中的rtmp和hls)。 使用在linux上运行的avconv将流发送到我的wowza服务器,这很好用。

但是当我尝试使用av​​conv(samme命令,如上面的情况,但不同的目的地)直接从linux pc发送我的流到本地服务器时,它在android上与我尝试的所有基于浏览器的玩家都失败了,包括jwplayer。使用jwplayer,例如linux,chromebook,这些流可以在其他系统上运行。我在Android中从jwplayer获得的错误是“找不到可播放的来源”

我尝试过使用crtmp rtmp,还使用了rtmp和hls的nginx rtp模块。总是得到相同的结果,android失败了。当使用wowza时,当theese在android上工作时,怎么会出现故障?

我当前的设置是带有rtmp模块的nginx,这里是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。

所以只有当通过本地服务器才能获得成功,只有当使用wowza ...奇怪,任何想法?我的android是运行android 4.4的平板电脑,但我已经尝试了一些其他的Android版本。我当然愿意使用其他玩家进行故障排除,但最终结果却是一些基于浏览器的玩家。

1 个答案:

答案 0 :(得分:0)

您还可以使用Wowza的MPEG-DASH输出,并使用bitdash HTML5 MPEG-DASH播放器在Android上的HTML5中播放:http://www.dash-player.com