文章目录

  • 1.背景
  • 2. 实现过程
    • 一. 下载文件至手机
    • 二. 找到手机中的文件
    • 三. 把文件转移至电脑
    • 四. 组合音频文件和视频文件
  • 3.不足之处

1.背景

  今天想在B站上下载一套教程,奈何人比较菜不会用爬虫,就想着用第三方的’唧唧’来下载。可惜唧唧的下载速度太慢了,大概只有150kb/s,就想着先通过手机下载,再把文件转移到电脑上。(硕鼠没用过,不知道速度如何)

2. 实现过程

一. 下载文件至手机

手机下载视频应该是不限速的,下载速度非常快,基本有4-5mb/s,20G的视频也很快下好了,不过记得给手机留出足够的空间

二. 找到手机中的文件

对于安卓手机,如果没有自行设置储存位置的话,B站下载的视频会放在【所有文件】-- 【Android】 – 【data】 – 【tv.danmaku.bili】-- 【download】下

在手机上进入文件,会发现三个文件夹(这是因为我刚刚下载了三个分P)

选择任一文件夹进入,里面的三个子文件夹
‘64’存放视频音频文件
danmaku.xml存放弹幕信息
‘entry.json’存放了该视频的基本信息(标题,分P等信息都在这里面)

进入’64‘文件,我们发现视频被分成了音频文件’autio.m4s‘和视频文件’video.m4s’。我们需要先将他们改成’.mp4’格式再合并成一个MP4文件。

三. 把文件转移至电脑

然而,当连接手机后,发现在电脑中打开’download‘文件夹是空的,根本不存在我们下载的视频。

我猜测应该是这个’download‘文件夹存在特殊之处,所以我们需要在手机上将视频文件转移到其他地方。


将文件复制到\Android\data\tv.danmaku.bili\94680592后,我们就可以复制或者剪切这些文件到电脑上了。

四. 组合音频文件和视频文件

如果视频分P较少,可以手动将两个’.m4s’文件改为’.mp4’文件,再使用格式工厂将二者组合。

因为我需要下载100P,会有100个c_开头的文件,一个个改不切实际,就写了个python小脚本来实现自己更改文件后缀和合并音、视频。

# -*- coding:utf-8 -*-import os, json
import subprocessdef video_add_mp4(audio_file, video_file, output_name):""":param audio_file: 音频文件位置:param video_file: 视频文件位置:param output_name: 输出文件位置(别和音频或者视频文件共用文件夹):return:"""# 合并音视频文件的命令,其中一定要写E:\\FFmpeg_1.07\\bin\\ffmpeg.exe这个绝对路径,不能用添加了环境变量的ffmpegcmd = f'E:\\FFmpeg_1.07\\bin\\ffmpeg.exe -i {audio_file} -i {video_file} -c:v copy -c:a copy {output_name}'print(cmd)# subprocess.call(cmd, shell=True) # 这个方法会打印命令行结果subprocess.Popen(cmd, shell=True)  # 这个方法不会,看起来舒服一点if __name__ == '__main__':base_dir = r'E:\基础文件夹'  # 从手机导入的文件所在的文件夹output_dir = r'E:\输出文件夹'  # 需要导出到的文件夹dirs = os.listdir(base_dir)  # dirs = [c_277730788, c_277730759, c_277730782 ...],获取每一pagecount = 1for video_dir in dirs:video_file = Noneaudio_file = None# 获得'c_277730788'文件夹下的'entry.json'文件,其中包含了视频标题tittle和pageif os.path.exists(os.path.join(base_dir, video_dir, 'entry.json')):entry = os.path.join(base_dir, video_dir, 'entry.json')with open(entry, encoding='utf8') as f:entry_info = json.load(f)# tittle = entry_info['tittle']  # 视频标题page = entry_info['page_data']['page']  # page,即平时说的第几P# print('分集', page)# 把.m4s视频文件转化成.MP4if os.path.exists(os.path.join(base_dir, video_dir, '64', 'video.m4s')):video_file = os.path.join(base_dir, video_dir, '64', 'video.m4s')name = os.path.splitext(video_file)[0]os.rename(video_file, name + '.mp4')# 把.m4s音频件转化成.MP4if os.path.exists(os.path.join(base_dir, video_dir, '64', 'audio.m4s')):audio_file = os.path.join(base_dir, video_dir, '64', 'audio.m4s')name = os.path.splitext(audio_file)[0]os.rename(audio_file, name + '.mp4')# print('视频大小:', count, os.path.getsize(video_file) / 1024 / 1024)# print('音频大小:', count, os.path.getsize(audio_file) / 1024 / 1024)# 准备转化输出output_name = os.path.join(output_dir, str(page) + '.mp4')  # 以page开头来命名,方便视频排序,tips:我直接忽略掉标题了...if video_file and audio_file:video_add_mp4(video_file, audio_file, output_name)print(f'第{count}个视频转化完成!,是第{page}分P')count += 1

脚本内需要用到ffmpeg工具,可以去网上下载。
注意代码内的这部分:

