DRM-X 6.0 鸽子和橄榄枝标志DRM-X 6.0文档
◎ 简体中文

DRM-X CLI Packager:命令与故障恢复

对源视频进行打包加密,使用受保护的凭据运行自动化任务,并查看各阶段进度。上传中断后可以继续上传,无需重新编码。

查看 Markdown在线示例更新于 2026-10-21

使用完整 Packager Suite 1.0.0-beta.1 中的 CLI,将与 Desktop 相同的打包加密流程自动化。先处理一个较短的源文件并测试已发布结果,再处理大批量任务。

打开套件中的 CLI#

从 Package Content 下载完整 Windows 套件并解压,在解压目录中打开 PowerShell。以下命令要求配套的 FFmpeg、FFprobe 和 Shaka 可执行文件与 drmx-packager-cli.exe 位于同一目录。

.\drmx-packager-cli.exe version
.\drmx-packager-cli.exe help
.\drmx-packager-cli.exe credentials list
.\drmx-packager-cli.exe credentials test --profile "Production"

先在 Desktop Packager 中创建 Production 配置,或将此名称替换为您保存的配置名。使用 CLI 1.0.0-beta.1 及其匹配的套件。通过保存的配置恢复上传时,可续期临时上传授权。

对 1080p 源视频进行打包加密#

将下方的源文件路径、Content ID 和输出路径替换为实际值。输出文件夹必须是新建或空目录。PowerShell 使用行末反引号续行,反引号后不要添加空格。

.\drmx-packager-cli.exe package `
  --profile "Production" `
  --content_id "training-2026-001" `
  --content_title "Training session" `
  --input_source "D:\Sources\training.mp4" `
  --encoding_ladder "sd,hd,full-hd" `
  --video_codec h264 --encoding_preset fast `
  --rate_control smart-quality-vbr --max_frame_rate 24 `
  --audio_bitrate_kbps 128 --segment_duration 6 `
  --packaging_profile maximum-compatibility `
  --key_protection shaka-standard --encrypt_audio `
  --drm_systems "widevine,fairplay,playready,wiseplay" `
  --ffmpeg ".\ffmpeg.exe" --ffprobe ".\ffprobe.exe" `
  --shaka ".\packager-win-x64.exe" `
  --upload-concurrency 8 `
  -o "D:\Protected\training-2026-001"

此命令会分析源文件、生成所选清晰度的视频、加密输出、验证 Manifest、清理临时的未加密视频,最后上传加密输出包。高于源视频分辨率的档位不会通过放大画面生成。处理 UHD 时,请参阅4K、8K 与长视频指南。

只需保留本地加密输出时,添加 --no-upload。要上传到已验证的自有存储,添加 --storage_connection_id "YOUR-STORAGE-CONNECTION-ID"。省略该选项时,会使用配置中的默认存储目标。

查看处理进度并确认任务完成#

分析
读取源文件中的轨道
编码
生成各清晰度的视频
加密
加密各项输出
校验
检查 Manifest
上传
上传并发布

上传成功后会报告已验证的对象数量、总字节数、文件清单的 SHA-256 和已注册的 Manifest URL。最后阶段由服务器验证对象大小、Manifest 路径和加密输出包的 KIDs。请保留输出中的 Packaging Session ID,恢复操作时用它识别同一份加密输出包。

桌面工具读取 CLI 输出的结构化进度。自行接入时,添加 --progress-format ndjson,按每行一个 JSON 对象进行解析;percent 等可选字段可能为 null。即使之前的阶段已完成,只要进程退出码非零,也应将任务视为失败或已取消。

恢复上传,无需重新编码#

本地加密完成后可使用 upload,包括电脑重启后或原 Packaging Access Token 过期后。已保存的配置必须与已完成的加密输出包属于同一个 Site ID。请使用日志中的实际值替换示例中的会话 UUID 和文件夹。

.\drmx-packager-cli.exe upload `
  --profile "Production" `
  --session "11111111-2222-4333-8444-555555555555" `
  --input "D:\Protected\training-2026-001" `
  --upload-concurrency 4

保留完整的输出根目录。如果 Maximum Compatibility 生成了两种加密格式,两者的文件夹都必须保留。对于 1AICLOUD,CLI 会比较远端对象的字节数和 SHA-256 元数据,跳过匹配的对象并继续未完成的上传。未完成的分块对象需要重新上传该对象,已完成的其他对象可以复用。使用自有存储的预签名 URL 时,手动恢复可能会重新传输对象。

遇到限流或临时网络错误时,上传器会等待后重试,并自动续期临时 1AICLOUD 凭据,同时保持存储目标和加密输出包前缀不变。大型对象中失败的分块会单独重试。建议先设置同时上传 4–8 个对象;并发越高不一定越快。恢复前,请停止正在上传同一文件夹的其他进程。

.\drmx-packager-cli.exe upload `
  --session "11111111-2222-4333-8444-555555555555" `
  --input "D:\Protected\training-2026-001" --dry-run

此预检查只读取本地文件数量和大小,不会连接存储、验证服务端授权或检查加密结果。会话 UUID 仍须符合格式要求。旧版基于会话的流程可以使用有效的 DRMX_PACKAGING_TOKEN;如果该 Token 已过期,使用已保存的配置恢复上传更方便。

通过受保护的环境凭据运行自动化任务#

无人值守任务可通过安全凭据存储提供 DRMX_PACKAGER_SITE_ID、DRMX_PACKAGER_ACCESS_KEY 和 DRMX_PACKAGER_KMS_TOKEN,并可按需设置 DRMX_PACKAGER_SERVER。此模式下不要传入 --profile。切勿将真实凭据写入脚本、源代码仓库、命令参数或日志。

每个源文件分别执行一次打包命令,并使用唯一的 Content ID 和空的输出目录。继续下一项任务前,先检查退出码。若打包已完成、只是上传失败,应使用 upload 恢复,不要自动重复 package。Windows 使用上文列出的配套可执行文件。对于已获准使用的 Linux CLI 安装,使用 ./drmx-packager、./ffmpeg、./ffprobe 和 ./packager-linux-x64,并按所用 Shell 的语法续行。

故障排查#

错误消息或现象下一步行动
上传暂时繁忙或已中断等待自动退避和重试完成。如果重试次数已用尽,请保留输出文件,将并发上传数降至 4 或 2 后恢复上传。
401 / 凭据验证失败测试已保存的配置并核对 Site ID。若凭据已撤销,请更换并重新保存凭据。观众的 DRM License Token 不能用于授权打包加密。
输出目录必须为空重新编码时请使用新目录。若加密输出包已完成,应使用上传命令恢复,避免重新打包。
另一个上传可能正在使用此保护文件夹关闭正在使用该目录的其他上传进程。进程退出后,旁边的锁文件可能仍然存在;只有仍被进程持有的文件锁才会阻止恢复。
文件大小、校验和或 Manifest 验证失败保留日志和输出,不要修改 Manifest 或手动发布。请使用原有文件恢复上传;若仍有问题,可向技术支持提供会话 ID 和已脱敏的错误信息。
已移除 UHD 清晰度档位源视频分辨率低于该清晰度档位。生成 UHD 输出需要使用实际达到 UHD 分辨率的源视频。

测试已发布结果,然后集成#

打开 DRM-X Web Player并登录,选择同一环境和 Published Content ID,然后按 Play。确认跳转、画质、声音和每种附加语言都正常。测试成功后,使用 Web SDK 指南和后端集成套件为网站添加播放功能。将打包加密凭据与播放 API 凭据分开管理。