用B站客户端下载视频,并提取音频

客户端平台:Android。操作平台:Windows。以AV22222222为例。

一、下载视频
①用客户端打开视频AV22222222,点击缓存,选择清晰度和内容,开始下载。如图1所示。

②下载的内容位于sdcard的/Android/data/tv.danmaku.bili下,是一个文件夹,名字为av号,将其拷贝至PC。此文件夹结构:子目录2、3和4分别为视频的P2、P3和P4,每个子目录的下级目录lua.flv.bili2api.80中的文件0.blv即是视频文件 (视频流H.264,音频流AAC,在PC和Android用播放器都可直接播放)。如图2所示。

二、重命名
①由于下载的3个视频文件名都是0.blv,现将其分别重命名为2.blv、3.blv、4.blv,即目录22222222的下一级目录名。
方法:将以下内容复制到文本文件,并保存为1.bat执行。(修正自https://ask.csdn.net/questions/664401)。执行过程如图3所示。
——复制下述内容——
@echo off
:start
setlocal enabledelayedexpansion
title 文件重命名
set isrun=n
echo 请把包含要处理的文件的[文件夹]拖动到此处,回车确定
::set /p让用户自己输入变量的值
set dir=n&set /p dir=
if "%dir:"=%"=="n" cls&goto start
cls&echo ====================================
:run
for /f "delims=" %%i in ('dir /a:d /b %dir%\') do (
rem 文件路径
set path=%%i
for /f "delims=" %%j in ('dir /s /b /a:-d %dir%\"!path!"\*.blv') do (
set full=%%~dpnxj
set exten=%%~xj
rem set path=!path:~0,-1!
if /i "!isrun!"=="n" (
echo ren "!full!" "!path!!exten!"
) else (
ren "!full!" "!path!!exten!"
echo 更名为:"!path!!exten!"
)
)
)
echo ====================================
if /i "%isrun%"=="n" (
echo 即将执行以上操作,是否执行[Y/N]
set isrun=n&set /p isrun=
if /i "!isrun!"=="y" ( goto run ) else ( cls&goto start )
) else (
echo.&echo 更名完成!
echo 任意键返回&pause>nul&cls&goto start
)
——复制上述内容——

执行完成后3个目录下的0.blv分别被重命名为2.blv、3.blv和4.blv。
②如需要进一步将其重命名为视频分P的名字,可以直接在网页端复制名字,得到:"1、BGM合集2、title3、OP4、ED"
用word将数字顿号替换为手动换行符可得到:
"BGM合集
Title
OP4
ED"
之后可以利用excel进行批量重命名,如图4所示。

三、提取音频
下载ffmpeg.exe (https://ffmpeg.zeranoe.com/builds/),放入视频所在文件夹(或设置环境变量),将以下内容复制到文本文件,并保存为2.bat执行。如图5所示。
——复制下述内容——
for %%i in (*.blv) do ffmpeg -i "%%i" -vn -c:a copy "%%~ni.aac"
——复制上述内容——

执行后即可得到aac文件,由于视频投稿现已支持320k AAC,故音频可以达到22000HZ。
-完-