ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【玩具】获取B站视频的音频片段

2021-12-03 16:02:35  阅读:193  来源: 互联网

标签:片段 音频 玩具 echo fi download output root BBDown


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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有