php - 如何在PHP中实现Clear-Key视频加密并在HTML中播放

标签 php html ffmpeg drm eme

<分区>

我想在php中实现视频加密,在HTML5视频中播放加密后的视频。我已经阅读了一些关于它的文档:

而且我知道我可以使用其他工具和服务:

我想提供这样的例子:

我应该通过哪些步骤? 我在服务器端使用 PHP (laravel)。

最佳答案

如果您想支持主要的常用 DRM,目前是 Widevine、PlayReady 或 FairPlay,那么您确实需要多 DRM 服务器或服务。

如果您只想要基本的保护,您可以使用 AES 加密或显然使用 DASH。

这些不是那么安全,但有时足以满足某些需求。

您可以使用 ffmpeg 和 openssl 创建 AES 加密的 HLS 流 - ffmpeg 文档 ( http://ffmpeg.org/ffmpeg-all.html#Options-34 ) 包含此示例脚本:

#!/bin/sh
BASE_URL=${1:-'.'}
openssl rand 16 > file.key
echo $BASE_URL/file.key > file.keyinfo
echo file.key >> file.keyinfo
echo $(openssl rand -hex 16) >> file.keyinfo
ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags delete_segments \
  -hls_key_info_file file.keyinfo out.m3u8

您还可以使用 mp4Box ( https://gpac.wp.imt.fr/mp4box/encryption/common-encryption/ ) 创建基本的明文 DASH 加密:

MP4Box -crypt drm_file.xml movie.mp4 -out movie_encrypted.mp4

drm 信息包含在 drm_file.xml 中,并在上面的链接中进行了解释。

关于php - 如何在PHP中实现Clear-Key视频加密并在HTML中播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46362442/

相关文章:

javascript - 在 Laravel 中使用 ajax FormData() 时无法获取输入字段的值

c++ - 在 Visual Studio C++ 上使用 ffmpeg 库编码视频时出现断言错误

video - 使用 ffmpeg 转换真实媒体

php - 如何解决问题 "The VirtualMerchant ID was not supplied in the authorization request"

javascript - 如何让网站上的每个访问者都位于音频文件的同一点来模拟预定的直播?

php - Symfony2 UniqueEntity 约束 SQL 错误而不是消息

php - 如何使用 mySQL 数据库将 HTML 放入 div

JQuery UI ButtonSet 工具提示

html - 单击 VBA 中图像的第二个按钮

ffmpeg - 将 Webrtc 轨道流转换为 Video 标签中的 URL (RTSP/UDP/RTP/Http)