第一章 AB实验的基本原理和应用

AB实验的相关概念:

3个基本参数:实验参与单元、实验控制参数、实验指标

2个核心价值:验证因果关系、量化策略效果

2个关键特性:先验性、并行性

基本流程:分流 -> 实验 -> 数据分析 -> 决策

基本要素

  1. 实验参与单元,关键条件:

    • 实验参与单元互不干扰
    • 实验参与单元合理随机化
    • 足够的实验参与单元;实验实际提升效果越不明显,就需要更多的参与单元来确认实验效果。例如:点击率、曝光率等变化幅度较大的指标,变化1%,需要十万级单位;留存率变化幅度较小,需要更多;对于初创、垂类(用户只有几千或几万),只能测出3%、5%甚至10%以上的实验效果
  2. 实验控制参数,满足以下条件:
    • 实验控制参数可分配(最关键)
    • 实验控制参数容易改变
  3. 实验指标,满足两个基本要求:
    • 实验指标能反映实验者的意图
    • 实验指标可测、易测

核心价值

  1. 定性因果:验证因果关系,确保方向正确

    相关性:当一件事情出现时,另一件事情也出现

    因果关系:一件事情出现的原因是另一件事情出现,或者一件事情出现的结果是另外一件事出现
  2. 定量增长:实践数据驱动,精细成本收益

    因果推断常用的模型:

    • 潜在因果框架,Rubin因果模型(RCM)
    • 因果图模型

      \(T_i\)表示个体i是否进行了某个实验,实验取1,对照取0,\(\{Y_i(1),Y_i(0)\}\)表示个体i进行实验和作为对照的潜在结果,例如:\(Y_i(0)\)表示用户没有被投放红点时的活跃度,\(Y_i(1)-Y_i(0)\)表示个体接受实验后的个体因果作用。
\[\begin{aligned}
ACE(T \rightarrow Y) &= E\{Y_i(1)-Y_i(0)\}
\\ &= E\{Y_i(1)\}-E\{Y_i(0)\}
\\ &= E\{Y_i(1)|T_i=1\} -E\{Y_i(0)|T_i = 0\}
\\ &= E\{Y_i(1)|T_i=1\} -E\{Y_i(0)|T_i = 1\} + E\{Y_i(0)|T_i = 1\}-E\{Y_i(0)|T_i = 0\}
\\ &=E\{Y_i|T_i = 1\}+ E\{Y_i(0)|T_i = 1\}-E\{Y_i(0)|T_i = 0\}
\end{aligned}

\]

\(E\{Y_i|T_i = 1\}\)是实验对参与实验的人的平均因果效应,\(E\{Y_i(0)|T_i = 1\}-E\{Y_i(0)|T_i = 0\}\)是随机本组带来的选择偏差

关键特性

先验性:小流量预先获得效果评估

并行性:同一个实验对象可以有多个实验并行展开

应用场景

  典型的应用场景:推荐类场景(算法优化黑盒属性)、运营类场景(长短期综合收益ROI)、UI设计和交互类场景(感性决策众口难调)

第二章 AB实验的关键问题

实验参与对象的3个问题

  1. 实验参与对象是否被合理随机化(性能最好:哈希函数)
  2. 实验参与对象是否相互独立;AB实验结果有效需要满足一个基本假设:个体处理稳定性假设(Stable Unit Treatment Value Assumption,SUTVA:任何实验单元的潜在结果不会随分配给其他单元的处理而变化)
  3. 实验参与对象的数量是否足够进行实验评估

实验随机分流的3个问题

  1. 最小分流单元采用什么颗粒度是最佳的选择(元素级别、页面级别、会话级别、用户级别)
  2. 在分流时,如何在不增加实验评估复杂度的情况下实验流量复用
  3. 对于同一个实验组中的各组对象,是否同质?存在SRM问题(样本比例不匹配)吗?

实验指标的2个问题

  1. 如何建立一个完善的产品指标体系,包括指标的设计、评估、进化和计算等
  2. 如何选择合适的实验评估指标,包括从产品视角、工程视角综合考虑,以及多个目标指标如何合并成综合评价指标(OEC)

