在安卓设备上播放HLS/RTMP视频

3
我有一个Wowza服务器,我在其中广播使用JWPlayer播放的直播流。但是,Android和其他系统都可以正常工作。(在Android 4.4和JWPlayer中可以使用rtmp和hls)。这些流通过在Linux PC上运行的avconv发送到我的Wowza服务器,这个过程很顺利。
但当我尝试直接从Linux PC通过avconv发送我的流时(与上述情况相同但目的地不同),在Android上使用所有基于浏览器的播放器(包括JWPlayer)失败了。在其他系统上使用JWPlayer,例如Linux、Chromebook等,这些流却可以工作。在Android中,我从JWPlayer获得的错误信息是"No playable sources found"。
我尝试使用crtmp rtmp以及nginx rtp模块的rtmp和hls,但结果始终相同,Android无法播放。为什么这些流在使用Wowza时能够正常工作,而在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平板电脑运行Android 4.4,但我也尝试了其他几个Android版本。当然,我愿意使用其他播放器进行故障排除,但最终结果必须是一些基于浏览器的播放器。

1
你尝试过在MX Player上进行调试吗?你的avconv命令是怎样的? - user1767754
刚刚在我的原始问题中添加了avplayer命令,感谢您指出。明天会研究mx-player并更新,感谢您的提示! - ziggestardust
你的JW Player设置代码是什么样子? - emaxsaun
еЏ‘еёѓavconvе‘Ң令的жҺ§е€¶еЏ°ж—Өеү—гЂ‚еҢ“е‰Қзљ„ж–№еәЏдәљеҮәи‡өи‡іе°‘дёЂдёҒй”™иҮҮпәЊе› дёғж‚ЁењЁиң“е‡ғдё­ж·»еЉ дғ†-reпәЊиЂЊе®ѓйњЂи¦ЃдёЂдёҒиң“е…Өпә€еғ”иҮӨж”ңењЁ-i之е‰Қпә‰гЂ‚ - aergistal
1个回答

0

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


这并没有回答原问题。更适合作为评论。 - aergistal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接