一种转换弹幕格式的方法及相关装置与流程

文档序号:16467937发布日期:2019-01-02 22:53阅读:275来源:国知局

本发明涉及客户端应用开发领域,尤其涉及一种转换弹幕格式的方法及相关装置。



背景技术:

随着视频直播行业的发展,弹幕越来越受到年轻人的喜爱。弹幕不仅增强了用户的互动性和趣味性,而且能根据用户的相关等级展示不同的弹幕效果,满足不同用户的各种诉求。

当用户需要对已播放过的直播进行回看,而且想有各种各样的弹幕时,用户可使用直播录制功能将播放的视频录制成为想要的格式如mp4格式。由于播放器带有自动加载字幕功能,即当将某个录制的mp4文件和相应的字幕文件放在一起时,播放器会自动加载字幕,因此可以看到很多影视作品都采用这种方式。然而,由于弹幕和普通字幕不同,每条弹幕具有不同的速度,颜色,字体大小,并且还含有图片,如何将如此复杂而且多样的弹幕转换为可以被播放器播放的字幕是一个急需解决的问题。



技术实现要素:

本发明实施例提供了一种转换弹幕格式的方法以及相关装置,用于在播放录制后的视频时仍然显示各种效果的弹幕。

本发明实施例的第一方面提供了一种转换弹幕格式的方法,所述方法用于将弹幕转换为字幕,包括:接收视频录制指令,所述视频录制指令用于指示录制直播视频;响应于所述视频录制指令,将所述直播视频进行录制以得到录播视频文件;去除所述录播视频文件的只读属性,并创建与所述录播视频文件对应的ass字幕文件;将所述直播视频中的弹幕转换为目标字幕;将所述目标字幕写入所述ass字幕文件。

在一种可能的实施例中,所述ass字幕文件包括:脚本信息scriptinfo、v4样式v4styles、事件events、字体fonts和图像graphics,所述scriptinfo用于指示脚本的标题和信息,所述v4styles用于定义脚本的格式,所述events用于记录脚本的事件,所述fonts包括脚本中内嵌字体的信息,所述graphics包括脚本中内嵌图片的信息。

在一种可能的实施例中,所述方法还包括:在所述ass字幕文件的scriptinfo中分别写入标题title、scripttype、playerresx和playerresy,所述title用于表示标题,所述scripttype用于表示ssa脚本格式的版本,所述playerresx用于表示字幕渲染时屏幕的宽度,所述playerresy用于表示字幕渲染时屏幕的高度;在所述ass字幕文件的v4styles中分别写入名称name、字体名称fontname、字体大小fontsize,编码encoding,所述name用于指示弹幕,所述encoding用于表示字体的编码。

在一种可能的实施例中,所述将所述直播视频中的弹幕转换为目标字幕包括:根据所述弹幕设置所述目标字幕的起始时间和结束时间;将所述弹幕的颜色格式转换为所述目标字幕的颜色格式;确定所述弹幕的位置,以作为所述目标字幕的位置;将所述弹幕的字体大小格式转换为所述目标字幕的字体大小格式。

在一种可能的实施例中,所述根据所述弹幕设置所述目标字幕的起始时间和结束时间包括:获取弹幕产生时间和录制初始时间,所述弹幕产生时间与所述录制初始时间的差为所述目标字幕的起始时间;根据以下公式获得所述目标字幕的结束时间:endtime=starttime+screenwidth/speed;所述endtime用于表示所述目标字幕的结束时间,所述starttime用于表示起始时间,所述screenwidth用于表示屏幕宽度,所述speed用于表示弹幕速度。

在一种可能的实施例中,所述确定所述弹幕的位置包括:按照以下公式确定所述弹幕的位置:startx=playerwidth;endx=barragewidth;starty=endy=inity;其中,所述startx用于表示所述弹幕在x方向的初始位置,所述playerwidth用于表示屏幕的宽度,所述endx用于表示所述弹幕在所述x方向的结束位置,所述barragewidth用于表示所述弹幕的宽度,所述starty用于表示所述弹幕在y方向的初始位置,所述endy用于表示所述弹幕在所述y方向的结束位置,所述inity用于表示所述弹幕出现时在所述y方向的位置。

在一种可能的实施例中,所述去除所述录播视频文件的只读属性包括:通过调用系统应用程序编程接口api函数shfileoperationa(_inout_lpshfileopstructalpfileop)将所述录播视频文件的只读属性去除。

