白皮书:预览及转码
文件预览功能能让用户无需安装应用程序就能直接在网盘上直接打开文件进行预览,为了能在网页端及客户端上预览文件及保证文件在只读状态下的安全性(不被人获取内容或源文件),文件预览和转码是企业网盘系统的核心功能之一。这章将介绍巴别鸟如何实现文件的在线预览和转码,以提供更便捷的用户体验。
支持在线预览的文件类型
文本、代码及office文件:
Pdf,md,js,xml,htm,html,css,scss,jsp,c,cpp,java,php,m,h,hpp,mm, mail ,msg ,epub,doc,docx,ppt,pptx,xls,xlsx,txt,rtf,wps,wpt,dps,dpt,et,ett
Xmind,km
可选支持:(可选项需要增加服务器及相应模块费用)
key,numbers,pages
音视频:
mp3,mp4, wav,asf,ape
可选支持:(可选项需要增加服务器及相应模块费用)
flv,f4v,mp4,m4v,webm,3gp,3gpp,wmv,avi,rm,rmvb,mkv,asf,mov,mpeg,swf,mpg,mts,m2ts,ogv
3D图形:
dae、3ds、abc、fbx、mtl、obj、ply、stl、x3d
可选支持1:(可选项需要增加服务器及相应模块费用)
x3d, ply,3ds,abc,m3d
可选支持2:
revit、soildworks、3DMax
图片格式:
bmp,jpg,jpeg,gif,png,bmp,psd,tif,tiff,raw,cr2,arw,dng,nef,pef,dcm,ico
dicom(医疗图像)
矢量图片:
ai,svg,eps,indd,indt,idml
CAD
dwg,dwt,dxf,dcm
压缩文件:
可选支持:
rar, zip
在线预览工具(巴别鸟预览器)
巴别鸟企业网盘使用了自主研发的BabelViewer在线预览工具进行在线预览,支持不同文件转码后统一预览。允许用户查看文件内容,而无需下载到本地。
BabelViewer是针对企业网盘用户需求开发的强大的H5在线预览工具,有如下特性:
支持多个库,以便于多种方式渲染预览文件。
支持多图层技术,可以在预览文件上进行多人绘制。
支持在线批注,并可以在批注区内多人讨论。
可展开批注列表统一管理当前版本及历史版本的批注。
支持多种文件的版本对比。
矢量化的渲染,矢量文件可以高倍率放大不失真。
可以在预览状态下快速切换预览多个文件。
使用webGL技术支持3D文件的在线渲染,也支持3D文件的在线批注。
文件转码功能
转码工具:
巴别鸟转码服务集成了多个转码工具,以将文件从一种格式转换为另一种支持巴别鸟预览器打开的格式。私有部署系统需要一台专用的服务器(或虚拟机)来来处理文件的转码。
例如,将高分辨率图片转换为Web友好的JPEG格式。
自动转码:
巴别鸟实现了自动转码功能,用户上传的文件会自动转换为适当的格式并抽取文件列表缩略图,以节省存储空间和提高性能。针对大量文件同时上传的转码处理,巴别鸟有一套独特的调度机制,力求在有限的资源占用下让用户打开预览更及时。
服务器空闲时用户文件上传即刻自动转码,生成预览文件。
服务器繁忙时,如果用户同时上传的文件超过一定数量,这些文件将不会进行转码,当用户点击文件准备预览时,优先加入到转码进程,实时生成预览文件。
因为用户一次性上传大量文件后要马上预览的概率很低,这样的设定可以防止用户同时大量上传文件时因服务器繁忙造成真正需要转码的文件打不开的情况。
转码队列和异步处理:
将转码任务加入队列,并使用异步处理方式来执行转码操作,以避免阻塞其他系统功能。
缓存和性能优化
预览和转码缓存:
实施缓存机制,以存储已转码的文件和预览数据,以减少重复转码和提高响应速度。
负载均衡:
同时转码队列配置了负载均衡策略,以确保多个预览和转码请求能够平衡地分配到不同的处理节点。
性能优化
性能监控:
实时性能监控,包括转码速度、缓存命中率和响应时间,出错自动清空队列重试处理。严重错误短信通知运维人员。
资源调整:
根据监控结果和负载情况,动态调整预览和转码资源,以确保高性能和可用性。
集成测试
性能测试:
进行性能测试,模拟大量并发预览和转码请求,以评估系统在高负载下的表现。
office家族文件
巴别鸟支持微软office家族及WPS的文件的在线预览,为确保office文件特别是word文件的显示准确性,巴别鸟提供了2种office文件的预览方式:
使用运行于Windows服务器的office转码模块把文件转码后进行预览(默认)。
需要部署一台window服务器生成预览文件。
可以相当准确的与微软office或WPS打开无差别的预览word类文件和ppt类文件。
支持使用巴别鸟预览器(BabelViewer)对文件进行批注讨论、圈画及版本对比。
可使用“智巢AI”文档助理功能。
Excel文件因没有版式和字体问题,都使用在线office的预览功能进行预览。
所有的预览文件都可以内嵌水印,并可另存为带水印的PDF文件。
使用运行于Linux服务器的在线office的预览功能提供office及wps文件的在线预览。
针对只能使用Linux,并且对word文件预览版式准确度没有较高要求的用户。
*因系统字体差异,在线office解析等原因,在Linux系统中的在线office并不能1:1完美显示word文件的版式,在譬如:项目符号编号、段落高度、分页、插入图形位置等方面会有少许差异。
Excel文件因没有版式和字体问题,都使用在线office的预览功能进行预览。
使用在线office预览功能打开的word类和ppt类文件将不再支持巴别鸟预览器的批注功能。
不支持使用“智巢AI”的文档助理功能。
所有的预览文件都可以内嵌水印,并可另存为带水印的PDF文件。
考虑到浏览器的性能及服务器的效率,在线预览office文件会有一定的文件尺寸大小限制,超过这个限制的文件就无法在线预览。私有云用户可以自定义这些限制,但不建议调过大。
Word(文档)类文档最大可预览文件大小为 200MB。
PPT(幻灯片)类文档最大可预览大小为 200MB。
Excel(表格)类文档最大可预览大小为 50MB。
图片及图形文件
巴别鸟支持绝大多数图片文件的在线预览,包括psd、gif家族、jpg家族、bmp家族、png、raw家族(部分)、arw、tif、TIFF、dicom、ico等文件,同时也支持医学图形常用的dicom格式。并且得益于巴别鸟强大的图片处理技术,巴别鸟可以以1:1的方式在线预览超高分辨率的大图(可选组件),并且在图片上批注讨论,并且巴别鸟支持读取照片的元数据。
PSD、RAW、BMP等图片格式需要服务器自动转码后才能预览。
通常情况下(没有开启大图显示模块)超过4K分辨率的大图片将会被服务器处理成便于网页展示的尺寸及格式。开启大图显示模块后,服务器将把大图切割成若干小块,分块载入1:1显示,这将耗费较大服务器资源。
PNG等透明背景的图在巴别鸟中也能显示出透明度,并且可以更改背景。
巴别鸟系统会读取图片元数据信息,供搜索、查询、排序。这些信息包括:分辨率、尺寸、拍摄设备、拍摄时间、拍摄地点。
所有可预览图片格式都会生成缩略图,供文件列表展示快速查找及瀑布流模式展示。
所有图片格式都支持在巴别鸟预览器(BabelViewer)中批注讨论、圈画及版本对比。
如开启水印功能,服务器将会对预览的图片进行预处理,在图片中嵌入水印。
所有图片类文件都可以另存为带水印的PDF文件。
巴别鸟也能很好的支持矢量图形的在线预览,包括但不限于ai、dwg、dcm、dxf 、dwt 、pdf、eps、svg、idml、indd…等矢量图形格式。更重要的是,巴别鸟能以矢量渲染的方式打开这些格式的文档,这意味着这类图形可以在巴别鸟中放大几十倍也不会模糊或失真。
AI、eps、indd等文件需要服务器自动转码后才能预览。
以矢量的方式显示,支持更改背景颜色。
放大后图形不会失真或模糊。
其他特性和图片一致,同样支持嵌入水印、另存为带水印PDF、在巴别鸟预览器(BabelViewer)中批注讨论、圈画及版本对比、生成文件列表预览图。
3D及CAD文件
得益于巴别鸟预览器(BabelViewer)对3D格式的支持,我们默认支持dae、3ds、abc、fbx、mtl、obj、ply、stl、x3d等3D图形的在线预览,并且支持在3D空间中的批注讨论。
目前,巴别鸟预览器仅支持单个文件3D图形,如果文件有外挂皮肤等外挂文件将只能载入模型本体。
3D文件目前还不支持生成预览图,但如果有这方面需求支持定制开发。
3D文件可以在巴别鸟预览器中旋转、放大、缩小、拆分,并可以建立批注讨论点,系统会记住建立批注时的视口,点击批注会自动旋转到建立批注时的视角。
如需对revit、soildworks、3DMax等专业格式进行支持,私有化部署用户可以选择接入第三方3D在线显示及转码插件,(如:Autodesk viewer)这会产生相关费用。
目前不支持在移动设备预览3D文件。仅支持在网页及客户端预览3D文件。
- 巴别鸟支持对CAD文件的预览。如: dwg,dwt,dxf 格式,目前在公有云上,巴别鸟向专业版及企业版用户提供强大的CAD预览服务,私有化用户想要预览CAD文件需要购买相应的CAD转码服务私有化授权。
巴别鸟CAD预览支持CAD版本R12-2021。
CAD文件可生成预览缩略图,用于文件列表及瀑布流模式。
兼容天正全专业T20V7版本。
支持在浏览器、客户端、移动端预览及批注CAD文件。
支持百兆以上图纸浏览。
图层打开/隐藏/多选/全选。
布局切换、视图平移、缩放、更改背景颜色、鹰眼鸟瞰视图。
音视频转码
不使用转码服务器的情况下
巴别鸟无须转码服务就可以直接在线播放支持HTML5标准的视频文件。
支持的格式如下:
- 视频文件格式
MP4:MPEG-4 Part 14,支持H.264编码。几乎所有的浏览器都支持该格式。
WebM:谷歌开发的格式,使用VP8或VP9编码,可以在大多数现代浏览器中播放
Ogg:开放媒体格式,使用Vorbis编码,可以在大多数现代浏览器中播放。
- 音频文件格式
MP3:MPEG-1或MPEG-2 Audio Layer III,可以在几乎所有的浏览器中播放。
AAC:Advanced Audio Coding,可以在大多数现代浏览器中播放。
Ogg:开放媒体格式,使用Vorbis编码,可以在大多数现代浏览器中播放。
WAV:Waveform Audio File Format,可以在几乎所有的浏览器中播放,但文件较大,不适合在网络上播放。
- 兼容性
视频兼容性
音频兼容性
使用转码服务器的情况下
如果需要使用巴别鸟管理查询大量视频素材,就需要搭建专用的视频转码服务器,并购买相应的视频转码模块授权。(目前此服务仅支持私有化部署用户)
巴别鸟视频转码模块采用FFmpeg解决方案,FFmpeg 支持 MPEG、 DivX、MPEG4、AC3、DV、FLV 等40多种编码,AVI、MPEG、OGG、Matroska、ASF 等90多种解码,FFmpeg 支持的编解码器种类共有 280 多种, 涵盖了几乎所有常见音视频编码格式, 能解码几乎所有的音视频。
- 视频转码服务器所需硬件配置
视频转码是一个相当耗费运算资源的服务,需要一台专门的物理机来执行转码操作。同时服务器性能要求和需要转码的视频类型,时长和码率都有关系。
按每天转换累计时长50小时的HDR 4K视频(使用CUDA)为1080P H.264 AC3 MP4为基准,所需的服务器硬件配置如下:
| 服务器类型 | 配置要求 | 操作系统 | 服务器用途 | 备注 |
|---|---|---|---|---|
| 视频转码服务器 | 至强Intel-E5-2630v3CPU*2 64G内存 2TB SSD硬盘 + Nvidia Tesla M4 4G显卡 | Linux | 视频转码服务器 | 使用GPU(CUDA) |
根据视频码率不同所需转码时间也不同,在通常情况下,一个100秒的2K视频转码成1080P MP4耗时为8秒(使用上文硬件配置),如果同时转码的视频多,服务器则会做多线程排队处理。
使用转码服务器后,视频文件转码完成后即可播放,并且可以在文件列表查看缩略图。