实验分析和评估的3个问题

  1. 对于统计结果理解是否正确

    • 如何解读实验结果中p值、置信度、置信区间的关系
    • 实验得出的相对提升,究竟是一个自然波动还是真实的实验提升
    • 实验参与单元的数量是否足以检验想要的实验效果
    • 实验统计的power值(统计功效)是否充分
    • 实验统计精度是否可以检测出业务的提升
  2. 实验分析的过程是否正确
    • 有没有进行AA实验
    • 在实验过程中有没有SRM测试
    • 在实验过程中有没有偷窥实验
    • 是否存在幸存者偏差、辛普森悖论
    • 局部实验的结果如何推导为全局提升量、转化过程是否正确
  3. 实验分析的外推结果是否正确

    在一些特定的情况下,实验结果被推广到实验的设置之外不再有效:

    • 群体外推:结果推广到实验群体之外
    • 时间外推:实验时间范围之外推广,因此不能确保长期影响和短期影响是相同的

第三章 AB实验的统计学知识

随机抽样与抽样分布

  样本均值与总体均值总有差异,\(\mu = \bar{x} + \epsilon \),如何衡量\(\epsilon\),当无法得到全部用户数据时,可以采用反复抽取100个用户的方法,得到不同的随机样本,通过\(E(\bar{x})= \mu,\sigma_{\bar{x}}=\frac{\sigma}{\sqrt{n}}\)来计算总体均值

  • 样本容量:每个随机样本中个体数
  • 样本量:随机抽样的次数

样本容量与边际误差

  1. 均值类指标\(\epsilon = Z_{\alpha/2}\frac{\sigma}{\sqrt{n}}\),样本容量\(n = \frac{(Z_{\alpha/2})^2\sigma^2}{\epsilon^2}\),边际误差是业务需要检验的最低幅度变化,所以又称为最小检出水平
  2. 比率类指标\(n = \frac{(Z_{\alpha/2})^2\bar{p}(1-\bar{p})}{\epsilon^2}\)

假设检验

  为控制第二类错误,引入一个概念——功效(power)。功效是指H0不成立时,做出拒绝H0的结论正确的概率,功效 \(= 1- \beta\),第二类错误发生的概率越小,功效越大。

例如:当\(P<\alpha\),则拒绝原假设H0,认为策略有效;

   当\(P \geq \alpha\),则不能拒绝原假设H0,也不能接受H1,此时不能说明策略有效,也不能说明策略无效,需要进一步观察功效,如果功效>80%,说明犯第二类错误的概率很低,即策略有效被判断为无效的概率很低,此时策略是无效的。

弄假成真第一类:原假设为真拒绝原假设(拒真错误)——活动指标相等(假:活动无效),但判断为活动有效(真)

弄真成假第二类:原假设为假接受原假设(取伪错误)——活动指标不相等(真:活动有效),但判断为活动无效(假)

非参数检验

  参数检验要求符合独立同分布,非参数的方法对总体概率没有分布的要求,不对模型做任何参数假设,完全是基于数据模拟的方法。目前使用最多的是bootstrap(有放回)jackknife(无放回)

多重测试问题

  每次判断正确的概率为95%,对同样的事情多次判断,开设N个相同的实验组,全部判断正确的概率变为(95%)^N,问题的主要来源:

  1. 多次重复相同的实验;
  2. 多次进行相同对比;
  3. 实验进行过程中多次查看实验结果,即常说的实验偷窥
  4. 同一个实验有多个指标的情况

采用以下方式进行避免:

  1. 在构建实验指标体系的时候,核心实验指标的设置和选择要尽量少
  2. 在实验过程中不要多次查看实验结果

第四章 AB实验参与单元

实验参与单元的选择

在互联网产品的AB实验中,有以下几种比较常见的实验参与单元:

  1. 元素级别:指对实验元素,比如一篇文章、一首歌曲等进行随机分流并标识实验id的随机过程。(例:算法推荐信息)
  2. 页面级别:产品页面被视为实验参与单元,进行实验的页面每打开一次,就会被随机函数分配到不同的实验组中。
  3. 会话级别:用户在网站的一次访问时查看的一组页面或者是启动一次APP后在APP内的行为(启动 -> 退出)
  4. 用户级别:以用户为实验参与单元

选择合适的实验参与单元的关键因素:

  1. 实验所需要的流量以及实验检测精度
  2. 用户体验的连续性

注:为保证体验的稳定性和连续性,最好采用用户级别;在不影响用户体验的前提下采用更细粒度的随机单元。

