我在一个必须仅在移动设备中使用的Web应用程序中使用Azure Media Player传输O365视频 . 它适用于WP和Android,但播放器停留在iOS上 .
这是我的代码
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + bearer);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.GetAsync($"{url}/GetPlaybackUrl('1')");
var content = await response.Content.ReadAsStringAsync();
var firstVal = JsonConvert.DeserializeObject<VideoToken>(content);
response = await client.GetAsync($"{url}/GetStreamingKeyAccessToken");
content = await response.Content.ReadAsStringAsync();
var secondVal = JsonConvert.DeserializeObject<VideoToken>(content);
客户端
<video id="newsVideoAMP" class="azuremediaplayer amp-default-skin amp-big-play-centered" tabindex="0"></video>
var initVideoPlayer = function (playbackUrl, streamingKeyAccessToken) {
try {
var myOptions = {
"nativeControlsForTouch": false,
controls: true,
autoplay: false,
techOrder: ["azureHtml5JS", "flashSS", "html5FairPlayHLS", "silverlightSS", "html5"],
logo: { enabled: false }
}
newsVideoPlayer = amp("newsVideoAMP", myOptions,
function () {
this.addEventListener(amp.eventName.error, function () {
window.alert('error');
console.log('Error: amp init');
var errorDetails = newsVideoPlayer.error();
window.alert(errorDetails);
var code = errorDetails.code;
var message = errorDetails.message;
$("#log").append("<li><span>code: " + code + " - detail: " + message + "</span></li>')");
});
});
newsVideoPlayer.src([
{
"src": playbackUrl,
"type": "application/vnd.ms-sstr+xml",
"protectionInfo": [
{
"type": "AES",
"authenticationToken": streamingKeyAccessToken
}
]
}]);
}
catch (err) {
console.log(err);
}
}
我认为这个问题与视频编码有关 . 所以我尝试使用 GetPlaybackUrl('0')
(并避免下一个令牌请求),但播放器停止在WP和Android上工作,但仍无法在iOS上运行 .
回调函数中的 Logger 并没有告诉我一些有用的东西,我也试图改变技术顺序 .
是否有管理视频编码的控制台以避免AES算法和解密令牌?因为this doc解释说iOS适用于HTML5技术将不会有令牌请求 . 我怎么解决?谢谢
1 回答
我找到了一种在iOS设备上重现视频的解决方法 . 我没有使用REST API,而是在我的页面中放入了iframe元素,并嵌入了视频 . 像这样(使用MVC Razor):
我从Office365 Video视频页面的“嵌入”菜单弹出窗口中获取此代码 .
如果有人知道另一种(更好的)方法,请告诉我 . 谢谢