短视频矩阵系统混剪逻辑设计开发

#创享来客# 短视频混剪这是整个系统的灵魂,对于同一组素材,在不同系统处理,能生成高质量视频数

量多少决定了整个系统的质量;比如如下3组素材,每组5个短视频,应该是多少条?

一、我们先来看下短视频混剪的界面:

这个是混剪的主界面,在混剪前,提前把相关的素材准备好,主要是包括视频素材、图片素材、背景音乐素材,视频素材一般都是有顺序的(比如镜头、镜中、镜尾)、图片素材主要是用于设置视频的封面及如果是横屏需要的背景图、音乐可以有系统内置的背景音乐,也可自己专属音乐;

操作时,先选择全局时长时长,是随镜头组各字幕口播时长、全局字幕口播还是固定时长;这里选择不同,每个视频所截取的时长不同,决定了后续的一个算法;接下来就是设置每个镜头组的内容,包括有每个镜头里视频内容、字幕口播内容、标题及时长计算模式;如果是用原声音还可以选择视频原声;后面就是全局的音乐、AI配音选择及生成数量和画面比例;

主界面里面包括很多小的子页面,如标题字体和位置的设置:

二、混剪计算逻辑

混剪核心逻辑都是在保证视频逻辑性的前提下主要是围绕视频重复率来计算的,一个视频能否精准的计算出视频在整批的视频中的重复率,决定了视频质量,主要是会分以下几个步骤:

  1. 把视频按照排列组合的把视频组合好;
  2. 根据时长计算每个视频片段的所占比例;
  3. 计算多个片段在每个视频中所占比例;
  4. 把完全不重复的视频计算出来,做一个数组;
  5. 把重复率在20以内的视频计算出来,做一个数组;
  6. 把重复率在20~40或者50%以内的视频计算出来,做一个数组;
  7. 最终再整体去重,获得最终预设的视频组合;

如代码所示,部分:

private static void deduplication(List<List<Map<String,Integer>>> firstList,List<List<Map<String,Integer>>> secondList,
                                      List<List<Map<String,Integer>>> secondPubList,List<List<Map<String,Integer>>> thirdList
            ,List<List<Map<String,Integer>>> newLowdupList,List<List<Map<String,Integer>>> newThirdList1){

        List<String> keys1 = new ArrayList<>();
        List<String> keys2 = new ArrayList<>();
        List<String> keys22 = new ArrayList<>();
        List<String> keys3 = new ArrayList<>();
        //
        List<List<Map<String,Integer>>> newThirdList = new ArrayList<>();
        //把第三组所有组合好的视频做成key value形式
        Map<String,List<Map<String,Integer>>> mapThirdList = new LinkedHashMap<>();
        //新的低于20%的视频
        List<List<Map<String,Integer>>> lowdupList = new ArrayList<>();


        //把每组的key给拼接出来,方便后面做去重筛选及前缀判断
        keys1 = keyJoint(firstList);
        keys2 = keyJoint(secondList);
        keys22 = keyJoint(secondPubList);
        for(List<Map<String,Integer>> third:thirdList){
            for(Map<String,Integer> map:third){
                StringBuilder key = new StringBuilder();
                Set set = map.keySet();
                for (Object o:set){
                    key.append(o);
                    key.append("#");//key的链接符用#
                }
                String str = key.toString();
                String nstr = str.substring(0,str.length()-1);
                keys3.add(nstr);
                mapThirdList.put(nstr,third);
            }
        }

三、视频组装

最终算法计算好了一个虚拟组合,再用视频切片组合能力,把视频片段切出来再做最终成品视频的组合,包括视频的音频、口播、音乐等,后面再讲解视频组装的能力,如有源码需求问题可联系:xiaoxiang8842

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值