3.不足之处

1. 整个过程略显繁琐
2. 脚本写得比较简陋

B站视频下载方法之--手机下载后再转移至电脑相关推荐

  1. uedit上传视频时提示输入的视频地址有误,请检查后再试

    问题描述: 利用百度的uedit上传视频时提示:输入的视频地址有误,请检查后再试 注意: 本问只解决标题所示错误,前提是你没有别的问题,视频可以正常上传,如果视频上传不能预览,或者上传成功后不能播放, ...

  2. python下载油管、B站视频的方法

    这是2023年的第一篇博客.但绝不是最后一篇. 今天的博客记录篇娱乐向. 今夜想让wh听我听的歌. 利用python的you-get实现听歌自由.(虽然有音乐会员) FFmpeg的下载与安装. FFm ...

  3. wget下载一半断开了继续下载方法及后台下载和查看日志

    wget下载一半断开了继续下载方法 如果你想从网站上下载一个文件: wget https://www.wangchao.info/bak.tar.gz 如果下载一半中断了要继续下载: wget -c ...

  4. php通用下载方法,PHP实现下载断点续传的方法

    这篇文章主要介绍了PHP实现下载断点续传的方法,通过自定义函数来实现PHP的断点续传下载方法,涉及文件的常见操作与指针和缓冲的用法,代码中备有较为详尽的注释便于阅读和理解,需要的朋友可以参考下 本文实 ...

  5. 手机python软件下载安装,python手机下载安装教程

    如何在手机上下载python 应用市场内搜索下载下载Python在您开始之前,在你的计算机将需要Python,但您可能不需要下载它. 首先检查(在命令行窗口输入python)有没有安装Python!如 ...

  6. 文件批量下载方法 文件批量下载工具

    软件版本:Internet Download Manager 在当今数字化时代,我们日常使用电脑进行各种工作和娱乐活动.有时候,我们需要从互联网上下载大量文件,例如电影.音乐.文档等.在这种情况下,手 ...

  7. 网站引入b站视频的方法

    当我们做网站时需要引入B站视频,该怎么办呢,其实B站已经给我们提供了引入代码,把下方代码中的地址替换成你想要引入的视频地址即可 <fieldset><iframe src=" ...

  8. root卡顿解决方法,手机root后很卡

    手机root后屏卡顿 相机卡屏 系统更新出错,求解 楼主你好! 下面的流程是手机root后屏卡顿相机卡屏系统更新出错的解决方法! 1.如果用一些软件root之后已经造成了卡顿及掉相机问题,可以使用RE ...

  9. PHP最新B站视频直链解析源码下载+亲测可用

    正文: 使用教程:将程序源码传到根目录,打开压缩包里面的index.html,就可以在线解析了,另外bilibili.php里面要填写你的B站cookie,否则可能无法解析到1080P的视频. 程序: ...

  10. python下载方法-python实现下载文件的三种方法_python

    本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...

最新文章

  1. 【MediaPipe】(3) AI视觉,人脸识别,附python完整代码
  2. 大二上学期做的不入眼的导航系统。
  3. Chrome模拟手机浏览器(iOS/Android)的三种方法,亲测无误!
  4. python 制作wordcloud词云
  5. 数据结构与算法--这个需求很简单怎么实现我不管(发散思维)
  6. jboss7.1.1 部署_在JBoss AS 7上部署BroadleafCommerce 2.0
  7. 苹果电脑可以装windows系统吗_不只是桌面,这个 Windows 皮肤可以帮你全局美化 Windows 系统
  8. Linear Regression Using Least Squares Method 代码实现
  9. ASP.Net中服务器控件的生命周期
  10. Linux 获取grep前后几行
  11. 分布式事务介绍以及几种方式对比
  12. 微服务与敏捷开发(Scrum/Kanban)的核心思想之我见
  13. 物联网的那些事----------01无线通信技术介绍
  14. 用adblock来屏蔽百度热搜
  15. 几款H桥电机驱动芯片直流有刷电机驱动芯片性能分析
  16. 汉语计算机系统,汉语编程单片机的计算机系统
  17. 如何用六个步骤封装Python代码包
  18. (每日一练c++)CC57 链表内指定区间反转
  19. 横河变送器EJA530E-JBS4N-017EL/NS21
  20. 预复试网申|上海对外经贸大学2023级MBA预复试网申通道开启

热门文章

  1. 对Ajax回调函数中返回错误信息的处理及常见情况整理
  2. 鼠标右键新建没有.txt文本文档
  3. 浏览器显示json格式
  4. foxmail超大附件密码不对的解决办法
  5. 增强 扫描王 源码_java,OpenCV简单实现类似“全能扫描王”功能
  6. 有监督学习与无监督学习的区别
  7. 视频编解码发展历程(从AVC到HEVC再到VVC)(一)
  8. 吹捧导师师娘“神论文”的作者,被处理了
  9. Android申请相机权限
  10. android 自动旋转开关,教你华为mate30如何彻底关闭自动旋转