美文网首页
视频转换工具的设计与实现(一)

视频转换工具的设计与实现(一)

作者: 天草二十六_简村人 | 来源:发表于2022-12-26 17:03 被阅读0次

一、背景

公司对视频的转换,除了格式转换外,对时长、声音等都要求一致。我们对比了模拟器方案,相比之下,三星平板p200的内置录屏更好地解决了声音内置。这一点很重要,因为我们是把一排排地平板放在支架上,几乎堆在一起了。

所以任务调度服务依赖平板上的apk应用,这里会安装一个录屏应用,由它来调用视频播放组件,从而实现格式转换。

二、总体设计

  • 任务平台

业务方会将视频转换、pdf转换等作为任务,下发到该平台。

  • 任务调度服务

和任务平台的交互,刚开始是由任务平台推送给任务调度服务,后面修改为由任务平台向任务平台定期拉取。待任务执行完成,再回调给任务平台,最后更新本地任务的状态。

  • 截屏服务

定期对连接上的所有平台进行截屏,保存到Minio。

  • platform tools

java服务调用adb命令的必须应用

  • 任务监控web

方便远程查看各个平板的实时运行情况,也就不用每次去机房人工察看。它会按约定的路径,展示Minio的文件全路径。

image.png
  • minio

存储各个平板的截图

  • 录屏apk(应用包名:com.xh.cwprecorder)

录屏apk会包装一个视频播放组件,开始播放的时候,开始录屏;但是结束播放的时候,并不会自动结束录屏,而是要由任务调度平台去触发。
第一步、任务平台在分配任务到指定平板后,并把文件推送给平板。每次都会做一些基本工作:唤醒设备、解锁屏幕、录屏应用是否已安装、杀掉录屏应用、检查原视频文件是否准备好。
第二步、任务调度平台一直循环读取开始标识的文件(文件的内容是视频的时长),如果读取到了,则调用录屏apk,去启动播放器并开始录屏。【我们是先去尝试读取文件,可能这时候录屏apk还没启动播放器,需要循环,我们采用的是redis的订阅机制redisTemplate.convertAndSend()】
第三步、录屏apk收到开始录屏的指令后,会去调用视频播放组件,读取原视频的时长,并写入到指定文件里。
待视频播放结束,写入完成标识到指定文件里。【注意:这里是视频播放结束,不是录制结束,后者得由任务调度平台来触发】
第四步、任务调度平台一直循环读取完成标识的文件,如果读取到了,则停止录制和录屏应用。【循环的间隔为1秒,为保证各个视频任务的阻塞,我们是使用多线程去监听】
第五步、录屏apk停止录屏,视频文件另存为新的视频格式,等待任务调度平台来拉取。
第六步、延迟五秒,等待上一步的完成。开始回收任务,拉取新的视频文件到任务调度平台,删除掉平板上的文件,然后上传新的视频文件到OSS,最后更新任务的信息。【这一步会比较耗时,我们是使用多线程,保证各个视频任务互不影响】

三、流程图

image.png

四、任务监控web

展示总的设备数、录制中设备;未开始任务数、进行中任务数、失败任务数。

image.png

五、任务从分配到执行的流程图

image.png

六、任务的状态机

image.png

相关文章

网友评论

      本文标题:视频转换工具的设计与实现(一)

      本文链接:https://www.haomeiwen.com/subject/smunqdtx.html