2017-02-26 45 views
0

我正在使用Nginx将实时流发布到网页 - 它发布HLS并退回到Flash。在桌面/笔记本电脑上运行良好 - Android是一个混合包。一些观众(包括我)可以看到和听到溪流 - 其他人只是看到一个黑色的屏幕,或者“旋转的轮子”。Nginx - Video.js - 实时流在某些Android设备上可见

Nginx的错误日志:

2017/02/25 16:28:16 [error] 32054#0: *57 open() "/tmp/hls/test.m3u8" failed (2: No such file or directory), client: (my ip address), server: localhost, request: "GET /hls/test.m3u8 HTTP/1.1", host: "mydomain.com:8080" 

HLS片段被生成到服务器上HLS文件夹。 Crossdomain.xml文件位于所有相关位置。 CORS已启用(我认为)。

CentOS7 VPS服务器Apache 2.4.25 Nginx 1.9.15(由gcc 4.8.5 20150623构建,使用OpenSSL 1.0.1e-fips构建2013年2月11日),安装了Nginx RTMP模块,用于查看流的Video.js (我尝试安装HLSJS插件,但它没有帮助)。从现场

相关的HTML代码:

<head> 
<script src="video.js"></script> 
<script src="videojs-hlsjs.js"></script> 
<script> 
    videojs.options.flash.swf = "video-js.swf"; 
</script> 
</head> 

<body> 
<div class="jsvideo" align="center"> 
<video id="test-stream" class="video-js vjs-default-skin vjs-big-play-centered" width="auto" height="auto" controls preload="auto" poster="images/Funkazoid-Radio-1.jpg" data-setup='{"fluid":true,"aspectRatio":"16:9","controls": true, "autoplay": false, "preload": "auto", "techOrder": ["html5","flash"]}' > 
<source src="http://funkazoidradio.com:8080/hls/test.m3u8" type='application/x-mpegURL' /> 
<source src="rtmp://funkazoidradio.com:1935/live/test" type='rtmp/mp4' /> 
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p> 
</video> 
<script src="video.js"></script> 
<script src="videojs-hlsjs.js"></script> 
<script> 
    // fire up the plugin 
    videojs('video'); 
</script> 
</body> 

Nginx的配置文件:

#user root; 
worker_processes 1; 

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

#pid  logs/nginx.pid; 

events { 
    worker_connections 1024; 
} 

http { 
    include  mime.types; 
    default_type application/octet-stream; 

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
    #     '$status $body_bytes_sent "$http_referer" ' 
    #     '"$http_user_agent" "$http_x_forwarded_for"'; 

    #access_log logs/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 

    #keepalive_timeout 0; 
    keepalive_timeout 65; 

    #gzip on; 

    server { 
     listen  8080; 
     server_name localhost; 

     #charset koi8-r; 

     #access_log logs/host.access.log main; 

     location/{ 
      root html; 
      index index.html index.htm; 
     } 

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

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

    location /stat.xsl { 
     root html; 
    }  

} 
rtmp { 
    server { 
     listen 1935; 
     chunk_size 4096; 
     application live { 
      live on; 
      record off; 
      hls on; 
      hls_path /tmp/hls; 
     } 
    } 
} 

问题:

  1. 这可能是一个问题CORS?我有其他人为我编译Nginx和模块(noob)。我向他提到我没有在配置文件中看到CORS,但他说他在Nginx的根目录中启用了CORS,他说如果CORS未启用,该流不适用于任何人。无论如何,我尝试将CORS放入配置文件中,但它没有改变。我尝试使用代码来自2个地方: https://enable-cors.org/server_nginx.html https://gist.github.com/Stanback/7145487

  2. 我是不是在寻找一个设备/ OS的具体问题?今天我参加了一场有6名观众的测试。 3可以查看流,3不能。其中2人不能在LG手机上运行Android 6,所以我想也许这是针对Android 6或LG的 - 但是我有另外一个使用Android 6的人,他们说手机上的数据流运行良好。

  3. 在浏览器或移动操作系统兼容性方面,它是Video.js的限制吗?

+0

此外,我强迫HTTPS通过htaccess – djkfunk

+0

真的吗?没有一个答案? – djkfunk

回答

0

在RTMP块,我不看 “HLS” 的应用程序,你缺少它

请使用

rtmp { 
    server { 
     application live { 
      live on; 
      record off; 

     } 

     application hls { 
      live on; 
      interleave on; 
      wait_key on; 
      hls on; 
      hls_path /tmp/hls; 
      hls_fragment 1; 
      hls_playlist_length 4; 
     } 
    } 
} 

感谢和BestRegards

相关问题