zhangzhilinx
zhangzhilinx
哎呀,抱歉,这几天有其他事情在忙,未能及时回复 可能是爱奇艺又皮了吧
> 爱奇艺的新版本好像下载下来的已经换了算法,虽然还是有qsv文件,但是文件内容做了其他处理了 哎,真的是难搞,尽量用旧版下载吧 我现在没有这么多时间去研究这个了,要是老哥有兴趣的话可以研究研究?
> 哈哈,我不太懂这个,看过那个分析,想用python实现,但是还是不太懂!老兄有时间能否编绎个arm架构的mac版的? 你可以把源码下载下来,直接在m1上编译不就好啦?
> 哈哈,我不太懂这个,看过那个分析,想用python实现,但是还是不太懂!老兄有时间能否编绎个arm架构的mac版的? 我的macbook不是arm的,工具链好像也不支持的样子
> 哈哈,我不太懂这个,看过那个分析,想用python实现,但是还是不太懂!老兄有时间能否编绎个arm架构的mac版的? 我用aarch64-apple-darwin架构编译的,但不确定在m1处理器上能不能正常使用,因为我的mbp不是m1的 你先试试看能不能用吧 [qsv2flv_v0.1.2_aarch64-apple-darwin.zip](https://github.com/zhangzhilinx/qsv2flv/files/5840068/qsv2flv_v0.1.2_aarch64-apple-darwin.zip)
- 爱奇艺尽量不要用最新版,最新版的qsv的加密方式改了,这段时间也没太多精力再去研究了 - 使用from_be_bytes是因为qsv文件中的相关数据本身是以BigEndian的顺序储存的,而不是因为CPU,所以我们以这种方式重新排列字节序,你可以认为from_be_bytes将BigEndian字节序转换成符合当前CPU的字节序的u32值 - 至于 `u32::from_be_bytes(buf) == len` 则是一种验证手段,因为qsv有一段n字节的metadata数据,但一开始并不知道这个n值究竟是多少,qsv会在metadata之后加上一个4字节(刚好是u32大小)的尾部,这个尾部转换成u32刚好就是n的大小。所以这个循环的目的就是利用这一点来确定metadata究竟在何处结束,找到这个尾部意味着刚好跳过了所有的metadata部分,此时就是循环退出的时机,也就完成了函数的任务
转mp4可以用其他软件实现,比如ffmpeg啥的
或者英伟达的nvenc