我正在使用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;
}
}
}
问题:
这可能是一个问题CORS?我有其他人为我编译Nginx和模块(noob)。我向他提到我没有在配置文件中看到CORS,但他说他在Nginx的根目录中启用了CORS,他说如果CORS未启用,该流不适用于任何人。无论如何,我尝试将CORS放入配置文件中,但它没有改变。我尝试使用代码来自2个地方: https://enable-cors.org/server_nginx.html https://gist.github.com/Stanback/7145487
我是不是在寻找一个设备/ OS的具体问题?今天我参加了一场有6名观众的测试。 3可以查看流,3不能。其中2人不能在LG手机上运行Android 6,所以我想也许这是针对Android 6或LG的 - 但是我有另外一个使用Android 6的人,他们说手机上的数据流运行良好。
在浏览器或移动操作系统兼容性方面,它是Video.js的限制吗?
此外,我强迫HTTPS通过htaccess – djkfunk
真的吗?没有一个答案? – djkfunk