you-get 下载b站视频后,可以看到有xml格式的弹幕,但需要转下格式才可以看

1、下载 Danmu2Ass 软件

​https://newsoftdown01.rbread05.cn/down/Danmu2Ass_v1.1.zip?timestamp=61ff4176&auth_key=64b2cc8e3ea95da99182df0736c60667​

可以直接把文件拉到对应的exe文件图标处,就可以了。但是如果很多视频,可以选择程序循环调用 Danmu2Ass.exe 打开xml转码。

下面是我

2、编写程序,循环调用

#include <io.h>
#include <iostream>
#include <vector>
#include<windows.h>
using namespace std;
bool endswith(const char*str1, const char*str2) {
int len1 = strlen(str1), len2 = strlen(str2);
if (len2 > len1) return false;
return strcmp(&str1[len1-len2], str2) == 0;
}
void getFiles(string path, vector<string>& files)
{
//文件句柄
long hFile = 0;
//文件信息,声明一个存储文件信息的结构体
struct _finddata_t fileinfo;
string p;//字符串,存放路径
if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)//若查找成功,则进入
{
do
{
//如果是目录,迭代之(即文件夹内还有文件夹)
if ((fileinfo.attrib & _A_SUBDIR))
{
//文件名不等于"."&&文件名不等于".."
//.表示当前目录
//..表示当前目录的父目录
//判断时,两者都要忽略,不然就无限递归跳不出去了!
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
getFiles(p.assign(path).append("\\").append(fileinfo.name), files);
}
//如果不是,加入列表
else
{
if(endswith(fileinfo.name, "xml")||endswith(fileinfo.name,".json"))
files.push_back(p.assign(path).append("\\").append(fileinfo.name));
}
} while (_findnext(hFile, &fileinfo) == 0);
//_findclose函数结束查找
_findclose(hFile);
}
}

int state = 0;

void ENTER() {
keybd_event(VK_RETURN, 0, 0, 0);
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
}


DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
while (1) {
if (state) {//控制先后顺序
Sleep(100);
ENTER();
}
}
return 0L;
}

void function(string filePath) {
vector<string> files;
获取该路径下的所有文件
getFiles(filePath, files);
int size = files.size();
char exe[50] = "D:\\转弹幕\\Danmu2Ass_v1.1\\Kaedei.Danmu2Ass.exe";
char command[200] = "\0";
string fileAbsolutePath;
for (int i = 0; i < size; i++)
{
fileAbsolutePath = files[i];
sprintf_s(command, 200, "%s \"\" \"%s\"", exe, fileAbsolutePath.c_str());
state = 1;
system(command);
memset(command, 0, 200);
state = 0;
}
}
int main() {
//创建一个线程
HANDLE thread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);
string filePath1 = "C:\\Users\\Lenovo\\Desktop\\新建文件夹";//自己设置目录
function(filePath1);
//关闭线程
if(thread!=0)
CloseHandle(thread);
}