事情是这样的,我有个和社畜的社会地位不太相符的小爱好——听音乐剧。

基本上是在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!

所以就写了个前端页面来调用:

至此,就可以随时随地的下载想要的视频音乐片段啦,优雅~

最新文章

  1. 通过sqlserver发送邮件
  2. cookie 保存上次访问url方法
  3. Java笔记7-多态父类静态
  4. Markdown 快速入门
  5. mpstat, pidstat, iostat和sar
  6. django-url调度器-中级篇
  7. Eclipse —— 如何修改文件的默认编辑器
  8. 1109. Conference(二分图)
  9. cuda-convnet 卷积神经网络 一般性结构卷积核个数 和 输入输出的关系以及输入输出的个数的说明:
  10. Linux 命令 - jobs: 显示后台作业的状态信息
  11. mybatis整合redis
  12. Runtime 10种用法
  13. perl5 第十章 格式化输出
  14. 在DLL中封装的VCL窗体Tab键响应的问题
  15. Dynamics CRM 注册插件dll到GAC
  16. 【UML】NO.52.EBook.5.UML.1.012-【UML 大战需求分析】- 交互概览图(Interaction Overview Diagram)
  17. openstack中数据库连接数太多--pymysql.err.OperationalError,1040, u'Too many connections'
  18. 【python27】猜随机数的小游戏
  19. GraphX中Pregel单源点最短路径(转)
  20. 很全的linux网络编程技巧

热门文章

  1. spring cloud Alibaba --sentinel组件的使用
  2. Python reload(sys) NameError: name 'reload' is not defined
  3. jQuery常用验证
  4. error: ‘int64_t’ does not name a type
  5. 最近公共祖先 牛客网 程序员面试金典 C++ Python
  6. c#复制数组的多种方法
  7. ShardedJedisPipeline 源码分析
  8. Leetcode 课程表 C++ 图的深度搜索和广度搜索练习
  9. Visual Studio 2019连接MySQL数据库详细教程
  10. vue3 学习笔记 (二)——axios 的使用有变化吗?