【玩具】获取B站视频的音频片段
事情是这样的,我有个和社畜的社会地位不太相符的小爱好——听音乐剧。
基本上是在B站上点开视频听,不是不想在网易云或者QQ音乐听,只是在这些音乐软件上面,我想听的片段要不就收费,要不版本不是我喜欢的,要不干脆就找不到。
而且,一部音乐剧里面,总是有些片段我很喜欢,但是有些片段则没多大兴趣,如果在B站上面听,则总要听一遍这些不感兴趣的地方,这效率就很低了。
那么干脆就搞一个小工具吧!就放服务器上面,直接用接口去调用,然后把处理好的音频文件返回回来,这样也不用在本地下载整个视频然后自己手动切了,快捷又优雅~
作为面向百度/github开发的资深开发者,这点需求是难不倒我的,很快找到了一个简单好用的B站视频下载工具,地址在这儿:https://github.com/nilaoda/BBDown(感谢BBDown这个库的开发者大佬,造福百姓功德无量)
然后写个小脚本,来调用这个BBDown的工具进行视频下载:
#! /bin/sh
#使用方法
#./bilicut.sh bv号 开始时间 结束时间 输出文件名 分P选项(可选)
#例如:
#./bilicut.sh BV1uz4y1S7oG 00:00:20 00:00:30 悲惨世界0301 3
# 参数说明
# 1: bv号
# 2: 开始时间
# 3: 结束时间
# 4: 输出文件名
# 5:分P索引
#环境要求说明:
#此脚本使用BBDown下载工具,需要将脚本与BBDown执行文件放在同一目录下
#BBDown传送门:https://github.com/nilaoda/BBDown
#需要提前安装好FFmpeg环境,详见 https://blog.csdn.net/weixin_36155936/article/details/116988522
#仅音频选项 --audio-only
if [ ! -d "/root/download" ]; then
mkdir /root/download
fi
if [ ! -d "/root/output" ]; then
mkdir /root/output
fi
biliUrl="https://www.bilibili.com/video/"
downloadFlag=0
echo "正在下载..."
if [ $5 > 0 ] ; then
path=/root/download/${1}/P${5}
echo "分P选择:P${5}"
#判断是否已经有缓存文件
if [ ! -d "/root/download/${1}" ]; then
mkdir /root/download/$1
fi
if [ ! -d "/root/download/${1}/P${5}" ]; then
mkdir /root/download/$1/P$5
results=`./BBDown ${biliUrl}${1} -p ${5} --work-dir /root/download/${1}/P${5} --audio-only`
downloadFlag=1
fi
else
path=/root/download/${4}
#echo "不存在分P选项"
#判断是否已经有缓存文件
if [ ! -d "/root/download/${1}" ]; then
mkdir /root/download/$1
results=`./BBDown ${1} --work-dir /root/download/${4} --audio-only`
downloadFlag=1
fi
fi
if [ $downloadFlag -eq 0 ] ; then
echo "使用缓存文件"
else
echo "下载完成"
fi
files=$(ls $path)
echo "文件标题为 ${files}"
echo "切片时间区间 ${2} - ${3}"
echo "开始处理......"
ffmpeg -ss $2 -i "${path}/${files}" -c copy -t $3 "/root/output/${4}.mp4" -loglevel quiet
ffmpeg -i "/root/output/${4}.mp4" -vn -codec copy "/root/output/${4}".m4a -loglevel quiet
echo "处理完成 输出文件 /root/output/${4}.m4a"
(已上传至GitHub,有Windows版可以使用:https://github.com/heng4719/BBCut)
同时在脚本的最后,也可以看到用ffmpeg去对这个视频进行了一个剪辑和格式转换的处理,最终把音频文件输出到 /root/output/目录下。
到这里,实际上主要功能就已经完成了,调用这个脚本传入指定的视频bv号和其他参数,就可以完美实现需求了。
但是不够优雅!
难道我每次想切视频,都还得连到服务器上面去手动写命令?
Not elegant!
所以就写了个前端页面来调用:

至此,就可以随时随地的下载想要的视频音乐片段啦,优雅~
【玩具】获取B站视频的音频片段的更多相关文章
- python 爬取B站视频弹幕信息
获取B站视频弹幕,相对来说很简单,需要用到的知识点有requests.re两个库.requests用来获得网页信息,re正则匹配获取你需要的信息,当然还有其他的方法,例如Xpath.进入你所观看的视频 ...
- ffmpeg+Python实现B站MP4格式音频与视频的合并
目录 安装 官网下载 环境变量 验证 ffmpeg的使用 Python实现自动处理 文件结构 番剧缓存结构 常规缓存结构 文件信息 代码 具体代码 代码说明 安装 官网下载 http://ffmpeg ...
- 在C#中用MediaInfo获取视频或音频的属性
MediaInfo是一个开源的获取视频或音频的信息的非常便利的工具,它本身就带有一个GUI界面,可以非常方便我们查看视频信息.但是,当我们写一些转码程序时,往往需要在程序中获取视频信息的时候. 以前我 ...
- Python批量合并处理B站视频
最近想学习后端,又不想花钱,怎么办呢?于是在手机端B站(哔哩哔哩)上面找到了满意的免费视频教程,但是手机端看起来很不方便啊.于是,我通过在手机端缓存下来后,导入到了电脑端,但是我后面了发现两个问题: ...
- Python玩转各种多媒体,视频、音频到图片
我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...
- 与众不同 windows phone (41) - 8.0 相机和照片: 通过 AudioVideoCaptureDevice 捕获视频和音频
[源码下载] 与众不同 windows phone (41) - 8.0 相机和照片: 通过 AudioVideoCaptureDevice 捕获视频和音频 作者:webabcd 介绍与众不同 win ...
- Android开发之获取本地视频和获取自拍视频
1.获取本地所有视频 public void getLoadMedia() { Cursor cursor = UILApplication.instance.getApplicationContex ...
- 视频和音频播放的演示最简单的例子6:OpenGL广播YUV420P(T经exture,采用Shader)
===================================================== 最简单的视频和音频播放的演示样品系列列表: 最简单的视音频播放演示样例1:总述 最简单的视音 ...
- 使用咪咕云做C站视频直链源
首先我们先百度搜索一下“咪咕云” 点击进入-->用户注册或登录 注册时选择个人用户-->前往邮箱激活-->进入邮箱激活成功后重新登录 登录后在控制台选择“云点播” 即可进行上传视频了 ...
随机推荐
- 简明教程 | Docker篇 · 其一:基础入门
了解Docker Docker是什么 Docker是指容器化技术,用于支持创建和使用 Linux 容器,同时Docker也是软件容器平台. 什么是容器(container) 容器是主机上与其他进程隔离 ...
- 21.6.21 test
\(NOI\) 模拟赛 字符串滚出 \(OI\) 看到题目名称,\(T1\) 串,\(T2\) 两个串,\(T3\) K个串,我 \(\cdots\),血压已经上来了. \(T1\) 写了 \(O(n ...
- https的加密解密过程
前置知识 SSL是90年代Netscape弄出来的一套东西,为的是解决HTTP协议明文传输数据的问题.后来SSL慢慢成了事实上的标准,于是IETF就把SSL标准化了,名字叫做TLS,TLS 1.0其实 ...
- Linux上Qt旋转显示
对于嵌入式设备来说用于显示的LCD总是千奇百怪,比如说明明是一个竖屏,但是客户却要当横屏使用,也就是意味着我们需要将整个屏幕上显示的内容旋转90度或者270度. 这个操作对于Android系统来说相当 ...
- linux rtl8188eu ap模式 密码错误 disassoc reason code(8)
2018-05-30 14:12:46 于深圳南山科技园 最近有个项目,客户需要通过手机app通过机器wifi热点连接,从而实现对机器的设置及视频的实时预览等各种功能.这两天一直在搞rtl8188eu ...
- Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) Editorial题解
A 略,发现只有当末尾为9时才满足条件.. B 简单模拟,注意数组大小!!! C 简单模拟. D 比较暴力的一个做法就是每次找一个开始匹配的起始点,然后每次不同时向后跳2就行了. 注意这里最后还要判断 ...
- Vue 基础自查——条件渲染和列表渲染
v-if和v-show的区别是什么? v-if和v-for为什么不能一起用? v-for中的key有什么作用? 1 v-if 和 v-show 1.1 作用 都用来控制元素的显示和隐藏 1.2 控制元 ...
- 安装RedHat和Centos后做的15件事情
由于之前的Centos 7不支持无线网络连接,我尝试着将内核升级至4.8还是无效,遂决定换回RedHat 7,目前系统已经安装好,版本是Red Hat Enterprise Linux 7.3,下面是 ...
- C++ IO基础
一:c++I/O处理,按照数据输入输出的过程,形象的将其看做流.数据在流中进行传播. 所有的流有两个基类:ios和streambuf类 streambuf:提供对缓冲区的基本操作,设置缓冲区等 ios ...
- robot_framewok自动化测试--(8)SeleniumLibrary 库(selenium、元素定位、关键字和分层设计)
SeleniumLibrary 库 一.selenium 1.1.Selenium 介绍 Selenium 自动化测试工具,它主要是用于 Web 应用程序的自动化测试,但并不只局限于此,同时支持所有基 ...