b站视频下载接口分析 | 您所在的位置:网站首页 › b站番剧视频下载在哪 › b站视频下载接口分析 |
"video": [
{
"start_with_sap": 1,
"bandwidth": 4112579,
"sar": "1:1",
"backupUrl": [""],
"codecs": "avc1.640028",
"base_url": "",
"backup_url": [""],
"segment_base": {
"initialization": "0-990",
"index_range": "991-4490"
},
"mimeType": "video/mp4",
"frame_rate": "16000/672",
"SegmentBase": {
"Initialization": "0-990",
"indexRange": "991-4490"
},
"frameRate": "16000/672",
"codecid": 7,
"baseUrl": "",
"size": 0,
"mime_type": "video/mp4",
"width": 1920,
"startWithSAP": 1,
"id": 112,
"height": 1080,
"md5": ""
}]
其中的base_url、id和codecs字段是我们需要的。不同的id对应不同的分辨率,codecs对应编码方式,base_url就是对应分辨率和编码方式下的视频流地址。 audio对应的json字符串和video类似,同样是base_url为音频流地址。 (注意其上的api都得在请求头加referer字段,否则无法访问)
视频流地址可以在请求头加range字段,用于分段下载或者部分下载,如不加则为下载所有,代码如下: headers = { 'user-agent':'', 'referer':'', 'range':'byte=0-9999' #此为range字段,代表下载整个视频从0到9999字节的数据 } with open('demo_vedio.mp4','wb+') as file1, open('demo_audio.mp3','wb+') as file2: file1.write(requests.get(vedio_url,headers=headers).content) #下载video file2.write(requests.get(audio_url,headers=headers).content) #下载audio接下来就是等资源下载完毕了,如有需要可以用格式工厂将音频视频合并成为一个完整的视频。
总结:b站还是很友好的,没有弄一些加密什么的来防爬,通过这次也大致了解了hash协议的原理,总体来说想下载b站视频并不难。
b站视频下载相关的源码网址:https://github.com/modifyGB/bili_video_download |
CopyRight 2018-2019 实验室设备网 版权所有 |