【玩具】获取B站视频的音频片段
2024-08-31 02:12:01
事情是这样的,我有个和社畜的社会地位不太相符的小爱好——听音乐剧。
基本上是在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!
所以就写了个前端页面来调用:
至此,就可以随时随地的下载想要的视频音乐片段啦,优雅~
最新文章
- 通过sqlserver发送邮件
- cookie 保存上次访问url方法
- Java笔记7-多态父类静态
- Markdown 快速入门
- mpstat, pidstat, iostat和sar
- django-url调度器-中级篇
- Eclipse —— 如何修改文件的默认编辑器
- 1109. Conference(二分图)
- cuda-convnet 卷积神经网络 一般性结构卷积核个数 和 输入输出的关系以及输入输出的个数的说明:
- Linux 命令 - jobs: 显示后台作业的状态信息
- mybatis整合redis
- Runtime 10种用法
- perl5 第十章 格式化输出
- 在DLL中封装的VCL窗体Tab键响应的问题
- Dynamics CRM 注册插件dll到GAC
- 【UML】NO.52.EBook.5.UML.1.012-【UML 大战需求分析】- 交互概览图(Interaction Overview Diagram)
- openstack中数据库连接数太多--pymysql.err.OperationalError,1040, u'Too many connections'
- 【python27】猜随机数的小游戏
- GraphX中Pregel单源点最短路径(转)
- 很全的linux网络编程技巧
热门文章
- spring cloud Alibaba --sentinel组件的使用
- Python reload(sys) NameError: name 'reload' is not defined
- jQuery常用验证
- error: ‘int64_t’ does not name a type
- 最近公共祖先 牛客网 程序员面试金典 C++ Python
- c#复制数组的多种方法
- ShardedJedisPipeline 源码分析
- Leetcode 课程表 C++ 图的深度搜索和广度搜索练习
- Visual Studio 2019连接MySQL数据库详细教程
- vue3 学习笔记 (二)——axios 的使用有变化吗?