用户级别的实验参与单元的常用用户标识有:

  1. 登录账号
  2. 设备ID

实验参与单元的SUTVA问题

常见问题如下:

  1. 什么是SUTVA?

      个体处理稳定性假设(Stable Unit Treatment Value Assumption),指在AB实验分析中,假设实验中每个实验参与单元的行为是相互独立的。
  2. 为什么需要让SUTVA成立

      AB实验因果分析主要基于鲁宾因果模型进行,分析框架的三个基本要素:

    • 潜在结果:给定一个实验单元和一系列动作,把一个“实验单元-动作”确定为一个潜在结果。“潜在”表达的意思是并不总能在现实中观察到这个结果,但理论上发生。
    • SUTVA:任何单元的潜在结果不会因分配给其他单元的处理而发生变化,并且对于每一个单元,不同的处理对应唯一不同的结果
    • 分配机制
  3. 哪些情况会导致SUTVA不成立
    • 直接干扰:同时访问相同的物理空间
    • 间接干扰:通过某些潜在变量或共享资源,两个实验单元可以有间接连接;例:滴滴让实验组的乘客更有可能选择搭车导致司机少了
  4. 如何解决SUTVA不成立的问题

    解决AB实验的干扰问题:

    • 建立监控和报警
    • 隔离法:通过识别连接介质隔离用户来消除潜在干扰,常用的隔离方法:
      • 共享资源隔离
      • 地理位置隔离
      • 网络族群隔离:在社交网络上,可以根据节点干扰的可能性构建彼此接近的节点的簇,然后将簇作为单元独立、随机分为实验组或对照组
    • 边缘度分析
    • 生态经验法
    • 双边随机化

最小实验参与单元数量

  如何确定一个“最小”的样本量,在保证实验“可靠性”的同时,不会浪费过多流量。控制样本量的主要因素:

  1. 显著性水平
  2. 统计功效(\(1-\beta\)):实验本身有效果同时也被判断为有效果的概率。对于一个AB实验
    • 第一类错误不超过5%
    • 第二类错误不超过20%,功效大于80%

      背后理念:宁可砍掉四个好的产品,也不让一个坏的产品上线
  3. 基线水平:在实验开始之前,对照组中所关心的实验指标的表现情况,即产品不做改变时的指标水平。
  4. 最小检出水平:用于衡量实验判断精度的最低要求

    总结:计算最小实验单元就是为了将第一类和第二类错误控制在一定范围内,达到一定的实验置信度和业务评估精度,主要有四个因子:显著性、统计功效、指标(方差)、最小检出水平

第五章 AB实验的随机流量

进行用户随机分流,需要重点关注的几个问题:

  1. 用户如何被随机分为实验组和对照组
  2. 实验量增加后,流量不够用的问题和解决
  3. 不同层之间的正交性是如何实现并保证的
  4. 随机分流时如何选择散列算法

单层分流模式

适合阶段:实验初级阶段,实验数量通常很少

定义:单层指不重复利用用户,在同一个时间内,用户最多只会参与一个实验。

缺点:对并发实验数量有限制

正交分层模式

实现方法:拥有多个实验层,其中每一层的行为类似于单层方法。为了确保层间实验的正交性,在把用户分配到桶时,会添加层id,也称为盐值。层与层之间的正交性就是靠散列函数加层id的方式来保证。

正交分层模式的关键点:

  1. 正交性如何保证?

  2. 如何确定分多少层且如何使用?

    全析因实验设计:将每个实验都单独作为一层

    为避免同类实验碰撞,可以使用有限层的划分方式:将系统参数划分为多个层,不同层运行不同类的实验,组合在一起可能会产生较差的用户体验的实验必须放在同一层,防止向同一用户运行。关键点:

    • 同类业务互斥进入同一层
    • 不同类业务可以拆分到不同层,并行进行、保证实验流量足够,通过正交实现层间效果互相影响的隔离

散列算法

散列算法的考虑方面:计算性能、均匀性、相关性

计算性能:指开始分流时散列算法的速度

均匀性:指同层之中分为不同实验组的时候,每个组分到参与用户的数量尽量一致(组间差异)

相关性:指不同层的组之间的混合尽量均匀(层间差异)

常用的散列算法:MD、SHA、JDB、Murmur

注:在满足一定用户量的情况下出现了显著差异,大概率是出现了分流不均的情况,原因:系统出错、用户不同质,一般考虑在实验前进行检验(SRM检验[样本比例不匹配]、AA实验)

第六章 AB实验的SRM问题

样本比例不匹配问题(SRM)是常见的一种导致实验失败的原因。

保护指标:

  1. 组织性保护指标:保护指标用于保护业务不受伤害
  2. 实验可信度保护指标:针对实验本身的可信度(SRM指标)

什么是SRM

SRM问题是实验组和对照组之间的实验参与单元数量(比如用户数、页面数、会话数等)的比率不匹配。

导致SRM问题的原因

原因:实验的部署、执行、数据处理、分析

  1. 部署阶段
  • 残留效应:前一个实验污染了相同用户分组的后续实验
  • 触发前状态偏差
  • 动态定向目标:定向目标是指实验运行在特定的用户集上,基于用户的属性和活动特征为他们提供个性化的产品体验
  1. 执行阶段

    采用图6-2来避免出现用户过滤条件

  2. 数据处理和分析阶段

    在数据分析阶段,SRM问题主要是分析过程中一些样本偏差被忽视,以理论的样本比例进行分析造成的错误。例如:机器人过滤;数据处理中常删除机器人流量,而机器人过滤会存在数据失真的情况,从而导致SRM问题

SRM指标计算和定位

  1. SRM指标计算

    通过实验组和对照组实验参与单元的可比性来实现,当采样比例指标的P值很低时,应该假定大概率是系统中的某个地方存在错误。

举例:

预定比例 实验:对照 = 447500:447500 = 0.5:0.5

实际比例 实验:对照 = 445000:450000 = 0.4972:0.5

计算过程:

计算方差:\(\sigma = \sqrt{\frac{p(1-p)}{n}}=\sqrt{\frac{0.5(1-0.5)}{895000}}=0.0005285\)

计算Z统计量:\(z_{\alpha/2}=\frac{x-\mu}{\sigma}=\frac{0.4972-0.5}{0.000528}=-5.2980\)

查P值:根据Z值反查P值,\(P = 1.17 \times10^{-7}\),P值很低(远低于0.001)

做出判断:倾向认为这个实验出现了SRM问题

  1. 定位SRM问题

    常见的定位SRM问题方法:
  • 验证随机化点或触发点上游没有差异
  • 验证变量分配是否正确
  • 是否有相同的初始区间(一起开始实验)
  • 查看细分市场的样本比率
    • 每天是否有异常数据
    • 某个细分市场数据是否突出
    • 新老用户等

第七章 AA实验

  随机选取两组用户,对这两组用户使用一样的策略,除了参与实验的对象之外没有其他不同的实验成为AA实验,也称为AA测试、空转实验,就是实验组和对照组完全相同的AB实验。

AA实验的意义

  1. 控制第一类错误

    控制实验有效却被判断为无效的情况
  2. 确保用户同质
  3. 数据指标对齐,评估指标的可信度和可变性

    将实验指标数据和大盘指标数据对齐,有两个重点检查环节:

    • 生效的用户量是不是和预估的实验流量匹配
    • 各项比率、人均指标是不是和大盘日志监控系统的数据对齐

  如果存在指标和大盘数据存在明显差异,应该检查如下环节:

  • 实验分流是不是针对某个特殊群体生效了
  • 上报、计算规则问题
  1. 估计统计方差

如何运行AA实验

  1. 什么时候运行AA实验

    一般在AB实验系统刚开始运行,或是AB实验系统采用了新的随机分流机制(新随机函数、新增加实验层、实验域等)、采用新的数据计算流等任何可能影响实验结果的重大变化的时候,建议随机运行尽可能多的AA实验。

    可以模拟1000个AA实验,并根据实验结果绘制P值分布图,如果AA实验的P值分布不均匀,则AB实验系统的可信度存疑。

    注意事项:

    • AA实验进行3~7天,如果多项指标有显著差异,则AA实验不通过,需要重新开启AA实验

  常规的实验级别AA实验保证了实验的可信度,但增加了实验的周期,加速实验进程的常用方法——日志回溯法、流量寻优法。

  • 日志回溯法:通过日志回溯实验开始前一个时间段两个实验组中用户的各项指标,查看各项指标是否一致。
  • 流量寻优法:流量换时间;同时开几组实验,3~7天后选择两个无显著差异的组别进行AB实验,其他组可以释放

