liqi0816 / bilitwin

bilibili merged flv+mp4+ass+enhance / 哔哩哔哩: 超清FLV下载, FLV合并, 原生MP4下载, 弹幕ASS下载, MKV打包, 播放体验增强, 原生appsecret, 不借助其他网站

Home Page:https://greasyfork.org/scripts/27819

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

打包MKV运行出错

gonejack opened this issue · comments

image

发现有了打包MKV的*操作,但运行似乎出了Bug,没研究过代码只能给作者报Bug。
测试地址:https://www.bilibili.com/video/av433203/index_1.html#page=1

commented

多谢阁下反馈。

B站支持无二压,提高了清晰度,但也导致编码不统一。这是第一次放出mkv打包功能,为了方便抓bug,只允许了官方编码,虽然理论上能支持所有avc1.xxxx

这半个月以来好像也没发现什么问题,所以正在考虑解除限制。欢迎阁下试试开发版本
https://github.com/liqi0816/bilitwin/raw/develop/biliTwin.user.js

如果可用,将随下次更新释出。

可用。合并时弹新窗口有些影响操作。

在Mac下是没找到能流畅播放ASS弹幕的,IINA跳得严重。再到Win下找找看有什么播放器能流畅。

commented

弹新窗口是为了节约内存,把播放器清理掉。

试试VLC

试过了,还是跪。

看这里的讨论似乎是无解,mac下似乎用的都是libass库,http://bbs.vcb-s.com/thread-1681-1-1.html

http://bbs.saraba1st.com/2b/thread-1036499-1-1.html

不过我有点怀疑 libass 能不能满足所谓的“字幕特效控”的要求……

然后,如果 libass 不行的话,那么无解,在 windows 上抱死 xyvsfilter/xysubfilter 的大腿吧。

弹幕字体的设置功能有没有加入schedule呢,现在的弹幕风格可以说,只符合一部分人的口味。

commented
  • 因为手边没有mac,所以也不知道哪些能用

  • 现在的字体是B站默认的。可以加设置,但因为这不影响使用,看心情

    快了~

commented

已经增加了弹幕字体的设置功能。欢迎阁下试试开发版本:https://github.com/liqi0816/bilitwin/raw/develop/biliTwin.user.js

如果可用,将在两天后释出。

测试地址 https://www.bilibili.com/video/av8109376/

弹幕速度部分似乎有 Bug,ASS 里的弹幕一闪而过。

字体样式有出入,ASS 里黑边巨大,是不是 CSS 和 ASS 的 border 渲染有差异。

03b44003-2392-4d08-a48e-6a4f0a102dff

测试的样式设置(字体大小为90%):
d635b121-6ee0-4fed-a81e-1a0bee11597a

另,字体大小设置无效,且会出现这种情况:
image

commented

多谢阁下反馈。

ASS转换是借用大腿的代码https://github.com/tiansh/us-danmaku,理解不够深入,看来只测试自己用的样式还不够。

以上提到问题已经解决。欢迎阁下试试开发版本:https://github.com/liqi0816/bilitwin/raw/develop/biliTwin.user.js

如果可用,将在春节前释出。

可用,没有发现问题。

后续有Bug再反馈。

遇到一个无法打包的问题,看报错像是文件对象太大,不知前端JS有没有Stream Buffer之类可以使用,比较方便避开内存问题。

测试地址 https://www.bilibili.com/video/av6271462/

qq20180216-021416 2x

commented

多谢阁下反馈。这是鄙人代码的BUG,已在c9534ae中修复。欢迎阁下试试开发版本
https://github.com/liqi0816/bilitwin/raw/develop/biliTwin.user.js

如果可用,将随下次更新释出。


  • 就算没有特意优化,200MB的视频也是可以整个放进内存的。

  • 前端有ReadableStreamWritableStream,虽然还没进标准。

  • 神奇的是,居然到现在才发现问题:

    function uint8ArrayConcat(...array) {
      // if (Array.isArray(array[0])) array = array[0];
      if (array.length == 1) return array[0];
      if (typeof Buffer != 'undefined') return Buffer.concat(array);
      const ret = new Uint8Array(array.reduce((i, j) => i.byteLength + j.byteLength)); // wrong
      let length = 0;
      for (let e of array) {
        ret.set(e, length);
        length += e.byteLength;
      }
      return ret;
    }