本发明实施例的第二方面提供了转换装置,所述装置用于将弹幕转换为字幕,其特征在于,包括:收发单元,用于接收视频录制指令,所述视频录制指令用于指示录制直播视频;录制单元,响应于所述视频录制指令,用于将所述直播视频进行录制以得到录播视频文件;创建单元,用于去除所述录播视频文件的只读属性,并创建与所述录播视频文件对应的ass字幕文件;转换单元,用于将所述直播视频中的弹幕转换为目标字幕;写入单元,用于将所述目标字幕写入所述ass字幕文件。

在一种可能的实施例中,所述ass字幕文件包括:脚本信息scriptinfo、v4样式v4styles、事件events、字体fonts和图像graphics,所述scriptinfo用于指示脚本的标题和信息,所述v4styles用于定义脚本的格式,所述events用于记录脚本的事件,所述fonts包括脚本中内嵌字体的信息,所述graphics包括脚本中内嵌图片的信息。

在一种可能的实施例中,所述写入单元还用于,在所述ass字幕文件的scriptinfo中分别写入标题title、scripttype、playerresx和playerresy,所述title用于表示标题,所述scripttype用于表示ssa脚本格式的版本,所述playerresx用于表示字幕渲染时屏幕的宽度,所述playerresy用于表示字幕渲染时屏幕的高度;在所述ass字幕文件的v4styles中分别写入名称name、字体名称fontname、字体大小fontsize,编码encoding,所述name用于指示弹幕,所述encoding用于表示字体的编码。

在一种可能的实施例中,所述转换单元具体用于,根据所述弹幕设置所述目标字幕的起始时间和结束时间;将所述弹幕的颜色格式转换为所述目标字幕的颜色格式;确定所述弹幕的位置,以作为所述目标字幕的位置;将所述弹幕的字体大小格式转换为所述目标字幕的字体大小格式。

在一种可能的实施例中,所述转换单元具体用于:获取弹幕产生时间和录制初始时间,所述弹幕产生时间与所述录制初始时间的差为所述目标字幕的起始时间;根据以下公式获得所述目标字幕的结束时间:endtime=starttime+screenwidth/speed;所述endtime用于表示所述目标字幕的结束时间,所述starttime用于表示起始时间,所述screenwidth用于表示屏幕宽度,所述speed用于表示弹幕速度。

在一种可能的实施例中,所述转换单元具体用于:按照以下公式确定所述弹幕的位置:startx=playerwidth;endx=barragewidth;starty=endy=inity;其中,所述startx用于表示所述弹幕在x方向的初始位置,所述playerwidth用于表示屏幕的宽度,所述endx用于表示所述弹幕在所述x方向的结束位置,所述barragewidth用于表示所述弹幕的宽度,所述starty用于表示所述弹幕在y方向的初始位置,所述endy用于表示所述弹幕在所述y方向的结束位置,所述inity用于表示所述弹幕出现时在所述y方向的位置。

在一种可能的实施例中,所述创建单元具体用于:通过调用系统应用程序编程接口api函数shfileoperationa(_inout_lpshfileopstructalpfileop)将所述录播视频文件的只读属性去除。

本发明第三方面提供了一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如上述任意一项所述的方法的步骤。

本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于:所述计算机管理类程序被处理器执行时实现如上述任意一项所述的方法的步骤。

从以上技术方案可以看出,本发明实施例具有以下优点:接收视频录制指令,所述视频录制指令用于指示录制直播视频;响应于所述视频录制指令,将所述直播视频进行录制以得到录播视频文件;去除所述录播视频文件的只读属性,并创建与所述录播视频文件对应的ass字幕文件;将所述直播视频中的弹幕转换为目标字幕;将所述目标字幕写入所述ass字幕文件。本申请实施例中,将直播中的视频弹幕转换为ass视频字幕,可以完整的支持弹幕的复杂和多样性,使得在播放录制后的视频时仍然显示各种效果的弹幕。

附图说明

图1a为本发明实施例提供的一种可能的转换弹幕格式的方法的流程图;

图1b为本发明实施例提供的一种可能的ass格式的示意图;

图1c为本发明实施例提供的一种可能的ass文件具体格式的示意图;

