当前位置: 首页 > news >正文

【无标题】Test

短视频平台的那些事

  1. 前言
    过去几年,我一直专注于短视频平台的建设和开发工作。在这个过程中,我发现这个领域有着非常多的挑战和机遇,也涌现出了许多新的技术和创新。今天大家分享我个人的一些经验,希望能够为大家带来一些启发和帮助。
    [图片]
  2. 概览介绍
    通常一个短视频平台会有自己的视频输入服务(C端App侧 & Web端创作者平台 & 业务方API推送),视频处理服务(转码,水印,片头片尾…),安全服务(涉黄涉暴等安全检测),推荐分发服务(个人推荐,任意渠道推荐,可以超业务域分发,对接外部),数据分析服务(视频,用户相关播放数据和粉丝数据),结算服务(按数据分析结果进行收益结算)。 由于是视频类服务,其中还必须配置CDN文件加速和图片、视频防盗链系统。除了这些之外,实际中会有很多更深层次的或边缘性赋能的业务细节,但今天在这我将不去深扒,而围绕整体上层的功能特点为大家介绍下短视频业务的建设架构和核心能力。
    [图片]
  3. 业务框架
    以之前的业务举例,如下图有很多短视频相关的基础能力(视频处理,内容理解,审核,流通,分发,数据存储,数据分析)都统一建设到了我们的视频中台,可以大大的缩减新视频业务的对接时间,提高处理和传播效率。由不同的视频发布入口传入中台,在视频中台这个通用域完成视频剪辑处理和合法性判断,并将最终结果推荐分发到各个的渠道方,完成视频的整体流转,同时中台提供数据查询和分析能力。因此外部的视频发布平台(创作者平台、短视频APP)就可以在高度定制化自己的引流、促活业务的同时快速接入视频中台的处理能力,很好的达到了视频中台能力的“多路复用”的效果。
    [图片]
    服务分层图:
    [图片]
  4. 关键技术能力
    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代码&#xff1a;自己写的 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. 表操作&#xff08;1&#xff09; 查询当前数据库所有表show tables;&#xff08;2&#xff09; 查询表的结…...

使用DNS查询Web服务器IP地址

浏览器并不具备访问网络的功能&#xff0c;其最终是通过操作系统实现的&#xff0c;委托操作系统访问服务器时提供的并不是浏览器里面输入的域名而是ip地址&#xff0c;因此第一步需要将域名转换为对应的ip地址 域名&#xff1a;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&#xff1a;2.axios对象封装3.请求api封装4.使用pinia临时库保存响应信息&#xff08;按需求用&#xff09;5.最后&#xff0c;在组件中使用&#xff01; 总结 封装axios对象&#xff0c;编写公共请求代码、添加拦截逻辑、然后分层实现axios请求…...

九大装修收纳空间的设计,收藏备用!福州中宅装饰,福州装修

如果房子面积不大&#xff0c;收纳设计就显得非常重要。其实装修房子中很多地方都可以做收纳&#xff0c;九大空间每一处都可以放下你的东西&#xff0c;让你摆脱收纳烦恼。 收纳空间少的话&#xff0c;装修完后住久了怕会乱成一窝&#xff0c;因此装修的时候&#xff0c;收纳…...

软件工程概论

文章目录 软件的定义软件的特点软件的种类软件工程的起源软件工程的三个阶段软件工程概念的提出软件开发的本质软件工程框架软件工程的目标软件工程的原则软件工程的活动 软件的定义 计算机系统中的程序及其文档。 程序是计算任务的处理对象和处理规则的描述&#xff1b; 文档…...

仅个人记录:复现dotspatialdemo、打包、

复现dotspatialdemo 原始文件 一、新建项目、工具箱设置&#xff0c;项目引用等看上一篇 二、根据Form1.Designer.cs设计界面Form1.cs[设计] SplitContainer控件&#xff1a;将容器的显示区域分成两个大小可调的、可以向其中添加控件的面板。 legend控件&#xff1a;图例 map控…...

华为云云耀云服务器L实例评测|Elasticsearch的springboot整合 Kibana进行全查询和模糊查询

前言 最近华为云云耀云服务器L实例上新&#xff0c;也搞了一台来玩&#xff0c;期间遇到各种问题&#xff0c;在解决问题的过程中学到不少和运维相关的知识。 在前几期的博客中&#xff0c;介绍了Elasticsearch的Docker版本的安装&#xff0c;Elasticsearch的可视化Kibana工具…...

C++统一初始化和初始化列表

一直对C初始化使用圆括号和花括号的区别有所疑惑&#xff0c;参考书籍和博客简单总结一下 文章目录 常见的初始化操作统一初始化(Uniform Initialization)初始化列表(Initializer Lists) 常见的初始化操作 对于一个基础数据类型进行初始化&#xff0c;比如 int&#xff1a; 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 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,3], nums2 [2] 输…...

2.1 关系数据结构及形式化定义

思维导图&#xff1a; 2.1.1 关系 笔记&#xff1a; 关系数据库模型是一个简单但强大的方式来表示数据及其之间的关系。下面是这节的关键内容&#xff1a; - **关系模型核心概念** * 关系数据模型的核心是“关系”&#xff0c;它在逻辑上表现为一个二维表。 * 此表中&a…...

“揭秘淘宝店铺所有商品接口:一键获取海量热销宝贝信息!“

淘宝店铺所有商品接口可以通过shop id或店铺主链接获取到整店商品&#xff0c;数据包括&#xff1a;商品ID&#xff0c;图片地址&#xff0c;店铺标题&#xff0c;优惠价&#xff0c;价格&#xff0c;销量&#xff0c;宝贝链接等整个店铺的商品。 要使用这个接口&#xff0c;需…...

跟着播客学英语-Why I use vim ? part two

在上一期作者讲到了他使用 Vim 的主要原因是提高效率&#xff0c;不需要再去使用鼠标&#xff0c;今天我们继续上次未听完的内容&#xff1a; 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.什么是网络编程&#xff1f; 可以让设备中的程序&#xff0c;与网络上其他设备中的程序进行数据交互&#xff0c;从而实现网络通信的手段&#xff0c;java.net.*包下提供了网络编程的解决方案 2.基本的通信架构 基本的通信架构有2种形式&#xff1a;CS架构…...

k8s集群的简单搭建

K8S简单集群搭建 前提条件 windos11电脑&#xff0c;内存16g以上安装vmware虚拟机软件安装三个centos7虚拟机&#xff0c;分配硬盘40g,内存4g,CPU4核心网络均采用NAT模式&#xff08;新建虚拟机默认的模式&#xff09; centos7镜像下载&#xff1a;https://mirrors.tuna.tsi…...

语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆

文章目录 mask图像介绍步骤代码 mask图像介绍 根据 mask 图像来画分割对象的外接椭圆是一种常见的图像分割任务。Mask 图像通常是一个二值图像&#xff0c;其中包含了感兴趣对象的像素。通常情况下&#xff0c;白色像素表示对象&#xff0c;黑色像素表示背景。 步骤 以下是一…...

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文件重写的…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...