客户端短视频拍摄、上传、下载,播放完整方案

来源:互联网 发布:英语词汇记忆 知乎 编辑:程序博客网 时间:2024/04/27 16:29
 成长发送短视频的方案如下,可作为一个技术储备。
     经过对短视频第三方平台的反复调研(详情见附件,包括相关的收费),客户端推荐使用阿里旗下的“趣拍”
     这个第三方平台进行短视频的集成功能。
     具体产品方案如下:
     客户端:  
                1、客户端在发成长界面增加录制视频入口
                2、跳转新的页面(如下图),使用”趣拍的SDK“进行录制,视频最长录制8秒。(这个页面不错,有不错的娱乐性能)

                      

                3、录制完成后得到缩略图可显示在当前成长界面。如下图

                      

                4、用户点击成长”发送“按钮,立即离开当前界面,回到成长记录信息流主页,在主页上出现”占位成长“。
                     占位成长使用的都是本地数据。同时,将成长记录存入本地草稿数据库(成长记录存入数据库,成长内容存入SD卡文件)。
                       如图:

                      
               5、具体的发送任务全部转到后台进行。
                     后台启动服务GrowServiceManager,该服务调用发布队列进行发送,通过多线程异步执行发视频与发图片
                   (其中视频发送到趣拍平台,发送成功, 趣拍服务器会返回视频的URL与缩略图的URL,而图片会发送到米学服务器)。
                     等待图片与视频均发送成功后,再将文字+视频的URL+视频缩略图截图URL+图片URL集合,一并发送到米学服务器,
                     代表此条记录的完整信息。
               6、如果发送成功,则删除本地草稿数据库中记录,删除占位成长。
                    如果发送失败,则”占位成长“会一直显示在最顶端,多个占位成长,以时间先后排序。
                    同时,本地草稿数据库会记录发送失败的具体图片URL或视频的URL。
                    再次点击”重新发送“时,只发送上次失败的图片和视频。

                     
                   
                    如果后台正在发送中,则此时点击”删除“按钮时,会取消本次发送的任务,同时删除本地草稿数据库中记录,删除占位成长。
          
           7、点击”视频缩略图“,进入新的页面,下载完成后再播放即可。
                      

      
       具体实现方案如下:
       客户端:
               1、客户端的录制与发送功能全部使用”趣拍“的SDK进行。录制视频的格式是MP4,8秒的视频以2000☓1024的码率压缩,
                    文件大小1.5M-2M,这个码率可以设置得更小一点,相应的文件大小也会更小一些,发送采用的分片发送的。
               2、创建后台服务GrowServiceManager,负责发送成长,管理成长草稿,管理发布队列。
               3、创建草稿数据库。用于存储发送过程中及失败的成长草稿记录。成长记录存入数据库,成长内容存入SD卡文件
                    (数据库表的设计,采用json串的形式存储字段,其中需要考虑压缩图与发送状态之间的映射,压缩图与原始图之间的映射,
                      如fileUrl:status,fileUrl:resultUrl)。数据库表的设计在整体方案确定后再给出。
               4、点击”视频缩略图“,进入新的页面,在这里使用videoView组件完成视频的播放功能。因为视频最长8秒,
                    所以在这里可采用下载完成后再播放的思路 。计划这块自己写。
               5、调整发送成长接口,增加两个视频信息字段(上传视频url与缩略图URL),具体的接口定义在方案确认后给出。
               6、成长转到后台进行发送,必须要考虑的问题就是如果其中有发送失败的任务,仅仅是几张图或视频发送失败,
                    下次再尝试重新发送的时候,最好是只重新上传失败了的图或视频。这要求在草稿数据库设计这块要考虑扩展性。
               
        服务端:
               目前此种方案,服务器改动较小,只需要在发送成长接口增加传小视频的字段参数,然后分发。
0 0