图1d为本发明实施例提供的一种可能的ass字幕文件头端的代码示意图;

图1e为本发明实施例提供的一种可能的格式转换的算法示意图;

图1f为本发明实施例提供的一种可能的算法示意图;

图1g为本发明实施例提供的一种可能的录制后的视频播放效果图;

图2为本发明实施例提供的一种可能的服务器的结构示意图;

图3为本发明实施例提供的一种可能的电子设备的硬件结构示意图;

图4为本发明实施例提供的一种可能的计算机可读存储介质的硬件结构示意图。

具体实施方式

本发明实施例提供了一种转换弹幕格式的方法以及相关装置,用于在录制视频时播放显示多种效果的弹幕。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先,本文将对实际应用中几种常见的字母格式进行简单介绍,包括:

srt(subripper)格式,可以理解为最简单的文本字幕格式,后缀名为.srt,其组成为:一行字幕序号,一行时间代码,一行字幕数据。

ssa(substationalpha)格式,是为了解决srt过于简单的字幕功能而开发的高级字幕格式其扩展名为.ssa。采用ssav4脚本语言,能实现丰富的字幕功能,除了能设定不同字幕数据的大小和位置外,更能实现动态文字和水印等复杂的功能。

ass(advancedsubstationalpha)格式,其实是更高级的ssa版本,采用ssav4+脚本语言编写。

在上述各字幕格式的技术基础上,请参阅图1a,为本发明实施例提供的一种转换弹幕格式的方法的流程图,具体包括:

101、接收视频录制指令;

102、响应于视频录制指令,将直播视频进行录制以得到录播视频文件;

当用户需要对已播放过的直播进行回看时,会使用直播录制功能将播放的视频录制成为想要的格式如mp4格式,故转换装置接收用户通过终端发送的视频录制指令,该视频录制指令用于指示录制当前的直播视频。

接收到视频录制指令后,响应于该视频录制指令,对当前直播视频进行录制以得到录播视频文件。需要说明的是,实际应用中,对视频进行录制的方式有多种,例如,获取拍摄设备在播放视频图像时的播放速率,获取基于用户选择指令确定出的录制速率参数,基于该播放速率和录制速率参数对视频图像进行录制。故本申请实施例中,将直播视频进行录制以得到录播视频文件的方式具体此处不做限定。

103、去除录播视频文件的只读属性,并创建与录播视频文件对应的ass字幕文件;

在获得录播视频文件后,如何让该录播视频文件播放时仍然有直播视频中的各种效果的弹幕呢。由于播放器带有自动加载字幕功能,即将录制的mp4文件和相应的字幕文件放在一起时,播放器会自动加载字幕,因此可以看到很多影视作品都采用这种方式,然而,由于弹幕和普通字幕不同,每条弹幕具有不同的速度,颜色,字体大小,并且还含有图片,如何将如此复杂而且多样的弹幕转换为可以被播放器播放的字幕呢。本申请实施例中,有鉴于ass功能比较强大,可以完整的支持弹幕的复杂和多样性,因此本文就是一种将直播中的视频弹幕转换为ass视频字幕的解决方案,能保证录制后的视频播放时仍然有各种效果的弹幕。

需要说明的是,ass格式主要由scriptinfo、v4styles、events、fonts以及graphics等五大部分组成,如图1b所示。其中,scriptinfo这一部分包含了脚本的头部和总体信息,scriptinfo必须是v4版本脚本的第一行;v4styles,这一部分包含了所有样式的定义。每一个被脚本使用的样式都应该在这里定义,ass格式使用v4+styles;events,这一部分包含了所有脚本的事件,有字幕、注释、图片、声音、影像和命令。基本上,所有在屏幕上看到的内容都在这一部分;fonts,这一部分包含了脚本中内嵌字体的信息;graphics,这一部分包含了脚本中内嵌图片的信息。为便于理解,请参阅图1c,为本申请实施例提供的一种可能的ass文件具体格式的示意图。

另外,ass也提供了各种各样的标签来满足不同的字幕样式,以下列举主要两种标签:1)\move(<x1>,<y1>,<x2>,<y2>[,<t1>,<t2>]),该标签提供字幕的移动效果,其中x1>,<y1>是开始点坐标,<x2>,<y2>是结束点坐标,<t1>和<t2>是相对于字幕显示时间的开始运动与结束运动的毫秒时间;2)\1c(color),该标签是为字幕添加颜色,其中color为十六机制的颜色值。

