短视频矩阵管理系统源码开发:视频批量剪辑,分发功能开发示例

短视频矩阵管理系统开发,首先对服务器要求:

源码所需服务器配置 1、规格:最低8核16G

2、硬盘:系统盘40-100G,数据盘不低于100G

3、带宽:10M

4、系统:CentOS7(务必选择7.*)

部署过程中,除对服务器有要求外,还需要提供准备备案域名,域名备案大致需要7-15个工作日,由于地区不同,备案审核的时间周期也不相同。

视频批量剪辑功能开发:

在视频批量剪辑过程中,采用了不同的剪辑模式:如,智能混剪,智能随机,场景顺序,图片组合等,未来还将根据市场开发,开发更多不同的功能

开发展示: 

 <van-tab title="自定义文案" title-style="font-size:32rpx;font-weight:700"><!-- 内容2 --><view class="content"><!-- 顶部 --><view class="top"><view>不会撰写爆款文案?</view><view style="display: flex;align-items: center;"><navigator url="/subpages/chatIndex/chatIndex" class="jddg" style="margin-right: 16rpx;">AI智能文案</navigator><view class="jddg" bindtap="toDraftWrite">行业文案库</view></view></view><!-- 顶部添加 --><view class="addCopy" bindtap="addCopy"><image src="../../static/select/title/add.png" class="addImg"></image>添加自定义文案</view><!-- 添加的文案内容 --><!-- 每一个 --><view  wx:for="{{editList}}" wx:key="index" class="listEvery e"><view class="title">第{{index+1}}个文案</view><!-- 内容 --><view class="copywriter w"><view class="wTxt">{{item.copy}}</view><view bindtap="delCopy" data-index="{{index}}" class="wImg"><image class="delImg" src="../../static/select/title/del.png"></image></view><van-dialog id="van-dialog" confirm-button-color="#586893" customStyle="border-radius:20rpx" confirmButtonText="确定"  /></view></view></view>

视频分发:采用代用户发布视频的形式

该能力的主要用途是:在用户授权的情况下,允许用户从开发者的应用上,将可公开的内容发布到用户自己的抖音账号作品里,并设置好相关的标题、话题、锚点等信息。

适用范围

当前能力仅支持网站应用进行申请开通。

使用场景

仅可在网站应用的电脑端网站中进行授权、使用,可用场景范围

  1. 【政务媒体】可支持政务或媒体机构,做内部的多媒体管理平台,但不可对外面向C端用户使用;(如果是代开发模式,代理公司需要提供授权书)
  2. 【企业服务】可支持企业服务平台,做面向抖音账号的内部内容管理服务平台,只可进行toB场景给到企业及企业员工针对自有账号使用;不可将后台的能力、授权码、相关功能暴露给线上或线下的普通用户使用;

所使用到的接口列表为

代码展示如下:

