返回信息流主要问题是,我的网页上的视频无法显示。有点长,麻烦各位大神了
我使用的是linux下的apache_arm。应该和pc上的apache是一样的,通过httpd.conf来配置。
本系统由一个带摄像头的ARM板作为服务器,通过wifi连接无线路由,设置其内网ip为192.168.1.120不变。由Apache来作为服务器软件,用无线路由的端口映射功能来实现从公网对ARM板的访问,即设置80和8080端口的所有访问均转送给192.168.1.120
经过测试方案是基本可行的。
网页内容是由apache的htdocs文件夹下的index.php来作为主要页面(就是从pc端浏览器直接输入ip所访问到的页面),该页面中用javascript调用了一个名为stream.html的网页文件来显示摄像头所录制的视频:(相关代码如下)
<script type="text/javascript">
url = new Array();
url[1] = "/www/stream.html";
url[2] = "/temperature.php";
window.setInterval(function(){document.getElementById("ifr2").src=url[2]; },1000) document.getElementById("ifr1").src=url[1];
</script>
由于软件的结构问题,stream.html与index.php不在同一文件夹下,所以在apache的httpd.conf中已经对/www/做了别名设置,以此来完成对非默认文件夹下网页文件的访问:
Alias /www/ "/home/mjpg-streamer/www/"
目前问题在于,如此操作后,可以访问到ARM板,出现index.php,并且stream.html中的文字内容(如标题之类)也正常显示。唯独视频没有显示,而是出现了一个“破碎的图片”的标志。视频不是数据流的方式,是通过不断刷新获取到的图片来得到的,在stream.html中的<script type="text/javascript">里写的
function createImageLayer()
function imageOnload()
function imageOnclick()
整个系统在功能上应该是没有问题的,因为本来是在局域网内访问,index.php中相关网页代码为:
url[1] = http://192.168.1.120:8080/stream.html;
这样在局域网内是可以访问的,当然从公网上无法访问。
还有一种比较蠢的方法,就是把url改成
url[1] = http://10.105.xxx.xxx:8080/stream.html;
其中10.105.xxx.xxx为在pc端浏览器所输入的ip地址,这样做是可以正常显示的,但由于没有固定ip,所以把这个ip写在index.php中就显得比较不可取。但由此可以证明系统在其他功能方面是没有问题的。
基于上述原因,考虑从本地调用网页文件stream.html更为合理,于是改了apache的相关配置,然后出现一开始所说的问题,请给小弟指点一下啊。
这是一条镜像帖。来源:北邮人论坛 / www-technology / #17449同步于 2012/9/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
再发一个问问。。。
yy2651592
2012/9/9镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
【 在 binux 的大作中提到: 】
: stream.html的端口和index.php的端口是不一样的?!
是不一样吧,index.php是80吧。stream.html是8080吧
【 在 binux 的大作中提到: 】
: stream.html的端口和index.php的端口是不一样的?!
端口不一样会有区别吗,两个端口都在路由器里做了映射
不太清楚这个端口具体有什么意义。。。
mjpg-streamer(给stream.html提供视频数据的软件)配置使用的是8080端口
当然有区别了
【 在 yy2651592 的大作中提到: 】
: 端口不一样会有区别吗,两个端口都在路由器里做了映射
: 不太清楚这个端口具体有什么意义。。。
: mjpg-streamer(给stream.html提供视频数据的软件)配置使用的是8080端口
【 在 binux 的大作中提到: 】
: 当然有区别了
我知道了,stream.html中的视频内容是已经由mjpg-streamer发布到8080端口上了,所以从80端口访问不到。我注册了个3322的动态域名搞好了:
url[1] = "http://buptyangyang.3322.org:8080/stream.html";
这个样子。。。