可以理解的是,弹幕的移动方向一般是从屏幕右侧进入左侧飞出,在弹幕进入屏幕后,按照一定的轨迹进行移动,一般移动方向为与屏幕平行移动,当弹幕完全进入屏幕后,后面会继续显示下一条弹幕。每条弹幕还要根据用户的相关等级,然后展示不同的效果,满足不同玩家的诉求,同时每天弹幕会有不同的分布密度,出现时机,速度,颜色,字体大小等。

由于将某个录制mp4文件和相应的字幕文件放在一起时,播放器才会自动加载字幕。为了防止录播视频文件不被写入,需要将获取的录播视频文件如录制的mp4文件的只读属性去除,并创建与录播视频文件对应的ass字幕文件。具体地,去除该录播视频文件的只读属性的方式有多种,本申请实施例中,可以通过使用windows系统中的应用程序编程接口(applicationprogramminginterface,api)函数shfileoperation(),需要说明的是,shfileoperation()函数是一个外壳函数,可以实现各种文件操作,例如文件的拷贝、删除和移动等,lpshfileopstructa为该函数的专用结构体,参数lpfileop是一个指向lpshfileopstructa结构体的指针,该参数不能为空,lpshfileopstructa结构体包含了该函数执行指定操作所需的信息。故,本申请实施例中,具体通过函数shfileoperationa(_inout_lpshfileopstructalpfileop)来去掉录播视频文件的只读属性。同时,还创建与录播视频文件对应的ass字幕文件。

104、在ass字幕文件的头端写入字幕描述信息;

需要说明的是,由前述可知,ass格式主要由五大部分组成,由于events包含了所有脚本的事件,此部分需要进行设置,其他部分基本不变。另外,graphics本文中目前没有用到,fonts本文在style中指定,因此可先在ass字幕文件的头端即scriptinfo和v4styles以及event的format行头部写入字幕描述信息,主要代码如图1d所示,为本申请实施例提供的一种可能的ass字幕文件头端的代码示意图。具体地,在ass字幕文件的头端写入字幕描述信息包括:在scriptinfo中,title为标题,是对脚本的描述,本文可设置为具体公司;scripttype为ssa脚本格式的版本,如果当前使用的ssa程序版本旧于脚本的版本,将给出警告,本文设置为v4.00+;playerresx为字幕渲染时屏幕的宽度,本文设置为1280;playerresy为字幕渲染时屏幕的高度,本文设置为720。在v4styles中,format定义了style行中每一个字段所代表的含义,具体地,name,本文设置为“弹幕”,表示是弹幕风格;fontname本文使用的是微软雅黑:simhei;fontsize,本文初始大小为30;primarycolour~backcolour,分别设置字幕填充颜色、描边、阴影等颜色;bold~spacing,设置字体的样式;angle~shadow,分别设置字幕的角度,边框,描边,阴影像素个数;align~marginv,分别设置字体的对齐个数;encoding,设置字体的编码。在events中的format行,format行分别定义了marked,start,end,style,name,marginl,marginr,marginv,effect,text,只需先写入format行。

105、将直播视频中的弹幕转换为目标字幕;

在写入ass字幕文件的头端后,将直播视频中的弹幕转换为目标字幕。具体地,本申请实施例中,转换方式可以包括以下几个步骤:步骤1、根据弹幕设置目标字幕的起始时间和结束时间;步骤2、将弹幕的颜色格式转换为目标字幕的颜色格式;步骤3、确定弹幕的位置,以作为目标字幕的位置;步骤4、将弹幕的字体大小格式转换为目标字幕的字体大小格式。以下将对各步骤进行详细描述:

步骤1、根据弹幕设置目标字幕的起始时间和结束时间;

由于目标字幕需要和视频相对应,因此目标字幕产生的时间应该与视频录制时间相吻合。当录制后,此时计入录制初始时间,每个弹幕产生时,通过弹幕产生时间减去录制初始时间,可以得到目标字幕的起始时间。由于弹幕是从屏幕的右侧到弹幕右侧离开屏幕所走过的距离为,屏幕的宽度,因此目标字幕的结束时间需要根据屏幕的宽度和弹幕速度进行以及起始时间进行计算,即endtime=starttime+screenwidth/speed,其中,endtime用于表示目标字幕的结束时间,starttime用于表示起始时间,screenwidth用于表示屏幕宽度,speed用于表示弹幕速度。

