带你了解矩阵系统的视频混剪去重算法

在矩阵系统中,有个重要的产品能力,需要解决视频批量生成;

然而批量生成视频,不是上传素材,随意一组合就完事,这种生成的视频大概率是视频画面混乱,音画完全不同步;

同时视频的去重率还得不到保证,发出去的视频很大概率会被判定为重复;

如何才能解决获取高质量视频画面同时又能保证视频去重率;

首先,得确定好视频得生成模式,这个就需要了解一定视频制作内容,比如我们得系统分:随镜头组、全局字幕文案、固定时长,这个基本涵盖了目前大部分的视频生成需求,另外比如还有卡点这类视频生成需求,由于真正商用的场景不多,没去实现;

图1: 选择视频混剪时长计算模式

其次,就是视频组合方式了,在做视频组合的时候得确定好视频的镜头组数,这里注意下,镜头组要有顺序的,不是上传一堆视频随意混剪,剪出来基本没播放;确定好镜头组,还有每个视频的时长、音频时长;每个镜头组的时长设置有四种:固定时长、随音频智能剪、随视频、随音频自动变速,不同模式下,时长不一样,时长不一样导致的该组在整个视频里的时长占比就不一样,组合生成的混剪视频的数量就不一样;

图2:选择每个镜头组的时长设置模式

最后,根据用户的选择,后台计算,我们根据平台的去重规则,会分几个档,比如完全不重复的视频,低重复率的视频、普通视频;一般我们定义低重复率的视频重复率为20%以内,普通视频定义为20~40%左右,根据规则计算好,告诉用户可以有生成多少条视频;

以下附上部分的代码实现,有兴趣需要商用的可以进一步联系,源头厂家提供源码;

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
分支限界算法求解最大团问题的基本思路是:从初始节点出发,通过扩展节点不断地搜索解空间树,去不满足约束条件的子树,直到找到最优解或者无解为止。具体实现过程如下: 1. 首先将初始节点压入搜索队列中。 2. 对于每个节点,都有两种情况: a. 选择该节点加入当前团中,继续搜索下一层节点; b. 不选择该节点,直接跳过该节点,搜索下一个节点。 3. 对于选择当前节点的情况,需要判断当前团是否依然是团,如果不是,则该子树不满足约束条件,需要枝。 4. 对于不选择当前节点的情况,直接跳过该节点,搜索下一个节点。 5. 当搜索到叶子节点时,判断当前团的大小是否大于已知的最大团大小,如果是,则更新最大团大小。 6. 搜索队列中的节点按照团大小进行排序,每次从队列头部取出节点进行扩展。 7. 如果搜索队列为空,则搜索结束,返回最大团大小。 具体实现可以参考以下代码: ```c++ #include <iostream> #include <vector> #include <algorithm> using namespace std; const int MAXN = 100; int n; // 图的大小 int g[MAXN][MAXN]; // 图的邻接矩阵 int ans; // 最大团大小 vector<int> cur; // 当前团 // 判断是否为团 bool is_clique(vector<int>& v) { for (int i = 0; i < v.size(); i++) { for (int j = i + 1; j < v.size(); j++) { if (!g[v[i]][v[j]]) { return false; } } } return true; } // 分支限界搜索 void dfs(int idx) { if (idx == n) { if (cur.size() > ans && is_clique(cur)) { ans = cur.size(); } return; } if (cur.size() + n - idx <= ans) { return; } cur.push_back(idx); if (is_clique(cur)) { dfs(idx + 1); } cur.pop_back(); dfs(idx + 1); } int main() { // 读入图的邻接矩阵 cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> g[i][j]; } } // 分支限界搜索 dfs(0); // 输出结果 cout << ans << endl; return 0; } ``` 该算法的时间复杂度为 $O(2^n)$,通常情况下只能用于小规模的图,对于大规模的图需要使用其他更加高效的算法来求解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值