2017-02-26 78 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

相關問題