第一步:爬取视频音频文件
打开一个b站的想爬取的视频,鼠标右键点击检查,点击网络
筛选器输入m4s
b站的视频分为视频文件(无声音)和音频文件两个文件,所以要两个一起爬取
找到两个不一样的请求,获取请求url
请求标头中获取'User-Agent'和'Referer'
使用requests获取内容写入文件
代码如下:
import requests
# 两个请求url,一个获取视频,一个获取音频
url1='https://xy42x101x55x132xy240ey908y8011yy4xy.mcdn.bilivideo.cn:4483/upgcxcode/46/19/28204531946/28204531946-1-100024.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1739786946&gen=playurlv2&os=mcdn&oi=0&trid=00005a22bd63c14a4e96ac171ef0496fdb8au&mid=350291361&platform=pc&og=cos&upsig=6a4d5d5de43e4d11c689e17bba7638f6&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform,og&mcdnid=50018151&bvc=vod&nettype=0&orderid=0,3&buvid=F370FCFA-4EAE-017C-BFF8-FA6AA9F42B7741578infoc&build=0&f=u_0_0&agrr=1&bw=25149&logo=A0020000'
url2='https://xy42x101x55x132xy240ey908y8011yy4xy.mcdn.bilivideo.cn:4483/upgcxcode/46/19/28204531946/28204531946-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1739786946&gen=playurlv2&os=mcdn&oi=0&trid=00005a22bd63c14a4e96ac171ef0496fdb8au&mid=350291361&platform=pc&og=hw&upsig=ec882fc3c905af67e85431228ca9b12e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform,og&mcdnid=50018151&bvc=vod&nettype=0&orderid=0,3&buvid=F370FCFA-4EAE-017C-BFF8-FA6AA9F42B7741578infoc&build=0&f=u_0_0&agrr=1&bw=9924&logo=A0020000'
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0',
'Referer': 'https://www.bilibili.com/video/BV16M4m1X7Hw/?spm_id_from=333.1391.0.0&vd_source=4ebd370ab101aa9571482bdf77ad7a4a'
}
#获取repsonse对象
re1 = requests.get(url1, headers=headers)
re2 = requests.get(url2, headers=headers)
# 将响应内容写入mp4文件
with open('sp1.mp4', 'wb') as f:
f.write(re1.content)
with open('sp2.mp4', 'wb') as f:
f.write(re2.content)
第二步:合成视频
接下来需要将获取到的视频文件和音频文件合成一个有音频的视频文件
from moviepy.video.io import ffmpeg_tools
ffmpeg_tools.ffmpeg_merge_video_audio('sp1.mp4','sp2.mp4','b站合成视频.mp4')
这样就完成啦。