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

所以就寫了個前端頁面來調用:

至此,就可以隨時隨地的下載想要的視頻音樂片段啦,優雅~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM