混剪功能开发——抖音账号矩阵系统源码解析

news2024/12/24 9:01:29

抖音是目前国内非常流行的短视频平台之一,用户数量庞大,更是吸引了许多企业和个人在上面开设账号,通过发布内容来进行流量变现。但是,在一个账号发布内容的同时,管理员又需要同时关注多个账号,对账号的管理和运营成为一项非常繁琐的任务。为了解决这一问题,抖音账号矩阵系统应运而生。该系统实现了账号批量操作、批量发布、数据分析等功能,大大提升了账号运营的效率。

本文将通过解析抖音账号矩阵系统的源码,介绍该系统如何实现上述功能。

后端技术栈

抖音账号矩阵系统主要采用了Python + Django + MySQL的技术架构。其中,Django作为一种高度集成的Web框架,在开发过程中提供了许多功能模块,减少了代码量,同时也提供了很好的数据处理和模板引擎的支持。MySQL则作为数据库,存储了账号的信息、发布的内容、运营数据等信息。

八大智能渲染

别人有的我们有,别人没有的我们也有

开幕、贴纸、转场、特效、字幕、滤镜、语音、音乐

视频抽取+智能渲染=新视频

开幕

内置数十种开幕特效,对视频开幕画面进行特效渲染,让每个开头充满个性。

转场

内置近百个转场特效,两个视频连接处自动插入转场特效,让视频的每一帧都与众不同。

特效

内置烟花,爱心,下雨,光晕等几十种全景特效,在视频中自动渲染加载,让每个视频都如原创。

贴纸

内置数百个贴纸,随机自动加载到视频上,让你的视频充满趣味。

滤镜

内置黑白,复古,清新等数十种滤镜效果,让视频画面更有质感。

字幕

可自定义广告文案,自动同步到视频上,让视频更具广告价值。

语音

内置男生,女士,童声,方言等语音引擎,同步字幕,实现自动语音播报。

音乐

内置数千个背景音乐,随机自动替换原有音乐,让每个视频更有节奏感。

更能自定义在上面去做模板设计,设计符合自己需求的模板。

当然针对时下热门的数字人功能也是可以的,直接上传录制的一个人物视频,即可生成不同的背景模板以及不同的文案话术视频。

时间轴抽片合成

时间轴技术

所谓时间轴抽取就是不需要对原始素材切片,直接从原始素材中拿指定的时间轴上的某一段然后直接合成新的视频。

时间轴优势

无需对原始视频进行切片存储,成本更低,效率更高,对视频损耗更小,真正做到灵活按时间随意抽片,快速合成。通过时间轴抽片合成技术,将开头,结尾,中间共计6个原始视频素材,通过复杂计算公式,随机抽取1-3秒,随机生成一个全新视频,可轻松解决短视频限流,配合八大渲染技术,让每个输出视频犹如原创。

代码展示:

 ['title' => 'AI视频创意', 'link' => '#'],
            ['title' => '创意工程', 'link' => '#'],
        ];
        $this->buildBreadcrumbs($breadcrumbs);

        $mode   = $this->request->getIntParam('mode', 0);
        $this->output['mode']   = $mode;
        $time_range     = $this->request->getStrParam('time_range');
        $keyword_type   = $this->request->getStrParam('keyword_type');
        $keyword        = $this->request->getStrParam('keyword');

        $where = [
            ['name' => 'dv_s_id', 'oper' => '=', 'value' => $this->sid]
        ];
        if(!empty($time_range)){
            $add_time_range_arr = explode('~',$time_range);

            $where[]    = ['name' => 'dv_create_time', 'oper' => '>=', 'value' => strtotime($add_time_range_arr[0])];
            $where[]    = ['name' => 'dv_create_time', 'oper' => '<', 'value' => strtotime($add_time_range_arr[1]) + 86400];
        }
        if(!empty($keyword_type)){
            $where[]    = ['name' => $keyword_type, 'oper' => 'like', 'value' => "%{$keyword}%"];
        }
        if ($mode > 0) {
            $where[]    = ['name' => 'dv_video_mode', 'oper' => '=', 'value' => $mode];
        }

        $sort = ['dv_create_time' => 'DESC'];
        //获取视频列表
        $Video_model = new App_Model_Douyin_MysqlVideoStorage();
        $video_list = $Video_model->getList($where,$this->index,$this->count,$sort);
        $temp_video_model   = new App_Model_Douyin_MysqlVideoTempVideoStorage($this->sid);
        $pailie_video_model = new App_Model_Douyin_MysqlVideoMaterialPailieStorage();
        foreach ($video_list as &$item) {
            $item['cache_num']  = $temp_video_model->getTempVideoCountByItem($item['dv_id']);
            $item['pailie']     = $pailie_video_model->getRowByDvid($item['dv_id']);

            $progerss   = 40;
            if ($item['video_num'] > 0 || $item['image_num'] > 0) {
                $progerss += 10;
            }
            if ($item['audio_num'] > 0 || $item['write_num'] > 0) {
                $progerss += 10;
            }
            if ($item['pailie']['dvmp_is_zuhe']) {
                $progerss += 20;
            }
            if ($item['cache_num'] > 0) {
                $progerss += 20;
            }

            $item['progress']   = $progerss;
        }

        //计算分页
        $active_list_all = $Video_model->getCount($where);
        $page_libs = new Libs_Pagination_Paginator($active_list_all,$this->count,'jquery',true);
        $pageHtml = $page_libs->render();

        $this->output['time_range']     = $time_range;
        $this->output['keyword_type']   = $keyword_type;
        $this->output['keyword']        = $keyword;
        $this->output['video_list']     = $video_list;
        $this->output['pageHtml']       = $pageHtml;

        $this->output['progress_line']  = [
            20  => ['color' => 'red', 'tip' => '创建创意工程已完成'],
            40  => ['color' => 'red', 'tip' => '选择混剪模式已完成'],
            50  => ['color' => 'orange', 'tip' => '添加音视频素材未完成'],
            60  => ['color' => 'orange', 'tip' => '添加音视频素材已完成'],
            70  => ['color' => 'blue', 'tip' => '视频混剪组合已完成'],
            80  => ['color' => 'blue', 'tip' => '视频混剪组合已完成'],
            90  => ['color' => 'green', 'tip' => '视频缓存已完成'],
            100 => ['color' => 'green', 'tip' => '工程所有步骤已完成'],
        ];
        $this->output_mode_link();
        $this->displaySmarty('dydqtshoppc/video/item-list.tpl');
    }
    /*
     * 剪辑模式链接
     */
    private function output_mode_link() {
        $video_mixed_mode   = plum_parse_config('project_mixed_mode', 'dydqt/project');
        array_unshift($video_mixed_mode, [
            'title'  => '全部',
            'mode'  => 0,
            'desc'  => '',
        ]);

        foreach ($video_mixed_mode as &$item) {
            $item['link']   = "/dydqtshoppc/video/itemList?mode=".$item['mode'];
        }
        $this->output['video_mixed_mode']   = $video_mixed_mode;
    }
    /**
     * 视频列表
     */
    public function videoListAction() {
        //面包屑
        $breadcrumbs = [
            ['title' => '账号运营', 'link' => '#zhyy'],
            ['title' => '短视频管理', 'link' => '/video/videoList'],
        ];
        $this->buildBreadcrumbs($breadcrumbs);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/563752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vs code 配置net 开发环境.并搭配vs相似的解决方案面板

由于在本人在Linux22.04下安装Rider 一直处于卡死系统状态.不得不使用该方式 以下为安装步骤 安装 VS code https://code.visualstudio.com/Download 安装 mono https://www.mono-project.com/download/stable/#download-lin 安装 NET SDK https://learn.microsoft.com/zh…

目录层次结构中区分不同功能的RPM包,同时只有一份共享的repodata

使用本地的yum源有几个潜在的好处&#xff1a; 更快的下载速度&#xff1a; 本地yum源通常位于本地网络上&#xff0c;因此可以通过局域网快速获取软件包&#xff0c;而不需要依赖互联网连接。这样可以提供更快的下载速度&#xff0c;节省时间和带宽消耗。 离线访问&#xff1…

实验12 卷积神经网络

1. 实验目的 ①掌握深度学习的基本原理&#xff1b; ②能够使用TensorFlow实现卷积神经网络&#xff0c;完成图像识别任务。 2. 实验内容 ①设计卷积神经网络模型&#xff0c;实现对Mnist手写数字数据集的识别&#xff0c;并以可视化的形式输出模型训练的过程和结果&#xf…

Qt--事件过滤器

写在前面 Qt中的事件过滤器(Event Filter)是一种机制&#xff0c;用于拦截并处理特定类型的事件。但和Qt–事件分发器一文中提到的事件分发器有些区别。 事件过滤器的工作原理 这里同样使用一个简单的示例图帮助理解&#xff1a; 这里假设有一个Widget父窗口&#xff0c;该…

服务间的通信(RestTemplate +Ribbon+Feign):

服务之间的依赖&#xff1a; 其实根据上图我们发现会员管理服务其实是依赖于我们图书的这个服务的&#xff0c;那么为什么要依赖于图书这个服务呢&#xff0c;因为会员服务想要进行借阅图书的时候&#xff0c;必须要对图书模块的图书的库存等做校验才可以&#xff0c;所以membe…

在 Kubernetes 上实现高速应用交付

原文作者&#xff1a;NGINX 原文链接&#xff1a;在 Kubernetes 上实现高速应用交付 转载来源&#xff1a;NGINX 官方网站 NGINX 唯一中文官方社区 &#xff0c;尽在 nginx.org.cn 运行于 Kubernetes 之上的应用需要一个经过验证的生产级应用交付解决方案。NGINX Ingress Cont…

边缘计算AI硬件智能分析网关V1版的接入流程与使用步骤

我们的AI边缘计算网关硬件——智能分析网关目前有两个版本&#xff1a;V1版与V2版&#xff0c;两个版本都能实现对监控视频的智能识别和分析&#xff0c;支持抓拍、记录、告警等&#xff0c;在AI算法的种类上和视频接入上&#xff0c;两个版本存在些许的区别。V1的基础算法有人…

【ChatGPT】《吴恩达 x OpenAI Prompt Engineering教程中文笔记》- 知识点目录

《吴恩达 x OpenAI Prompt Engineering教程中文笔记》 &#x1f433; 在开始编写提示词之前的一些设置 不同的temperature会影响模型的理性和想象力&#xff0c;这里告诉我们&#xff1a; Low&#xff1a;例如GPT4&#xff0c;更加适合确定性的问答任务Hight&#xff1a;例如…

non-protected broadcast场景分析及解决

non-protected broadcast场景分析及解决 在两个app之间互相送消息使用BroadcastReceiver&#xff0c;有时在运行过程中在logcat工具中会发现大片的飘红消息。 要消除这些错误信息&#xff0c;需要在广播的 Sender 和 Receiver 做部分的修改。 错误信息分析 由于 发送端 的 M…

忆享聚焦|ChatGPT、AI、网络数字、游戏……近期热点资讯一览

“忆享聚焦”栏目第十四期来啦&#xff01;本栏目汇集近期互联网最新资讯&#xff0c;聚焦前沿科技&#xff0c;关注行业发展动态&#xff0c;筛选高质量讯息&#xff0c;拓宽用户视野&#xff0c;让您以最低的时间成本获取最有价值的行业资讯。 目录 行业资讯 1.科技部部长王志…

上海亚商投顾:沪指跌1.28%失守年线 大金融板块集体走弱

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 三大指数今日继续调整&#xff0c;沪指超1%逼近3200点&#xff0c;尾盘失守年线&#xff0c;创业板指较为抗跌。大…

你收藏了那些实用工具类网站?

今天来给大家分享几个众多网友们推荐的&#xff0c;宝藏工具类网站 uIGradients https://uigradients.com/#Flickr 专业的渐变色配色工具网站&#xff0c;配色什么的非常全&#xff0c;也可以按照自己的想法来选择搭配&#xff0c;还能直接获得对应渐变配色的CSS代码&#xff…

水表自动抄表系统有什么功能

水表自动抄表系统是一种新型的智能化管理系统&#xff0c;它可以自动采集水表的数据&#xff0c;并且实时上传到管理平台&#xff0c;实现了水表的实时监测和管理。该系统具有以下几个主要功能&#xff1a; 1.自动抄表功能 水表自动抄表系统可以实现自动采集水表的数据&#x…

【学习笔记】Windows 下线程同步之互斥锁

目录 前言环境简介相关函数CreateMutex Wait 函数ReleaseMutexCloseHandle 其他互斥锁的名字未命名互斥锁的同步互斥锁的意外终止临界区对象 参考 前言 本文所涉及的同步主要描述在 Windows 环境下的机制&#xff0c;和 Linux 中的同步机制有一定的联系&#xff0c;但注意并不…

小猫踩球-第14届蓝桥杯省赛Scratch中级组真题第2题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第137讲。 小猫踩球&#xff0c;本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组真题第2题&#xf…

智慧档案馆一体化监控系统设计所需要的10条依据

1.科学性 本项目目标定位为&#xff1a;以科学技术为基础&#xff0c;依靠先进的设备和优越的设计理念、科学客观的管理&#xff0c;利用信息化管理及相关最新技术&#xff0c;将库房实际环境与存储技术、计算机技术、无线自动控制技术、通讯与信息处理技术等先进技术相结合&a…

Python appium搭建app自动化测试环境

目录 前言 App自动化环境安装 安装安卓开发工具 安装模拟器 前言 appium做app自动化测试&#xff0c;环境搭建是比较麻烦的。 也是很多初学者在学习app自动化之时&#xff0c;花很多时间都难跨越的坎。 但没有成功的环境&#xff0c;就没有办法继续后续的使用。 在app自…

面试技术点

一、对热修复、插件化、模块化、组件化有一定研究。 1、模块化 将共享部分或业务模块抽取出来形成独立module。 2、组件化 基于模块化&#xff0c;核心思想是角色的转换&#xff0c;在打包时是library&#xff0c;分离独立的业务组件如微信朋友圈。 3、热修复和插件化种类、…

在Kaggle上使用Stable Diffusion进行AI绘图

前言 因为使用Stable Diffusion进行AI绘图需要GPU&#xff0c;这让其应用得到了限制本文介绍如何在Kaggle中部署Stable Diffusion&#xff0c;并使用免费的P100 GPU进行推理&#xff08;每周可免费使用30小时&#xff09;&#xff0c;部署好后可以在任意移动端使用。本项目在s…

2023全球最佳医院榜单及简要介绍

作为医学类的访问学者、博士后及联合培养博士们&#xff0c;都希望到世界知名医院进行临床研修交流及科研学习。2023 年世界最佳医院排行榜的发布为申请者提供了目标平台&#xff0c;现知识人网小编整理刊出。 近期&#xff0c;《新闻周刊》和全球数据公司 Statista 推出了2023…