天天动画片 > 八卦谈 > 全网最简单最快的b站视频(mp4)下载方法

全网最简单最快的b站视频(mp4)下载方法

八卦谈 佚名 2023-07-07 09:14:50

文章首发在我的博客,欢迎访问

https://www.wilan.top/Home/Index/article/aid/87


提醒:此工具仅用于方便二创,引用视频请标明出处,请不要有盗用视频的行为

欢迎点个star   https://github.com/Kevin-Red/bilidown

如果你不想看实现方式,直接加QQ群下载即可,982236115,依赖的软件也一同打包了,运行down.exe即可


首先我们借助两个软件

1.youtube-dl

超级好用的视频下载工具,良心开源,首页非常简洁,哈哈哈



2.ffmpeg

这个很多人应该都知道,非常牛的转码工具,flv和MP4的编码格式是互相兼容的,所以互转时可以更换容器,ffmpeg就能实现只更换容器,速度非常快


接下来进入代码部分,C++实现

bv转av算法来自知乎@mcfx

#include <iostream>
#include <string>
#include <cmath>
#include <map>
#include <direct.h>

using namespace std;

string table = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF";
map<long, long> tr;
long s[] = {11, 10, 3, 8, 4, 6};
long long xor1 = 177451812;
long long add1 = 8728348608;


//bv转av
string dec(string x1) {
   long long r = 0;
   for (int a = 0; a < 6; a++) {
       r += tr[x1[s[a]]] * pow(58, a);
   }
   return to_string(((long long)r - (long long)add1) ^ xor1);
}

int main() {
   for (int i = 0; i < 58; i++) {
       tr[table[i]] = i;
   }
   string avid;
   cout << "请输入bv号:";
   cin >> avid;

   //获取av号
   avid = dec(avid);

   //当前路径
   char *dir;
   dir = getcwd(NULL, 0);
   string dirs(dir, dir + strlen(dir));

   //下载命令
   string youtube = dirs + "/youtube-dl.exe https://www.bilibili.com/video/av"; + avid + " -o" + avid + ".flv";
   system((char*)youtube.data());

   //转码命令
   string ffmpeg = dirs + "/ffmpeg.exe -i " + avid + ".flv -vcodec copy -acodec copy " + avid + ".mp4";
   system((char*)ffmpeg.data());

   //删除flv
   string down = "del /F " + avid + ".flv";
   system((char*)down.data());

   return 0;
}




运行结果如下,只用输入bv号,即可全自动下载,速度也是非常可观


本文标题:全网最简单最快的b站视频(mp4)下载方法 - 八卦谈
本文地址:www.ttdhp.com/article/36218.html

天天动画片声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
扫码关注我们