起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3113|回复: 6

[结贴] 浏览器播放视频问题

[复制链接]

75

主题

486

帖子

862

积分

高级会员

Rank: 4

积分
862
QQ
发表于 2017-6-13 10:44:59 | 显示全部楼层 |阅读模式
本帖最后由 470772345 于 2017-6-13 10:53 编辑

有大神遇过吗? 在safari播放加载的视频 播放不了 。其他浏览器可以。 报如图的问题。 响应头没有内容,   可是静态的资源就可以正常播放 。但还是会报这个错
R1ICV]]}47U89~~27JQ6YT1.jpg
发表于 2017-6-13 12:10:18 | 显示全部楼层
这是请求一个json 文件!是访问你的服务器吗??
json文件和视频播放没啥关系吧!

建议先百度查一下原因吧!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

75

主题

486

帖子

862

积分

高级会员

Rank: 4

积分
862
QQ
 楼主| 发表于 2017-6-15 14:34:39 | 显示全部楼层
liangyongfei 发表于 2017-6-13 12:10
这是请求一个json 文件!是访问你的服务器吗??
json文件和视频播放没啥关系吧!

背景:
       之前有个Android和iOS的项目要在线播放视频,服务器是用tomcat,而视频的播放需要用户的权限验证才能操作。所以如果将视频文件单纯的放入webroot下直接播放,就没有权限问题了。原先在解决这个问题时,搜索了很多文章都没有直接说明(可能我的描述有误)这个问题。所以记录下自己的解决方法。


       当时的想法:由于这个项目是从网站平台上一直过来,当时的web上的播放器是flash,用tomcat下的servlet进行播放,所以移动端也要调用那个servlet去播放,结果是“播放格式错误”。
分析:

       看了同事写的servlet,原来是一个类似文件下载的程序,我不清楚为什么在flash可以这样播放,这个问题这里先不去讨论,而当我直接打开浏览器,输入视频的url时居然也不能播放,而把视频放入webroot后,用webroot下的url去请求,在移动端和浏览器上都可以播放了。webroot结构如下:



       其中VideoServlet.java是通过servlet的url去访问mp4发送到客户端,而webroot下的视频是可以直接通过url进行播放。

解决:
       在chrome store上下载了”Live HTTP Headers”插件,可以监测chrome网页浏览时请求响应的。先对webroot下的视频在chrome上播放,可以获取如下图解析信息。

       发现有4条2xx的响应(忽略404,那是图标),我们知道200是http返回成功的标志,而206是说明客户端在请求部分资源,而服务器要返回这部分资源给客户端。所以servlet下的url为什么不能在浏览器上播放的原因就出来。从图上可以拿其中一条206的数据分析下(不是很了解,可以去看下http协议的一些文章)。
       在response端,”Accept-Ranges bytes” 表示服务器同意分段发送,”Content-Length”表示发送资源的大小,”Content-Range”中的”bytes”字段表示一个发送文件资源的范围a-b/c,a表示资源开始位置,b表示结束位置,c表示总资源大小。其实就是一个断点续传的问题。当然request端中,可以通过getHeader("Range”)来获取要加载资源的范围,很可惜“Live HTTP Headers” 中没有显示出来。大家可以通过chrome或firefox的调试器去获取替代“Live HTTP Headers”,我相信能看到的内容会更详细,虽然我没有尝试过。
       最后修改servlet为断点续传模式就可以了,在浏览器上可以正常播放,而在移动端也可播放了。 具体代码不是本文的所叙述的内容,本文只阐述原理。目前还未去了解flash播放器可以通过单纯的文件下载servlet就能播放视频。
http://bbs.justep.com/thread-49855-1-1.html
回复 支持 反对

使用道具 举报

75

主题

486

帖子

862

积分

高级会员

Rank: 4

积分
862
QQ
 楼主| 发表于 2017-6-15 14:35:23 | 显示全部楼层
470772345 发表于 2017-6-15 14:34
背景:
       之前有个Android和iOS的项目要在线播放视频,服务器是用tomcat,而视频的播放需要用户的权 ...

http://blog.csdn.net/acmersch/article/details/41039801   原帖地址
http://bbs.justep.com/thread-49855-1-1.html
回复 支持 反对

使用道具 举报

发表于 2017-6-15 14:43:16 | 显示全部楼层
470772345 发表于 2017-6-15 14:34
背景:
       之前有个Android和iOS的项目要在线播放视频,服务器是用tomcat,而视频的播放需要用户的权 ...

和这个比较类似
http://bbs.wex5.com/forum.php?mo ... &extra=page%3D1
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

75

主题

486

帖子

862

积分

高级会员

Rank: 4

积分
862
QQ
 楼主| 发表于 2017-6-16 12:03:59 | 显示全部楼层
liangyongfei 发表于 2017-6-15 14:43
和这个比较类似
http://bbs.wex5.com/forum.php?mod=viewthread&tid=100170&extra=page%3D1

谢谢你~
http://bbs.justep.com/thread-49855-1-1.html
回复 支持 反对

使用道具 举报

24

主题

146

帖子

1017

积分

金牌会员

Rank: 6Rank: 6

积分
1017
QQ
发表于 2019-1-12 11:17:45 | 显示全部楼层
ios 无法播放,安卓没问题,其实就是文件没有后缀引起的,修改simpleattachment 插件,上传到服务器的时候加上后缀.mp4,就可以了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-12-4 02:03 , Processed in 0.062925 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表