AA实验失败的常见原因

常见原因如下:

  1. 分流不随机
  2. 指标方差估计错误
  3. 最小样本量不符合要求
  4. 脏数据

第八章 AB实验的灵敏度

什么是实验灵敏度

  灵敏度是某种测量方法对单位浓度或单位待测量物质变化的响应变量的响应量变化程度。检测能力的大小就称为实验灵敏度。

  如何理解实验灵敏度?单个实验优化所能带来的提升是非常有限的,这个时候如果实验检测的灵敏度不高,就容易给出错误甚至相反的结论。

如何提升实验灵敏度

  实验灵敏程度 = 对样本指标所在区间估计的准确程度,减少边际误差,提高灵敏度的方法主要有两种:1. 降低方差;2. 增加样本量

  增加样本量的可控性较低,一般通过减少方差的方法,主要从三个方面入手:

  1. 选择指标,选择方差更小的指标
  2. 选择实验参与单元,选择粒度更小的参与单元以减少方差
  3. 在实验分组过程中,通过分层法、CUPED等方法减少因不同特征用户组间分配不均带来方差

选择指标

  1. 选择方差较小的指标评估
  2. 标准化评估指标,常见标准化方法:二值转化、对数转化、截断法、

选择实验参与对象

  1. 选择更细粒度的单元随机化对象
  2. 使用触发分析

选择实验分组

  1. 使用分层、控制变量或CUPED方法
  2. 设计配对实验:

    配对设计实验的思想:在配对实验设计中向同一个用户展示实验组和对照组方案,同一个用户可以同时对这两组方案做出反馈,消除用户差异性,例如:交错设计

定向触发技术和评估

  1. 触发的方式:特征触发、行为触发
  2. 触发范围的变化:扩大触发范围、触发范围改变、机器学习模型触发范围
  3. 触发实验的分析需要注意的点:
    • 一旦用户触发,后续实验必须将这些用户包含在其中
    • 分析时间粒度的选择
    • 合理计算触发实验计算提升量
  4. 触发检验,确保触发,应执行两项检查:
    • SRM问题
    • 补充分析,为从未触发的用户进行AA实验,如果统计上有显著差异,那么触发条件很有可能不正确
  5. 触发技术的局限性

    如何验证实验灵敏度的提升

    可以通过模拟实验的方法验证灵敏度的提升,模拟实验就是采用和线上完全相同的实验抽样算法,复现线上抽样效果

AB实验:科学归因与增长的利器的更多相关文章

  1. 滴滴数据驱动利器:AB实验之分组提效

    桔妹导读:在各大互联网公司都提倡数据驱动的今天,AB实验是我们进行决策分析的一个重要利器.一次实验过程会包含多个环节,今天主要给大家分享滴滴实验平台在分组环节推出的一种提升分组均匀性的新方法.本文首先 ...

  2. 为什么在数据驱动的路上,AB 实验值得信赖?

    在线AB实验成为当今互联网公司中必不可少的数据驱动的工具,很多公司把自己的应用来做一次AB实验作为数据驱动的试金石. 文 | 松宝 来自 字节跳动数据平台团队增长平台 在线AB实验成为当今互联网公司中 ...

  3. 想做长期的 AB 实验?快来看看这些坑你踩了没

    作者:江颢 1.什么是长期的 AB 实验 大部分情况下,我们做的 AB 实验都是短期的,一到两周或者一个月之内的,通过分析这段时期内测得的实验效应得出实验结论,并最终进行推广. 长期实验即运行时间达数 ...

  4. AB实验的高端玩法系列2 - 更敏感的AB实验, CUPED!

    背景 AB实验可谓是互联网公司进行产品迭代增加用户粘性的大杀器.但人们对AB实验的应用往往只停留在开实验算P值,然后let it go...let it go ... 让我们把AB实验的结果简单的拆解 ...

  5. Paper慢慢读 - AB实验人群定向 Recursive Partitioning for Heterogeneous Casual Effects

    这篇是treatment effect估计相关的论文系列第一篇所以会啰嗦一点多给出点背景. 论文 Athey, S., and Imbens, G. 2016. Recursive partition ...

  6. AB实验的高端玩法系列4- 实验渗透低?用户未被触达?CACE/LATE

    CACE全称Compiler Average Casual Effect或者Local Average Treatment Effect.在观测数据中的应用需要和Instrument Variable ...

  7. 如何科学衡量广告投放效果?HMS Core分析服务助您科学归因

    日益多元化的广告形式以及投放成本的不断攀升,让广告主们更加关注每一次广告投放带来的实际价值. 然而,广告主一般仅能从平台获得展示.点击.下载等前端效果字段,实际的用户注册.激活等后端深度转化指标并无法 ...

  8. AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score

    背景 都说随机是AB实验的核心,为什么随机这么重要呢?有人说因为随机所以AB组整体不存在差异,这样才能准确估计实验效果(ATE) \[ ATE = E(Y_t(1) - Y_c(0)) \] 那究竟随 ...

  9. Paper慢慢读 - AB实验人群定向 Learning Triggers for Heterogeneous Treatment Effects

    这篇论文是在 Recursive Partitioning for Heterogeneous Casual Effects 的基础上加入了两个新元素: Trigger:对不同群体的treatment ...

  10. Paper慢慢读 - AB实验人群定向 Double Machine Learning

    Hetergeneous Treatment Effect旨在量化实验对不同人群的差异影响,进而通过人群定向/数值策略的方式进行差异化实验,或者对实验进行调整.Double Machine Learn ...

