有没有人设法实现这部分?Apple 已随 FairPlay SDK(预览版)一起发布了一些参考代码,但仍有一些缺失的部分。是否有任何指南/教程可以帮助/指导实施?
更新:此问题具体涉及保护(加密/混淆)内容客户端与在从服务器传输之前执行此操作.在像itune这样的方法中进行的优点/缺点是什么 - 在传输之前文件没有被加密/混淆.
正如我在原始问题的说明中添加的那样,我们需要遵守合同(就像大多数实施drm的服务一样).我们推动drm免费,大多数内容提供商的交易都在其上,但这并没有解除我们已经存在的义务.
我最近阅读了有关itunes/fairplay如何接近drm的一些信息,并且没想到看到服务器实际上没有任何保护地提供文件.
这个答案中的引用似乎捕捉到了问题的精神.
目标应该只是"让诚实的人诚实".如果我们走得更远,只会发生两件事:
- 我们打一场我们无法取胜的战斗.那些想作弊的人会成功.
- 我们通过使其更难以使用来伤害我们产品的诚实用户.
我认为这里的诚实用户没有任何影响,文件将绑定到用户 - 无论是客户端还是服务器端.这确实为1中的人提供了另一个机会.
一个额外的信息:客户端环境是adobe air,涉及多种内容类型(音乐,视频,Flash应用程序,图像).
那么,像itune的fairplay和保护媒体客户端这样做是否合理.
注意:我认为牢不可破的DRM是一个无法解决的问题,并且正如大多数人都在寻找答案,对它的需求与它已经与内容提供商的合同有关......在合理的最佳努力下.
HLS协议是否指定音频编解码器?如果可以,支持哪些功能?
我尝试搜索,但是发现了不同的列表:
MP3,HE-AAC或AC-3
根据维基百科
AAC,AAC-LC,HE-AAC(accPlus)v1和v2,MP3
根据这个
AAC-LC,HE-AACV1-2,AC-3和EC-3
根据FairPlay概述(属于HLS的子集)
我正在尝试为 tvOS 中的视频播放器应用程序构建自定义进度栏,并且希望在用户扫描视频时显示视频的缩略图。
我正在使用AVPlayerFairplay HLS 来播放远程视频文件。我尝试使用两种方法来做到这一点。一个用AVAssetImageGenerator's copyCGImage,另一个用AVPlayerItemVideoOutput'scopyPixelBuffer方法。两者都返回零。
当我尝试使用本地视频文件时,第一种方法有效。
方法一:
let imageGenerator = AVAssetImageGenerator(asset: playerItem.asset)
let progressSeconds = playerItem.duration.seconds * Double(progress)
let time = CMTime(seconds: progressSeconds, preferredTimescale: 5)
if let imageRef = try? imageGenerator.copyCGImage(at: time, actualTime: nil) {
image = UIImage(cgImage:imageRef)
}
Run Code Online (Sandbox Code Playgroud)
方法二:
let videoThumbnailsOutput = AVPlayerItemVideoOutput(pixelBufferAttributes: [String(kCVPixelBufferPixelFormatTypeKey): NSNumber(value: kCVPixelFormatType_32BGRA)])
player?.currentItem?.add(videoThumbnailsOutput)
if let pixelBuffer = videoThumbnailsOutput.copyPixelBuffer(forItemTime: time, itemTimeForDisplay: nil) {
let ciImage = CIImage(cvPixelBuffer: pixelBuffer)
Run Code Online (Sandbox Code Playgroud)
有什么想法我做错了吗或者还有其他方法吗?
谢谢!
我正在使用 VideoJS 播放器并有一个 CMAF 视频,所以我使用的是 HLS 和 DASH。我也在使用所有 3 种类型的 DRM。Fairplay 适合 hls、widevine 和 playready 适合冲刺。
我的问题是我是否应该在播放器中同时包含 hls 和 dash 源,并让玩家决定播放哪一个?或者我是否检测浏览器并仅基于此插入正确的网址?DRM也是一样的。我可以将所有 DRM 添加到播放器吗?或者我应该只添加适用的一项?