步骤2、将弹幕的颜色格式转换为目标字幕的颜色格式;

由于弹幕采用的颜色格式为三原色rgb,而ass字幕采用的是十六进制的aabbggrr,例如弹幕颜色采用的格式是#622727,alpha为1,而对应字幕格式为0xff272762,其中h表示十六进制。因此需要将弹幕颜色格式转换为字幕颜色格式。格式转换的主要算法如图1e所示,为本申请实施例提供的一种可能的格式转换的算法示意图。其中bulletcolor为弹幕颜色,nativecolor为转换后的字幕颜色。通过分别获取弹幕颜色的rgb值,再进行重新的组合既得到目标字幕的颜色格式。

步骤3、确定弹幕的位置,以作为目标字幕的位置;

确定直播视频中弹幕的位置,并根据该弹幕的位置设置字幕的位置。即为了保证弹幕和字幕的位置在视频中相同,因此获得弹幕位置,即可获得字幕的位置。每行弹幕在视频中的位置均不一样,是从视频右侧进入左侧飞出。弹幕在x方向的初始位置为弹幕右侧,即弹幕在x方向的初始位置startx=playerwidth,其中playerwidth为屏幕的宽度。弹幕的结束位置为刚好弹幕右侧小时在视频的左侧,即弹幕在所述x方向的结束位置endx=barragewidth,其中barragewidth为弹幕的宽度。当弹幕飘出时,弹幕总沿着x方向移动,y方向相同,即弹幕的y总是相同的,y方向需要通过弹幕出现的时候记录可得,即starty=endy=inity,其中starty用于表示弹幕在y方向的初始位置,endy用于表示弹幕在y方向的结束位置,inity用于表示弹幕出现时在y方向的位置。因此目标字幕的位置同样是startx,starty,endx,endy。

步骤4、将弹幕的字体大小格式转换为目标字幕的字体大小格式。

由于弹幕有普通弹幕和超级弹幕之分,而超级弹幕的字体大小非常大,而弹幕的字体大小设置是加入了html的<h1>-<h5>标签,其表示为超大弹幕-极小弹幕,因此需要将html标签转换到ass字幕适应的字体大小格式。而字幕同样提供了类似标签机制,{\\fs[n]},表示字体大小为n,n可以进行相应设置,即{\\fs60}表示字体大小为60。图1f为本申请实施例提供的一种可能的算法示意图,即弹幕字体大小和对应ass字幕字体大小格式转换的主要算法。图中先判断弹幕是否设置了字体大小样式,即通过判断该弹幕是否以<h1>-<h5>开头并以<h1>-<h5>结尾,如果设置了字体通过移除弹幕的表情,然后加上字幕对应的标签机制,即进行弹幕的字体大小格式到目标字幕的字体大小格式的格式转换。

通过上述步骤,即实现了将直播视频中的弹幕转换为目标字幕。

106、将目标字幕写入ass字幕文件。

在弹幕转换为目标字幕后,将转换后的目标字幕写入文件即动态添加到events中的format行,设置format行以dialogue开头,表示可以以字幕对话形式写入。format行中start,end分别对应目标字幕的起始时间和结束时间,而目标字幕移动的初始位置和结束位置可通过添加\move(<x1>,<y1>,<x2>,<y2>[,<t1>,<t2>])标签指定,且颜色可通过{\1c}标签指定,最后将设定后的目标字幕写入步骤103中创建的ass字幕文件。

本申请实施例中,通过采用上述方式,录制后的视频播放效果如图1g所示,图1g为本申请实施例提供的一种可能的录制后的视频播放效果图,可以看到,录制后的视频中的目标字幕和直播内容中的弹幕完全吻合。

上面从转换弹幕格式的方法的角度对本发明实施例进行了描述,下面从转换装置的角度对本发明实施例进行描述。

请参阅图2,图2为本发明实施例提供的一种可能的转换装置的实施例示意图,其中,该转换装置用于将弹幕转换为字幕,具体包括:

收发单元201,用于接收视频录制指令,所述视频录制指令用于指示录制直播视频;

录制单元202,响应于所述视频录制指令,用于将所述直播视频进行录制以得到录播视频文件;