/** 新增场景*/public function addSceneAction() {$dv_id  = $this->request->getIntParam('dv_id');$name   = $this->request->getStrParam('name');$scene_model    = new App_Model_Douyin_MysqlVideoSceneStorage();$video_model    = new App_Model_Douyin_MysqlVideoStorage();$video_item     = $video_model->getRowByIdSid($dv_id, $this->sid);if (empty($video_item)) {$this->displayJsonError('参数错误');}$max_scene  = $scene_model->getMaxSceneByDvid($dv_id);$indata = ['dvs_dv_id' => $dv_id,'dvs_ds_id' => $this->sid,'dvs_name'  => $name,'dvs_duration'  => $video_item['dv_video_shot']*1000,'dvs_scene' => $max_scene+1,'dvs_create_time'   => time(),];$ret    = $scene_model->insertValue($indata);if ($ret) {$video_model->incNumberById('dv_video_use', 1, $dv_id);}$url    = "/dydqtshoppc/video/startProject?dv_id={$dv_id}&type=1&scene=".$indata['dvs_scene'];$this->displayJsonSuccess(['url' => $url], true, '添加成功');}public function deleteSceneAction() {$dv_id  = $this->request->getIntParam('dv_id');$scene  = $this->request->getIntParam('scene', 1);if ($scene == 1) {$this->displayJsonError('第一个场景不允许删除');}$scene_model    = new App_Model_Douyin_MysqlVideoSceneStorage();$video_model    = new App_Model_Douyin_MysqlVideoStorage();$where  = [['name' => 'dvs_ds_id', 'oper' => '=', 'value' => $this->sid],['name' => 'dvs_dv_id', 'oper' => '=', 'value' => $dv_id],['name' => 'dvs_scene', 'oper' => '=', 'value' => $scene]];$ret    = $scene_model->deleteValue($where);if ($ret) {$video_model->decNumberById('dv_video_use', 1, $dv_id);}$url    = "/dydqtshoppc/video/startProject?dv_id={$dv_id}&type=1&scene=1";$this->displayJsonSuccess(['url' => $url], true, '删除成功');}/** 视频缓存*/public function cacheVideoAction() {//面包屑$breadcrumbs = [['title' => 'AI视频创意', 'link' => '#'],['title' => '视频仓库', 'link' => ''],];$this->buildBreadcrumbs($breadcrumbs);$dv_id  = $this->request->getStrParam('dv_id');$video_model    = new App_Model_Douyin_MysqlVideoStorage();$video_info     = $video_model->getRowByIdSid($dv_id, $this->sid);if (empty($video_info)) {$this->displayBlankPage('参数错误');}$this->output['video_info']     = $video_info;//获取视频缓存列表$where = [['name' => 'dvtv_s_id', 'oper' => '=', 'value' => $this->sid],['name' => 'dvtv_dv_id', 'oper' => '=', 'value' => $dv_id],];$cache_model    = new App_Model_Douyin_MysqlVideoTempVideoStorage();$template_list  = $cache_model->getList($where,$this->index,$this->count);foreach ($template_list as &$item) {$item['score']  = 100 - min($item['dvtv_score'], 100);$use_platform   = empty($item['dvtv_use_platform']) ? [] : json_decode($item['dvtv_use_platform'], 1);$use_platform   = array_unique($use_platform);$item['used_count'] = count($use_platform);$item['used_platform']  = $use_platform;}//计算分页$template_list_all = $cache_model->getCount($where);$page_libs = new Libs_Pagination_Paginator($template_list_all,$this->count,'jquery',true);$pageHtml = $page_libs->render();$this->output['template_list']  = $template_list;$this->output['pageHtml']       = $pageHtml;$this->output['dv_id']          = $dv_id;$this->output_materail_link($dv_id, 0, $video_info);//点数展示$collect_model  = new App_Model_Douyin_MysqlCollectShopStorage();$collect_info   = $collect_model->getCollectSurplusBySid($this->sid);$this->output['collect_info']   = $collect_info;//预约列表$appoint_model  = new App_Model_Task_MysqlAppointTaskStorage();$appoint_where  = [['name' => 'va_ds_id', 'oper' => '=', 'value' => $this->sid],['name' => 'va_dv_id', 'oper' => '=', 'value' => $dv_id],#['name' => 'va_status', 'oper' => '<>', 'value' => 2],];$appoint_sort   = ['va_status' => 'ASC'];$appoint_list   = $appoint_model->getList($appoint_where, 0, 1, $appoint_sort);$this->output['appoint_list']   = $appoint_list;$this->output['platform_list']  = $this->platform;$this->output['appoint_status'] = [0   => '<span style="color: #ff875c;">待执行</span>',1   => '<span style="color: darkgreen">执行中</span>',2   => '<span style="color: red">已结束</span>',3   => '<span style="color: #db4040;">异常中断</span>',];$this->displaySmarty('dydqtshoppc/video/edit-project.tpl');}/** 生成预览视频*/public function previewVideoAction() {$dv_id  = $this->request->getIntParam('dv_id');$temp_id    = $this->request->getIntParam('temp_id', 0);$cache_model    = new App_Model_Douyin_MysqlVideoTempVideoStorage();$cache_video    = $cache_model->getPreviewVideo($dv_id);//判断点数$collect_model  = new App_Model_Douyin_MysqlCollectShopStorage();$collect_info   = $collect_model->getCollectSurplusBySid($this->sid);if (!$collect_info['cs_surplus']) {$this->displayJsonError('无可用点数,无法合成预览视频');}if (empty($temp_id)) {if ($cache_video) {$this->displayJsonSuccess(['path' => $cache_video['dvtv_video_path']], true, '合成成功');} else {$this->createTempVideoAction($dv_id, 1);$this->displayJsonSuccess(null, true, '预览视频正在努力合成中……');}} else {$cache_id   = empty($cache_video) ? 0 : $cache_video['dvtv_id'];if ($temp_id == $cache_id) {$this->displayJsonSuccess(null, true, '预览视频正在努力合成中……');} else {$this->displayJsonSuccess(['path' => $cache_video['dvtv_video_path']], true, '合成成功');}}}

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓄电池风险监控,制造业必备!

在大型加工企业中&#xff0c;蓄电池被广泛应用于各种设备和系统&#xff0c;例如备用电源、起重设备、紧急照明等。蓄电池的可靠性和性能对于企业的正常运行至关重要。 因此&#xff0c;为了确保蓄电池的安全运行和有效管理&#xff0c;引入蓄电池监控系统成为必不可少的环节。…

100天精通Golang(基础入门篇)——第15天:深入解析Go语言中函数的应用:从基础到进阶,助您精通函数编程!(进阶)

&#x1f337; 博主 libin9iOak带您 Go to Golang Language.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《I…

SQL事务与隔离

事务 事务的定义 事务是完成一个任务的多条语句,这些语句中,只要有一条语句失败,那么整个事务就会失败,即使之前的语句已经执行完毕也会被撤回 举个例子: 我去银行给王哥转钱,这个转钱呢分两个步骤,第一步先把我的钱拿出来,第二步把钱给王哥,那万一刚把我钱拿出来但是没到王…

Swift与OC的混编

一些场面话 在一位前辈的博客里看到了关于iOS开发的各种语言的混编&#xff0c;浅浅学习一下怎么使用。不得不说语言混编的开发者是真的&#x1f42e;&#x1f37a; Swift中用OC混编 新建一个Swift文件 创建一个OC的类 选择language为OC 继续往下走&#xff0c;会跳出这个界…

css基础知识二十:说说对Css预编语言的理解?有哪些区别?

一、是什么 Css 作为一门标记性语言&#xff0c;语法相对简单&#xff0c;对使用者的要求较低&#xff0c;但同时也带来一些问题 需要书写大量看似没有逻辑的代码&#xff0c;不方便维护及扩展&#xff0c;不利于复用&#xff0c;尤其对于非前端开发工程师来讲&#xff0c;往…

【Spring Boot】Spring Boot日志详情:基于lombok的日志输出

文章目录 1. 何为日志文件&#xff1f;2. 日志文件的作用3. 日志文件的基本使用3.1 Spring Boot中的日志3.2 自定义日志打印 4 日志级别4.1 日志级别的作用4.2 日志级别的分类4.3 日志级别的设置 5 日志持久化6 基于lombok的日志输出6.1 lombok 简单输出日志案例6.2 浅谈 lombo…

【C++ OJ练习】7.字符串相加

1.题目链接 力扣 2.解题思路 拿到每个字符后 减去字符0 转化成对应的数字 再相加即可 倒着加 因为有进位的情况 最后头插或 者尾插加逆置 3.代码 class Solution { public:string addStrings(string num1, string num2) {//倒着往回加int end1 num1.size() - 1;int end2…

深度学习笔记之Transformer(六)Position Embedding铺垫:Skipgram与CBOW模型

深度学习笔记之Transformer——PositionEmbedding铺垫&#xff1a;Skipgram与CBOW模型 引言回顾&#xff1a; Word2vec \text{Word2vec} Word2vec模型补充&#xff1a;关于 Word2vec \text{Word2vec} Word2vec的一些说明 2023 / 7 / 10 2023/7/10 2023/7/10补充&#xff1a;关于…

六、consumer源码解读

Consumer源码解读 本课程的核心技术点如下&#xff1a; 1、consumer初始化 2、如何选举Consumer Leader 3、Consumer Leader是如何制定分区方案 4、Consumer如何拉取数据 5、Consumer的自动偏移量提交 Consumer初始化 从KafkaConsumer的构造方法出发&#xff0c;我们跟踪到…

设计模式——迭代器模式

迭代器模式&#xff08;落没的设计模式&#xff09; 定义 它提供一种方法访问一个容器对象中各个元素&#xff0c;而又不需要暴露该对象的内部细节。 迭代器是为容器服务的&#xff0c;能容纳元素的对象可以称为容器&#xff0c;例&#xff1a;List、Set、Map 迭代器模式&a…

操作系统实战45讲|01程序的运行过程、02几行汇编几行C

配置环境遇到的问题 virtualBox实现windows和Ubuntu之间的复制粘贴 1.修改设置&#xff0c;设置共享粘贴板为双向 或者在运行的虚拟机的窗口中进行设置 2.安装virtualbox增强功能 (1)直接联网安装 设备----安装增强功能 3.补充 windows中终端和文档复制的快捷键为ctrlc&…

Element Plus el-table 自定义合并行和列

原文链接&#xff1a;Element Plus el-table 自定义合并行和列 前言 目标效果是将表格行数据中某个属性值相同的项合并到一起&#xff0c;效果如下&#xff1a; <el-table :data"tableData" :span-method"spanMethod" style"width: 100%">…