これらは自己回答型の質問です。
問題: PlayReady DRM で保護されたビデオを再生できません。
ここに作業サンプルがあります
if m.VideoPlayer = invalid
m.VideoPlayer = m.top.createChild("Video")
m.VideoPlayer.id = "VideoPlayer"
m.VideoPlayer.observeField("state", "OnVideoStateChange")
end if
drmParams = {}
videoContent = createObject("RoSGNode", "ContentNode")
videoContent.Live = remoteContent.IsLive
videoContent.Url = remoteContent.Path
if remoteContent.CodecType = "DashWideVineDrm" then
videoContent.StreamFormat = "dash"
drmparams.licenseServerURL = remoteContent.DrmRightsUrl
drmParams.KeySystem = "widevine"
else if remoteContent.CodecType = "PlayReadyDrm" then
videoContent.StreamFormat = "ism"
drmParams.KeySystem = "playready"
drmParams.encodingType = "PlayReadyLicenseAcquisitionUrl"
drmParams.encodingKey = remoteContent.DrmRightsUrl
else
videoContent.StreamFormat = "mp4"
end if
videoContent.drmParams = drmParams
device = CreateObject("roDeviceInfo")
httpAgent = CreateObject("roHttpAgent")
if httpAgent <> invalid then
httpAgent.SetCertificatesFile("common:/certs/ca-bundle.crt")
httpAgent.InitClientCertificates()
httpAgent.EnableCookies()
httpAgent.AddHeader("X-Roku-Reserved-Dev-Id", "")
if remoteContent.MYCUSTOMHEADER1 <> invalid and remoteContent.MYCUSTOMHEADER1 <> "" then
httpAgent.AddHeader("MY-CUSTOM-HEADER2", remoteContent.MYCUSTOMHEADER1)
end if
if remoteContent.MYCUSTOMHEADER2 <> invalid and remoteContent.MYCUSTOMHEADER2 <> "" then
httpAgent.AddHeader("MY-CUSTOM-HEADER2", remoteContent.MYCUSTOMHEADER2)
end if
m.VideoPlayer.setHttpAgent(httpAgent)
else
headers = []
headers.push("X-Roku-Reserved-Dev-Id:")
if remoteContent.MYCUSTOMHEADER1 <> invalid and remoteContent.MYCUSTOMHEADER1 <> "" then headers.push("MY-CUSTOM-HEADER1:" + remoteContent.MYCUSTOMHEADER1)
if remoteContent.MYCUSTOMHEADER2 <> invalid and remoteContent.MYCUSTOMHEADER2 <> "" then headers.push("MY-CUSTOM-HEADER2:" + remoteContent.MYCUSTOMHEADER2)
videoContent.HttpHeaders = headers
videoContent.HttpSendClientCertificates = true
videoContent.HttpCertificatesFile = "common:/certs/ca-bundle.crt"
m.VideoPlayer.EnableCookies()
m.VideoPlayer.SetCertificatesFile("common:/certs/ca-bundle.crt")
m.VideoPlayer.InitClientCertificates()
end if
m.VideoPlayer.content = videoContent
m.VideoPlayer.control = "play"
注: PlayReady を使用する場合は、drmParams.licenseServerURL を入力しないでください。DRM エラー (-6) で再生に失敗するためです。