课程、课时与视频
课程是一个容器——标题、描述、封面图,外加一份有序的课时列表——在仪表盘的课程页面(/dashboard/courses)下创建和编辑。每个课时都带有一段上传的视频、可选的文字笔记,以及一个可选的理解检测测验。
创建课程
新课程以草稿状态开始——只有你自己可见,永远不会出现在公开目录中。你可以按任意顺序添加课时(之后随时可以重新排序;课时会按该顺序呈现给会员),也可以先创建好课时大纲,之后再补录视频——课时的视频可以稍后再附加。
上传课时视频
给课时附加视频是一个三步、直接上传到存储的流程,而不是一次简单的表单提交:
- MailInApp 会先检查此次上传是否会超出你套餐的视频存储上限,然后铸造一个
videoAssets文档,外加一个短期有效的签名上传 URL。 - 浏览器把原始文件字节直接上传到该签名 URL——文件永远不会经过 MailInApp 的服务器。
- 上传完成后,一次完成调用会启动转码:一个 Transcoder API 任务会把上传内容转换成私有的 HLS 版本外加一张海报帧,该素材的状态会从
uploading依次变为processing、ready(或者failed,并附带一条简短易懂的原因说明返回给你)。课程编辑器会持续轮询并展示素材当前所处的状态——你不需要一直盯着它,但一个较大的文件在可以观看之前可能需要几分钟来完成处理。
视频以私有方式存储和播放——绝不是一个可以被复制粘贴到别处的公开 URL。播放权限只通过每次请求时的资格核验来授予(见会员门户与订阅账单),而不是一个任何拿到链接的人都能用的链接。
免费试看
为任意课时(通常是第一课)开启免费试看,让任何到达你门户的人都能播放它,无论是否已订阅——这是显而易见的"先尝后买"手段。其他所有课时都需要一个有效的订阅。
课时理解检测
给一个课时附加一个简短测验:一个及格分数线,外加一组问题,每个问题都有自己的选项和正确答案,服务器端校验方式与工作室的测验模块相同。这是一个独立的、仅门户使用的实现,因为课时没有可供挂载邮件测验模块的营销活动。但计分模型(与及格分数进行精确答案匹配)与你在营销活动中使用过的测验模块是同一套逻辑。
观看进度
当会员观看时,其播放位置会每 ~15 秒保存一次,课时播完时再保存一次,因此重新打开一个课时会从上次离开的地方继续播放。一个已标记为完成的课时,即使会员重新观看其中较早的部分,也依然保持完成状态。你可以在课程详情页看到按课时汇总的完成人数——一个朴素的"有多少会员看完了这一课"的数字,是问卷响应仪表盘中按问题汇总统计在门户中的对应版本。
发布与社区审核环节
课程会一直保持草稿状态,直到你提交审核,此时它会变为待审核。这是一个人工管理员审核队列,与公共模板图库自己的待审核状态采用相同的"先由人工审核,再上线"模式。审核通过后它会变为已发布,并出现在你门户的目录中。如果被退回,你会看到一条简短的已拒绝原因,修复被指出的问题后可以重新提交。你自己只能请求将其设为草稿或提交审核——没有任何操作能让你直接把一个课程置为已发布或已拒绝状态。
一个已发布的课程也可能与该审核流程无关地被下架,如果 MailInApp 收到针对它的有效版权通知——具体流程以及如何提出异议,见版权政策。
通知会员有新课时上线
发布一个课时不会自动向任何人发邮件——课程详情页上的通知会员按钮是一次刻意的、需要你主动触发的发送操作,这样一次性上线五个课时就不会散发出五封各自独立的邮件。它会通过与你的欢迎邮件/取消订阅通知相同的生命周期邮件路径,发送给每一位当前拥有权限的会员,而不是走工作室的营销活动流水线——这是一条普通的事务性通知,不是一次项目渲染。