创建单元203,用于去除所述录播视频文件的只读属性,并创建与所述录播视频文件对应的ass字幕文件;

转换单元204,用于将所述直播视频中的弹幕转换为目标字幕;

写入单元205,用于将所述目标字幕写入所述ass字幕文件。

在一种可能的实施例中,所述ass字幕文件包括:脚本信息scriptinfo、v4样式v4styles、事件events、字体fonts和图像graphics,所述scriptinfo用于指示脚本的标题和信息,所述v4styles用于定义脚本的格式,所述events用于记录脚本的事件,所述fonts包括脚本中内嵌字体的信息,所述graphics包括脚本中内嵌图片的信息。

在一种可能的实施例中,所述写入单元205还用于,在所述ass字幕文件的scriptinfo中分别写入标题title、scripttype、playerresx和playerresy,所述title用于表示标题,所述scripttype用于表示ssa脚本格式的版本,所述playerresx用于表示字幕渲染时屏幕的宽度,所述playerresy用于表示字幕渲染时屏幕的高度;在所述ass字幕文件的v4styles中分别写入名称name、字体名称fontname、字体大小fontsize,编码encoding,所述name用于指示弹幕,所述encoding用于表示字体的编码。

在一种可能的实施例中,所述转换单元204具体用于,根据所述弹幕设置所述目标字幕的起始时间和结束时间;将所述弹幕的颜色格式转换为所述目标字幕的颜色格式;确定所述弹幕的位置,以作为所述目标字幕的位置;将所述弹幕的字体大小格式转换为所述目标字幕的字体大小格式。

在一种可能的实施例中,所述转换单元204具体用于:获取弹幕产生时间和录制初始时间,所述弹幕产生时间与所述录制初始时间的差为所述目标字幕的起始时间;根据以下公式获得所述目标字幕的结束时间:endtime=starttime+screenwidth/speed;所述endtime用于表示所述目标字幕的结束时间,所述starttime用于表示起始时间,所述screenwidth用于表示屏幕宽度,所述speed用于表示弹幕速度。

在一种可能的实施例中,所述转换单元204具体用于:按照以下公式确定所述弹幕的位置:startx=playerwidth;endx=barragewidth;starty=endy=inity;其中,所述startx用于表示所述弹幕在x方向的初始位置,所述playerwidth用于表示屏幕的宽度,所述endx用于表示所述弹幕在所述x方向的结束位置,所述barragewidth用于表示所述弹幕的宽度,所述starty用于表示所述弹幕在y方向的初始位置,所述endy用于表示所述弹幕在所述y方向的结束位置,所述inity用于表示所述弹幕出现时在所述y方向的位置。

在一种可能的实施例中,所述创建单元203具体用于:通过调用系统应用程序编程接口api函数shfileoperationa(_inout_lpshfileopstructalpfileop)将所述录播视频文件的只读属性去除。

请参阅图3,图3为本发明实施例提供的电子设备的实施例示意图。

如图3所示,本发明实施例提供了一种电子设备,包括存储器310、处理器320及存储在存储器320上并可在处理器320上运行的计算机程序311,处理器320执行计算机程序311时实现以下步骤:接收视频录制指令,所述视频录制指令用于指示录制直播视频;响应于所述视频录制指令,将所述直播视频进行录制以得到录播视频文件;去除所述录播视频文件的只读属性,并创建与所述录播视频文件对应的ass字幕文件;将所述直播视频中的弹幕转换为目标字幕;将所述目标字幕写入所述ass字幕文件。

可选的,在一种可能的实施例中,所述处理器320还用于:在所述ass字幕文件的scriptinfo中分别写入标题title、scripttype、playerresx和playerresy,所述title用于表示标题,所述scripttype用于表示ssa脚本格式的版本,所述playerresx用于表示字幕渲染时屏幕的宽度,所述playerresy用于表示字幕渲染时屏幕的高度;在所述ass字幕文件的v4styles中分别写入名称name、字体名称fontname、字体大小fontsize,编码encoding,所述name用于指示弹幕,所述encoding用于表示字体的编码。

可选的,在一种可能的实施例中,所述处理器320具体用于:根据所述弹幕设置所述目标字幕的起始时间和结束时间;将所述弹幕的颜色格式转换为所述目标字幕的颜色格式;确定所述弹幕的位置,以作为所述目标字幕的位置;将所述弹幕的字体大小格式转换为所述目标字幕的字体大小格式。

