其他分享
首页 > 其他分享> > 【玩具】获取B站视频的音频片段

【玩具】获取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!

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

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

标签:片段,音频,玩具,echo,fi,download,output,root,BBDown
来源: https://www.cnblogs.com/zhangdali/p/15638343.html