全網(wǎng)最簡(jiǎn)單最快的b站視頻(mp4)下載方法
文章首發(fā)在我的博客,歡迎訪問(wèn)
https://www.wilan.top/Home/Index/article/aid/87

提醒:此工具僅用于方便二創(chuàng),引用視頻請(qǐng)標(biāo)明出處,請(qǐng)不要有盜用視頻的行為
歡迎點(diǎn)個(gè)star? ?https://github.com/Kevin-Red/bilidown
如果你不想看實(shí)現(xiàn)方式,直接加QQ群下載即可,982236115,依賴的軟件也一同打包了,運(yùn)行down.exe即可
首先我們借助兩個(gè)軟件
1.youtube-dl
超級(jí)好用的視頻下載工具,良心開(kāi)源,首頁(yè)非常簡(jiǎn)潔,哈哈哈

2.ffmpeg
這個(gè)很多人應(yīng)該都知道,非常牛的轉(zhuǎn)碼工具,flv和MP4的編碼格式是互相兼容的,所以互轉(zhuǎn)時(shí)可以更換容器,ffmpeg就能實(shí)現(xiàn)只更換容器,速度非常快

接下來(lái)進(jìn)入代碼部分,C++實(shí)現(xiàn)
bv轉(zhuǎn)av算法來(lái)自知乎@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轉(zhuǎn)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 << "請(qǐng)輸入bv號(hào):";
? ?cin >> avid;
? ?//獲取av號(hào)
? ?avid = dec(avid);
? ?//當(dāng)前路徑
? ?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());
? ?//轉(zhuǎn)碼命令
? ?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;
}
運(yùn)行結(jié)果如下,只用輸入bv號(hào),即可全自動(dòng)下載,速度也是非常可觀