可选的,在一种可能的实施例中,所述处理器320具体用于:获取弹幕产生时间和录制初始时间,所述弹幕产生时间与所述录制初始时间的差为所述目标字幕的起始时间;根据以下公式获得所述目标字幕的结束时间:endtime=starttime+screenwidth/speed;所述endtime用于表示所述目标字幕的结束时间,所述starttime用于表示起始时间,所述screenwidth用于表示屏幕宽度,所述speed用于表示弹幕速度。

可选的,在一种可能的实施例中,所述处理器320具体用于:按照以下公式确定所述弹幕的位置:startx=playerwidth;endx=barragewidth;starty=endy=inity;其中,所述startx用于表示所述弹幕在x方向的初始位置,所述playerwidth用于表示屏幕的宽度,所述endx用于表示所述弹幕在所述x方向的结束位置,所述barragewidth用于表示所述弹幕的宽度,所述starty用于表示所述弹幕在y方向的初始位置,所述endy用于表示所述弹幕在所述y方向的结束位置,所述inity用于表示所述弹幕出现时在所述y方向的位置。

可选的,在一种可能的实施例中,所述处理器320具体用于:通过调用系统应用程序编程接口api函数shfileoperationa(_inout_lpshfileopstructalpfileop)将所述录播视频文件的只读属性去除。

由于本实施例所介绍的电子设备为实施本发明实施例中一种服务器所采用的设备,故而基于本发明实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍,只要本领域所属技术人员实施本发明实施例中的方法所采用的设备,都属于本发明所欲保护的范围。

请参阅图4,图4为本发明实施例提供的一种计算机可读存储介质的实施例示意图。

如图4所示,本实施例提供了一种计算机可读存储介质400,其上存储有计算机程序411,该计算机程序411被处理器执行时实现如下步骤:接收视频录制指令,所述视频录制指令用于指示录制直播视频;响应于所述视频录制指令,将所述直播视频进行录制以得到录播视频文件;去除所述录播视频文件的只读属性,并创建与所述录播视频文件对应的ass字幕文件;将所述直播视频中的弹幕转换为目标字幕;将所述目标字幕写入所述ass字幕文件。

可选的,在一种可能的实施例中,该计算机程序411被处理器执行时还用于实现如下步骤:在所述ass字幕文件的scriptinfo中分别写入标题title、scripttype、playerresx和playerresy,所述title用于表示标题,所述scripttype用于表示ssa脚本格式的版本,所述playerresx用于表示字幕渲染时屏幕的宽度,所述playerresy用于表示字幕渲染时屏幕的高度;在所述ass字幕文件的v4styles中分别写入名称name、字体名称fontname、字体大小fontsize,编码encoding,所述name用于指示弹幕,所述encoding用于表示字体的编码。

可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:根据所述弹幕设置所述目标字幕的起始时间和结束时间;将所述弹幕的颜色格式转换为所述目标字幕的颜色格式;确定所述弹幕的位置,以作为所述目标字幕的位置;将所述弹幕的字体大小格式转换为所述目标字幕的字体大小格式。

可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:获取弹幕产生时间和录制初始时间,所述弹幕产生时间与所述录制初始时间的差为所述目标字幕的起始时间;根据以下公式获得所述目标字幕的结束时间:endtime=starttime+screenwidth/speed;所述endtime用于表示所述目标字幕的结束时间,所述starttime用于表示起始时间,所述screenwidth用于表示屏幕宽度,所述speed用于表示弹幕速度。

可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:按照以下公式确定所述弹幕的位置:startx=playerwidth;endx=barragewidth;starty=endy=inity;其中,所述startx用于表示所述弹幕在x方向的初始位置,所述playerwidth用于表示屏幕的宽度,所述endx用于表示所述弹幕在所述x方向的结束位置,所述barragewidth用于表示所述弹幕的宽度,所述starty用于表示所述弹幕在y方向的初始位置,所述endy用于表示所述弹幕在所述y方向的结束位置,所述inity用于表示所述弹幕出现时在所述y方向的位置。

可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:通过调用系统应用程序编程接口api函数shfileoperationa(_inout_lpshfileopstructalpfileop)将所述录播视频文件的只读属性去除。

需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1