Klar,
anbei der Code zum Hinzufügen von DRM Infos an den AVPlayer. Ich dachte, ich hab dir das schon via PM zugesandt.
Damit du DRM geschützte Inhalte lesen kannst musst du noch den Player anpassen. Für FMX.Media.Mac.pas sieht das so aus:
Delphi-Quellcode:
constructor TMacMedia.Create(const AFileName: string);
var
LURL: NSUrl;
LAbsoluteFileName: string;
LAsset: AVURLAsset;
begin
inherited Create(AFileName);
AVMediaTypeAudio; // Force load the framework
if FileExists(FileName) then
begin
if ExtractFilePath(FileName).IsEmpty then
LAbsoluteFileName := TPath.Combine(TPath.GetHomePath, FileName)
else
LAbsoluteFileName := FileName;
LURL := TNSUrl.Wrap(TNSUrl.OCClass.fileURLWithPath(StrToNSStr(LAbsoluteFileName)));
end
else
LURL := StrToNSUrl(FileName);
if LURL = nil then
raise EFileNotFoundException.Create(SSpecifiedFileNotFound);
FPixelBufferBitmap := TBitmap.Create;
LAsset := TAVURLAsset.Wrap(TAVURLAsset.OCClass.URLAssetWithURL(LURL, nil));
if LAsset.hasProtectedContent then
ContentKeyManager.addContentKeyRecipient(LAsset);
FPlayerItem := TAVPlayerItem.Wrap(TAVPlayerItem.OCClass.playerItemWithAsset(LAsset));
FPlayerItem.retain;
FPlayer := TAVPlayer.Wrap(TAVPlayer.OCClass.playerWithPlayerItem(FPlayerItem));
FPlayer.retain;
FPlayerLayer := TAVPlayerLayer.Wrap(TAVPlayerLayer.OCClass.playerLayerWithPlayer(FPlayer));
FPlayerLayer.retain;
FPlayerLayer.setVideoGravity(CocoaNSStringConst(libAVFoundation, 'AVLayerVideoGravityResizeAspectFill'));
FPlayerLayer.setAutoresizingMask(kCALayerWidthSizable or kCALayerHeightSizable);
FVideoView := TNSView.Create;
FVideoView.retain;
FVideoView.setWantsLayer(True);
FVideoView.layer.addSublayer(FPlayerLayer);
SetupVideoOutput;
end;
Die ContentManager Klasse hat zwei Callbacks die implementiert werden müssen. Zum einen musst du das Zertifikat als TMemoryStream liefern und danach den Request für den Contentkey an deinen Server liefern und das Ergebnis, dann zurück an Fairplay geben. Das funktioniert auf MacOS und iOS. Im englischsprachigen Bereich von Delphi-Praxis steht einiges darüber hier:
https://en.delphipraxis.net/topic/53...layer-and-drm/
Christian