【无标题】Test
短视频平台的那些事
- 前言
过去几年,我一直专注于短视频平台的建设和开发工作。在这个过程中,我发现这个领域有着非常多的挑战和机遇,也涌现出了许多新的技术和创新。今天大家分享我个人的一些经验,希望能够为大家带来一些启发和帮助。
[图片] - 概览介绍
通常一个短视频平台会有自己的视频输入服务(C端App侧 & Web端创作者平台 & 业务方API推送),视频处理服务(转码,水印,片头片尾…),安全服务(涉黄涉暴等安全检测),推荐分发服务(个人推荐,任意渠道推荐,可以超业务域分发,对接外部),数据分析服务(视频,用户相关播放数据和粉丝数据),结算服务(按数据分析结果进行收益结算)。 由于是视频类服务,其中还必须配置CDN文件加速和图片、视频防盗链系统。除了这些之外,实际中会有很多更深层次的或边缘性赋能的业务细节,但今天在这我将不去深扒,而围绕整体上层的功能特点为大家介绍下短视频业务的建设架构和核心能力。
[图片] - 业务框架
以之前的业务举例,如下图有很多短视频相关的基础能力(视频处理,内容理解,审核,流通,分发,数据存储,数据分析)都统一建设到了我们的视频中台,可以大大的缩减新视频业务的对接时间,提高处理和传播效率。由不同的视频发布入口传入中台,在视频中台这个通用域完成视频剪辑处理和合法性判断,并将最终结果推荐分发到各个的渠道方,完成视频的整体流转,同时中台提供数据查询和分析能力。因此外部的视频发布平台(创作者平台、短视频APP)就可以在高度定制化自己的引流、促活业务的同时快速接入视频中台的处理能力,很好的达到了视频中台能力的“多路复用”的效果。
[图片]
服务分层图:
[图片] - 关键技术能力
4.1 视频处理
4.1.1 FFMPEG技术
多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等,一条命令就可以给视频添加很多效果,以下为一些简单例子(实际一条指令可以有很多复杂的操作,大家有兴趣的话可以自己去操作玩一下,使用的时候也需要注意CPU资源):
转码(修改视频格式,分辨率,码率…)案例:
//转码demo
//-i输入,-r 指定帧率,-s 指定分辨率,-b 指定比特率;于此同时可以对声道进行转码,-acodec 指定音频编码,-ab 指定音频比特率,-ac 指定声道数
ffmpeg -i out.ogv -s 640x480 -b 500k -vcodec h264 -r 29.97 -acodec libfaac -ab 48k -ac 2 out.mp4
截图案例:
//ffmpeg 通过指定 -vcodec 参数为 mjpeg,或者指定 -f 参数为 mjpeg时,可以输出 jpg截图,指定 -vcodec参数为png,或者指定输出文件扩展名为png
ffmpeg -i 1.mp4 sample.png -ss 00:00:05 -vframes 1 -an -vcodec mjpeg
水印案例:
//在视频左下角添加图片水印
ffmpeg -i input.mp4 -i logo.png -filter_complex ‘overlay=x=10:y=main_h-overlay_h-10’ output.mp4
//在视频左上角添加一条白色字体的文字水印
ffmpeg -i input.mp4 -vf “drawtext=fontfile=simhei.ttf: text=‘技术是第一生产力’:x=10:y=10:fontsize=24:fontcolor=white:shadowy=2” output.mp4
4.2 视频安全,合规
4.2.1 视频安全审核
由安全审核算法(类似易盾系统)对视频进行判断分析,任何涉黄涉爆的文字,图片,视频内容都将被检测处理,机器审核和人工审核进行双重干预。
4.2.2 视频MD5校验
对所有流入系统的视频进行简单MD5值计算,排除重复的视频。
4.2.3 视频AI指纹
对于高度相似度的类搬运视频,需要通过AI指纹算法进行相似度判重,将已有的高质量视频的AI指纹入库,任何新进的视频都将和指纹库的视频进行相似度对比(空间向量对比,词频碰撞对比),更多详情可上华为云或阿里云上搜索视频指纹相关服务进行了解。
4.3 视频内容理解
4.3.1 视频分类
视频分类算法是通过对视频进行抽样拆帧分析各帧的属性,例如美妆,风景,人文,建筑,游戏等不同类别,通过算法聚合高频分类得到视频的最终分类。
4.3.2 视频标签
同视频分类类似,视频标签算法都是通过算法取帧分析视频画面得到视频标签,但是视频标签会更加专注于一些关键词、热点词,更加具象化。
4.3.3 视频质量
任何视频都可以通过视频质量算法打出质量分数,从而更好的去定性一个视频,判别依据包含但不限于机器判别的视频分辨率、码率、帧率、黑白屏、乱码、马赛克以及人工判别的视频调性(与视频类目和标签相关度)。
4.4 视频推荐,分发
4.4.1 分发
分发主要指的是向不同视频接受渠道分发视频(结合用户黑白名单,渠道业务倾向),一般会有几种策略:
- 按渠道定制视频分类分发
- 按视频质量分发
- 按视频标签分发
- 全量分发
4.4.2 推荐
推荐主要是通过视频推荐算法是通过对视频进行推送,会结合各种大数据计算出来的用户画像与其对应的消费场进行高度融合,推送的对象可以是个人创作者也可以是业务渠道,在建设推荐算法的过程中会进行大量的AB实验(在播放数据、粉丝数据、收益数据等不同影响面进行对比)用于验证和优化算法。
5. 支撑域
5.1 用户域-创作者平台
5.1.1 等级、权益、资格认证体系
原创认证,实名认证,大V认证等都为关键的资质认证渠道,认证完成的用户在信用分,分发优先级,收益结算等都有优先处理权。
不同等级对应不同权益,定制化成长任务,等级提升会有流量、特权、金额奖励。
[图片]
5.1.2 用户留存,促活体系
开设新手指导和各种各样的活动,这些活动在激励用户进行视频投稿时会区分不同用户群体,依据不同层次的用户画像(头部、腰部、尾部)开启留存,促活,品宣等激励策略。
5.2 数据分析领域
涵盖用户数据(粉丝数据,活跃数据,各类排行榜),播放数据(播放量,点赞量,收藏量,分享量,完播率等),以用户和视频两个不同维度(单篇,多渠道对别)多方面展示数据,让用户可以清晰便捷的查看自己的相关数据的波动情况。
[图片]
5.3 收益结算领域
收益结算环节是每个创作者最关心的,所以必须要保证此步骤的透明、公正、及时(生产,反馈)、无误差以及查看分析的便捷性。
结算逻辑通常会开启定时任务自动化统计并分析流量收益、优质收益、活动收益等,保存进入预估收益明细,自动对生成预估对账单与结算单,C端和web端支持用户按指定结算周期查看、提现、审核、打款。同时必不可少的是结算相关的预警,因为涉及到金钱,结算中的所有环节都要有预警和补偿方案,从而保证结算业务的稳定性。
[图片]
6. 总结
以上就是我总结的一些短视频平台的主要建设要点,相信大家已经有了一些了解,其实总体来说短视频业务非常依赖于高效的算法,利用它们去对输入的视频进行快速过滤、定性、推荐,这样就可以更好提高短视频流通的实时性与准确性。除此之外在创作者端的各种激励策略是最重要的,如何能保持平台的吸引力,打开视频消费市场,怎么才能很好的完成用户的留存、促活,所以实际中还有很多其他的辅助平台需要搭建,例如视频剪辑平台(视频剪辑)、MCN平台(个创+机构)、审核平台(机审,人审)、运营后台等,这些平台更多的是为了短视频的生产、审核、流程化、合规化做业务支持。
相关文章:
【无标题】Test
短视频平台的那些事 前言 过去几年,我一直专注于短视频平台的建设和开发工作。在这个过程中,我发现这个领域有着非常多的挑战和机遇,也涌现出了许多新的技术和创新。今天大家分享我个人的一些经验,希望能够为大家带来一些启发和帮…...
1576. 替换所有的问号
1576. 替换所有的问号 C代码:自己写的 char * modifyString(char * s){int n strlen(s);for (int i 0; i < n; i){if (s[i] ?) {if (i ! 0 && i ! n-1) {for (int j 0; j < 26; j) {if (a j ! s[i-1] && a j ! s[i1]) {s[i] a j;br…...
MySQL学习笔记(快速入门)
Mysql快速入门 一、数据库相关概念1.启动数据库2. 客户端连接3. 数据模型4.关系型数据库RDBMS 二、SQL语言1. 通用语法2. SQL分类 三、DDL数据定义语言1. 数据库操作2. 表操作(1) 查询当前数据库所有表show tables;(2) 查询表的结…...
使用DNS查询Web服务器IP地址
浏览器并不具备访问网络的功能,其最终是通过操作系统实现的,委托操作系统访问服务器时提供的并不是浏览器里面输入的域名而是ip地址,因此第一步需要将域名转换为对应的ip地址 域名:www.baidu.com ip地址是一串数字 tcp/ip的网络结…...
docker虚拟网桥和业务网段冲突处理
ifconfig查看docker虚拟网桥ip地址 docker inspect --format{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} $(docker ps -aq)查询所有容器的ip 修改docker-compose networks networks xxx-network: driver: bridge ipam: c…...
axios登录,登出接口的简单封装步骤详解!
目录 总结一、步骤1.安装Axios:2.axios对象封装3.请求api封装4.使用pinia临时库保存响应信息(按需求用)5.最后,在组件中使用! 总结 封装axios对象,编写公共请求代码、添加拦截逻辑、然后分层实现axios请求…...
九大装修收纳空间的设计,收藏备用!福州中宅装饰,福州装修
如果房子面积不大,收纳设计就显得非常重要。其实装修房子中很多地方都可以做收纳,九大空间每一处都可以放下你的东西,让你摆脱收纳烦恼。 收纳空间少的话,装修完后住久了怕会乱成一窝,因此装修的时候,收纳…...
软件工程概论
文章目录 软件的定义软件的特点软件的种类软件工程的起源软件工程的三个阶段软件工程概念的提出软件开发的本质软件工程框架软件工程的目标软件工程的原则软件工程的活动 软件的定义 计算机系统中的程序及其文档。 程序是计算任务的处理对象和处理规则的描述; 文档…...
仅个人记录:复现dotspatialdemo、打包、
复现dotspatialdemo 原始文件 一、新建项目、工具箱设置,项目引用等看上一篇 二、根据Form1.Designer.cs设计界面Form1.cs[设计] SplitContainer控件:将容器的显示区域分成两个大小可调的、可以向其中添加控件的面板。 legend控件:图例 map控…...
华为云云耀云服务器L实例评测|Elasticsearch的springboot整合 Kibana进行全查询和模糊查询
前言 最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到各种问题,在解决问题的过程中学到不少和运维相关的知识。 在前几期的博客中,介绍了Elasticsearch的Docker版本的安装,Elasticsearch的可视化Kibana工具…...
C++统一初始化和初始化列表
一直对C初始化使用圆括号和花括号的区别有所疑惑,参考书籍和博客简单总结一下 文章目录 常见的初始化操作统一初始化(Uniform Initialization)初始化列表(Initializer Lists) 常见的初始化操作 对于一个基础数据类型进行初始化,比如 int: i…...
【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法)
目录 前言 六、批量数据组织——数组 6.1 成绩统计——数组类型 6.1.1 数组类型 6.1.2 数组声明与操作 6.1.3 成绩统计 6.2 统计多科成绩——多维数组 6.3 程序设计实例 6.3.1 杨辉三角形 6.3.2 矩阵乘积 6.3.3 消去法 6.4 线性表——分类与检索 前言 ChatGPT C语…...
C++算法:寻找两个正序数组的中位数
题目 寻找两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1: 输入:nums1 [1,3], nums2 [2] 输…...
2.1 关系数据结构及形式化定义
思维导图: 2.1.1 关系 笔记: 关系数据库模型是一个简单但强大的方式来表示数据及其之间的关系。下面是这节的关键内容: - **关系模型核心概念** * 关系数据模型的核心是“关系”,它在逻辑上表现为一个二维表。 * 此表中&a…...
“揭秘淘宝店铺所有商品接口:一键获取海量热销宝贝信息!“
淘宝店铺所有商品接口可以通过shop id或店铺主链接获取到整店商品,数据包括:商品ID,图片地址,店铺标题,优惠价,价格,销量,宝贝链接等整个店铺的商品。 要使用这个接口,需…...
跟着播客学英语-Why I use vim ? part two
在上一期作者讲到了他使用 Vim 的主要原因是提高效率,不需要再去使用鼠标,今天我们继续上次未听完的内容: if you type Vi, thats going to be alias to Vim anyway by default theres, not really a good reason for you to use vi that I c…...
【网络通信三要素】TCP与UDP快速入门
网络通信三要素 1.什么是网络编程? 可以让设备中的程序,与网络上其他设备中的程序进行数据交互,从而实现网络通信的手段,java.net.*包下提供了网络编程的解决方案 2.基本的通信架构 基本的通信架构有2种形式:CS架构…...
k8s集群的简单搭建
K8S简单集群搭建 前提条件 windos11电脑,内存16g以上安装vmware虚拟机软件安装三个centos7虚拟机,分配硬盘40g,内存4g,CPU4核心网络均采用NAT模式(新建虚拟机默认的模式) centos7镜像下载:https://mirrors.tuna.tsi…...
语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆
文章目录 mask图像介绍步骤代码 mask图像介绍 根据 mask 图像来画分割对象的外接椭圆是一种常见的图像分割任务。Mask 图像通常是一个二值图像,其中包含了感兴趣对象的像素。通常情况下,白色像素表示对象,黑色像素表示背景。 步骤 以下是一…...
Nosql redis高可用和持久化
Nosql redis高可用和持久化 1、redis高可用2、redis持久化2.1redis持久化2.2Redis 持久化方法2.3RDB 持久化2.3.1RDB持久化工作原理2.3.2触发条件2.3.3其他自动触发机制2.3.4执行流程2.3.5启动时加载 2.4AOF 持久化2.4.1AOF持久化原理2.4.2开启AOF2.4.3执行流程2.4.4文件重写的…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
