关于浏览器播放视频的些许理解

浏览器地址栏输入服务器端视频的url即可播放。刚开始觉得还有点神奇,追踪network请求,发现视频还没下载完就可以播放,还可以拖动进度条到指定时间。分析了一下网络请求和视频格式,得出些许领悟。

 

1.服务器端支持文件的分块传输。即浏览器请求指定位置的数据,这个位置指的是文件内容的位置,不是视频帧在文件中的位置。服务器不用管几分几秒的视频帧在文件的哪个地方。

2.浏览器端读取视频文件的头部的部分数据,分析视频信息,读取不同时间的视频帧对应在文件位置,mp4中格式的Time To Sample Box(stts)

3.默认从头开始播放,如果存在stts,也可以拖动进度条播放,

4.浏览器播放完一段视频后,或者播放过程中,下载紧接着当前时间的后的数据。

 

判断服务器是否支持分块传输

curl -i --range 0-10 http://www.sample.com/commonweb/a.txt
HTTP/1.1 206 Partial Content
Server: nginx/1.12.2
Date: Wed, 15 May 2019 11:59:41 GMT
Content-Type: text/plain
Content-Length: 11
Last-Modified: Wed, 15 May 2019 11:49:34 GMT
Connection: keep-alive
ETag: "5cdbfcce-25"
Content-Range: bytes 0-10/37

abcdefghijk

如果服务器返回11个字节的内容,即支持分块传输,前提是url对应的文件存在,并且内容大于10个字节

也可以用其他方式发起网络请求,http status一般是200、204、206

如上使用postman模拟分块请求文件,文件里面有37个字符,只获取10个,注意使用get请求,post请求可能返回405,not allow

 

mp4视频格式研究

https://www.cnblogs.com/ranson7zop/p/7889272.html

 

分块传输,加上视频时间轴的支持,只要能解析视频帧即可播放视频,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值