随机推荐

  1. 什么?又来智能AI编程?让不让我们活了!

    无事逛github发现了一款智能AI编程,故下载试试 发现异常好用 推荐给大家 github地址:GitHub - getcursor/cursor:一个用于使用AI 编程的编辑器 支持:C# ,Ja ...

  2. Alchemy Nft黑客松任务(第一周)

    Alchemy是什么项目? 2019年12月,Alchemy完成1500万美元A轮融资,资方为Pantera Capital,斯坦福大学,Coinbase,三星等. 2021年4月,Alchemy以5 ...

  3. 浅析pcba测试

      说起PCB大家都很熟悉,那大家知道什么是PCBA吗?它是指将PCB板进行加工,支撑一个成品线路板.而PCBA测试就是对线路板进行一个功能测试.电路测试.那么为什么一定要对PAB板进行检测呢?它有什 ...

  4. xcode历史版本下载

    一.背景 较早之前做过一个项目,当时使用swift 3.x开发. 项目结束后就没再有新需求与更新. 但最近呢需要对项目的某些功能进行调整,项目又重新被拾了起来. 我们知道现在的swift 版本已经到了 ...

  5. TypeScript 引用资源文件后提示找不到的异常处理

    在tsx中引用图片,在文件文本编辑器中提示错误引用: typescript无法识别非代码文件(js是可以的).如果需要在ts中识别此文件资源,可以先声明文件类型. 新建一个ts文件,比如global. ...

  6. Python 组织列表

    组织列表 在创建的列表中,元素的排列顺序是无法预测的,不能总控制用户提供数据的顺序,通过组织列表的方式,来控制列表的排序 使用方法sort()对列表进行永久性排序 sort()方法:列表中值时小写时默 ...

  7. [C++提高编程] 1、模板

    文章目录 1 模板 1.1 模板的概念 1.2 函数模板 1.2.1 函数模板语法 1.2.2 函数模板注意事项 1.2.3 函数模板案例 1.2.4 普通函数与函数模板的区别 1.2.5 普通函数与 ...

  8. ai问答:使用 Vue3 组合式API 和 TS 封装 echarts 折线图

    使用这个组件时,只需要传入合适的chartData数组,就可以渲染一个折线图,并且响应数据变化. <template> <div ref="chart" styl ...

  9. SaaS化开源项目之HouseKeeper云上部署实践

    摘要:华为云DTSE技术专家从源码构建.应用部署到系统调测,详细解读云原生SaaS应用构建的全过程. 本文分享自华为云社区<HouseKeeper云上部署实践>,作者:华为云DTSE. H ...

  10. 2023-03-01:用moonfdd/ffmpeg-go库,将h264文件编码为mp4文件。

    2023-03-01:用moonfdd/ffmpeg-go库,将h264文件编码为mp4文件. 答案2023-03-01: 使用 github.com/moonfdd/ffmpeg-go 库.现在我们 ...