$(function(){ $(window).scroll(function(){ $offset = $('.placeholder').offset();//不能用自身的div,不然滚动起来会很卡 if($(window).scrollTop()>$offset.top){ $('.header').css({'position':'fixed','top':'0px','left':$offset.left+'px','z-index':'999'}); $(".container").css({"margin-top":"93px"}); }else{ $('.header').removeAttr('style'); $('.container').removeAttr('style'); } }); }) window._deel = { maillist: '', maillistCode: '', commenton: 0, roll: [0,0] }

bilibili弹幕转ass

uedbet官网app admin 浏览

小编:抓取xml文件的任务就不多说了,很复杂的事,只需在播放页面看看源文件就可以肯定xml文件的地址停止抓取了。 本文主如果讲述xml内的弹幕转字幕的过程。 除去xml文件扫尾开头的一些

  抓取xml文件的任务就不多说了,很复杂的事,只需在播放页面看看源文件就可以肯定xml文件的地址停止抓取了。

  本文主如果讲述xml内的弹幕转字幕的过程。

  除去xml文件扫尾开头的一些七七八八的器械,弹幕主体是如许的:

  假设它把弹幕的各类属性离开表现,我就用encoding/xml包来解码,然则丫把弹幕的属性都放在p外面了,所以我应用正则表达式来提取的。

  以上表第一条弹幕为例。很清晰的,p属性末尾的浮点数,与播放时一比对,就可以知道,表现的是弹幕应当出现的播放时间。

  随后的1和25先不论;

  16777215,目测应当是色彩(因为该值表现为十六进制是FFFFFF);

  1408852480,在弹幕中是递增的,认为应当是个unix时间,用这个数(d),求:d/86400/365.2425+1970,结果约为2014.6。看来确实是unix时间。估计是创立弹幕的时间。

  0,不知道,抓取了很多视频的弹幕,这个位置都是0,暂且不论它。

  7fa769b4,估计是创立者的ID,因为统一xml文件会出现屡次,而且看起来是十六进制数,恰好有些hash函数就是前去4字节整数。

  576008622,也是递增的,不用猜也知道,这个必然就是弹幕的ID了。

  预先再查对一下,果真,1代表弹幕的类型(从右向左移动啊,出现在下方或许上方啊……),25是字体大年夜小,16777125是字体色彩。

  所以,我们就只需捕捉每条弹幕的时间、类型、大年夜小、色彩、文本就好了。

  正则表达式:

  捕捉弹幕很复杂,关键是排布弹幕为字幕的算法。

  关于这个算法我就很坑爹的弄了个乌七八糟的算法,采取的是固定移动速度,最小堆叠的排布准绳。

  对游动弹幕,会偏向于选择下面一行的位置,假设会堆叠,则选择更下一行(最低行会轮回到最下面一行),假设没有不堆叠的行,会选择堆叠文本起码的行。

  对上现隐/下现隐的固定弹幕,会选择最接近上方/下方,且不堆叠的行;假设没有不堆叠的行,则选择堆叠时间最短的行,居中放置字幕。

  默许字体微软雅黑,默许大年夜小25,默许白色黑边;默许占满全部屏幕,合计12行;默许屏幕大年夜小640x360。

  这么弄,主如果为了让ass字幕的后果更接近原始弹幕的后果。

  低级弹幕真的超越我的才华范围了,全部疏忽掉落。

  go源代码以下:

  2014.9.2 9:30am更新:对字体排布停止了修改。

  2014.9.2 9:50am更新:算法修改成固定出现时间,最小堆叠排布,终究版本。

  over。欢迎各位评论,倒不如各位多多评论啊。

当前网址://a/uedbetgwapp/20200515-916.html

 
你可能喜欢的: