揭秘爱奇艺qsv文件背面的隐秘
想做影视二次编排的朋友,想获取爱奇艺的高清资源吗?想知道如何将qsv文件导入剪映吗?本文带大家揭秘爱奇艺qsv文件背面的隐秘,文章最后供给了绿色免费的转化工具能够将qsv文件转化为可编排的flv或MP4文件。
什么是qsv文件
QSV是一种加密的视频文件格局。是爱奇艺公司研制的一种视频文件格局,故QSV格局只能使用奇艺客户端、爱奇艺万能播放器播放。因此想要将QSV文件转化成其他格局的视频文件就需求知道QSV文件的加密方法,经过查阅相关资料和研究得出了一些定论。
QSV文件包含头部信息、索引信息、json字符串以及视频分段信息。
头部信息
头部信息为整个QSV文件的前90字节。包含标识符、版别号、视频ID、json字符串的肯定文件偏移和巨细、视频索引信息的数量。
偏移(肯定文件地址) | 长度(字节) | 字段名 | 解说 |
---|---|---|---|
0x0 | 0xA | signature | 标识符,”QIYI VIDEO” |
0xA | 0x4 | version | 版别号,0x01或0x02 |
0xE | 0x10 | vid | 视频ID |
0x1E | 0x4 | _unknown1 | 不知道,必须为0x01 |
0x22 | 0x20 | _unknown2 | 不知道,悉数为0x00 |
0x42 | 0x4 | _unknown3 | 不知道,待剖析 |
0x46 | 0x4 | _unknown4 | 不知道,待剖析 |
0x4A | 0x8 | json_offset | json字符串的的肯定文件偏移 |
0x52 | 0x4 | json_size | json字符串的的巨细 |
0x56 | 0x4 | nb_indices | 视频索引信息的数量 |
索引信息
偏移(肯定文件地址) | 长度(字节) | 字段名 | 解说 |
---|---|---|---|
0x5A | nb_indices + 7) >>3 | _unknown_flag | 位标识,一个索引对应一位,待剖析 |
上一字段之后 | nb_indices * 0x1C | indices | 索引结构体数组 |
每个索引结构体的巨细为0x1C,经过加密,记录视频分段信息的偏移和巨细。
偏移(相对于结构体首地址) | 长度(字节) | 字段名 | 解说 |
---|---|---|---|
0x0 | 0x10 | _codetable | 用于后边两个字段的解密 |
0x10 | 0x8 | segment_offset | 视频分段的肯定文件偏移 |
0x18 | 0x4 | segment_size | 视频分段的巨细 |
json字符串
经过头部信息中的json字符串的的肯定文件偏移和巨细获取。字符串为加密数据,需求进行解密,解密算法如下:
// decryption algorithm for some segments in qsv version 0x1
void decrypt_1(BYTE* buffer, DWORD size) {
static BYTE dict[] = {0x62, 0x67, 0x70, 0x79};
for(int i = 0; i < size; ++i) {
DWORD j = ~i & 0x3;
buffer[i] ^= dict[j];
}
}
视频分段信息
一个qsv文件包含多段视频文件,经过索引信息中的segment_offset和segment_size定位,前0x400字节经过加密。老版别解密算法同json字符串,新版别的解密算法为:
// decryption algorithm for some segments in qsv version 0x2
void decrypt_2(BYTE* buffer, DWORD size) {
DWORD x = 0x62677079;
for(DWORD i = size - 1; i != 0; --i) {
x = (x << 1) | (x >> 31);
x ^= buffer[i];
}
for(DWORD i = 1; i < size; ++i) {
x ^= buffer[i] & 0xFF;
x = (x >> 1) | (x << 31);
DWORD j = x % i;
BYTE tmp = buffer[j];
buffer[j] = tmp ^ (BYTE)~buffer[i];
buffer[i] = tmp;
}
}
已发现的视频格局有flv(旧版客户端)、mpeg-ts(新版客户端)。
总结
提取出QSV文件中的视频信息后需求转化其他格局,则需求ffmpeg神器了。这里供给的免费转化工具现已集成了ffmpeg,能够直接将QSV文件转化为MP4,关注大众号OriginalTech
回复QSV获取。
需求注意的是最新版爱奇艺客户端(10.0以上版别)下载的QSV文件采用了全新的加密方法,现在还转化。咱们也供给老版别的爱奇艺客户端,关注大众号OriginalTech
回复QIYI获取。
跋文
本文参考开源项目qsv2flv,项目地址:github.com/btnkij/qsv2…
该项目采用c
语言和Qt
开发,为了帮助不会c
的Java
开发了解,作者翻译了Java
版别,关注我下一篇带你手把手撸一遍。