Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS设备上的Azure媒体播放器_Ios_Azure_Office365_Azure Media Services - Fatal编程技术网

iOS设备上的Azure媒体播放器

iOS设备上的Azure媒体播放器,ios,azure,office365,azure-media-services,Ios,Azure,Office365,Azure Media Services,我正在使用Azure Media Player在一个web应用程序中传输O365视频,该应用程序只能在移动设备中使用。它可以与WP和Android一起使用,但播放器仍停留在iOS上 这是我的密码 client.DefaultRequestHeaders.Add("Authorization", "Bearer " + bearer); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeade

我正在使用Azure Media Player在一个web应用程序中传输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);
client.DefaultRequestHeaders.Add(“授权”、“承载人”+承载人);
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
var response=wait client.GetAsync($“{url}/GetPlaybackUrl('1')”;
var content=await response.content.ReadAsStringAsync();
var firstVal=JsonConvert.DeserializeObject(内容);
response=wait client.GetAsync($“{url}/GetStreamingKeyAccessToken”);
content=wait response.content.ReadAsStringAsync();
var secondVal=JsonConvert.DeserializeObject(内容);
客户端

<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);
    }
}

var initVideoPlayer=函数(playbackUrl、streamingKeyAccessToken){
试一试{
变量myOptions={
“nativeControlsForTouch”:错误,
控制:对,
自动播放:错误,
techOrder:[“azureHtml5JS”、“flashSS”、“html5FairPlayHLS”、“silverlightSS”、“html5”],
徽标:{已启用:错误}
}
newsVideoPlayer=amp(“newsVideoAMP”,myOptions,
函数(){
this.addEventListener(amp.eventName.error,函数(){
window.alert('error');
log('Error:amp init');
var errorDetails=newsVideoPlayer.error();
窗口警报(错误详细信息);
var代码=errorDetails.code;
var message=errorDetails.message;
$(“#日志”)。追加(
  • 代码:“+code+”-详细信息:“+message+”
  • ”); }); }); newsVideoPlayer.src([ { “src”:playbackUrl, “类型”:“application/vnd.ms sstr+xml”, “保护信息”:[ { “类型”:“AES”, “authenticationToken”:streamingKeyAccessToken } ] }]); } 捕捉(错误){ 控制台日志(err); } }
    我认为这个问题与视频编码有关。因此,我尝试使用
    GetPlaybackUrl('0')
    (并避免下一个令牌请求),但播放器停止在WP和Android上工作,仍然无法在iOS上工作

    logger in回调函数没有告诉我一些有用的信息,我还尝试更改技术顺序


    是否有一个控制台来管理视频编码,以避免AES算法和解密令牌?因为解释iOS与HTML5技术配合使用不会产生令牌请求。我怎样才能解决这个问题?谢谢

    我找到了在iOS设备上复制视频的解决方法。 我没有使用RESTAPI,而是在页面中添加了一个iframe元素,并嵌入了视频。 如下所示(使用MVC Razor):

    var url=“{YourWebsiteUrl}/portals/hub/_layouts/15/VideoEmbedHost.aspx?chId={YourChannelId}&vId={YourVideoId}&width=853&height=480&autoPlay=false&showInfo=false”;
    
    我从Office365视频页面的“嵌入”菜单弹出窗口中获取此代码


    如果其他人知道另一种(更好的)方法,请告诉我。谢谢

    我找到了在iOS设备上复制视频的解决方法。 我没有使用RESTAPI,而是在页面中添加了一个iframe元素,并嵌入了视频。 如下所示(使用MVC Razor):

    var url=“{YourWebsiteUrl}/portals/hub/_layouts/15/VideoEmbedHost.aspx?chId={YourChannelId}&vId={YourVideoId}&width=853&height=480&autoPlay=false&showInfo=false”;
    
    我从Office365视频页面的“嵌入”菜单弹出窗口中获取此代码

    如果其他人知道另一种(更好的)方法,请告诉我。谢谢

    var url = "{YourWebsiteUrl}/portals/hub/_layouts/15/VideoEmbedHost.aspx?chId={YourChannelId}&vId={YourVideoId}&width=853&height=480&autoPlay=false&showInfo=false";
    
    <iframe width=853 height=480 id="videoframe" src="@url" allowfullscreen data-spresponsive style='position: absolute; top: 0; left: 0; right: 0; bottom: 0; height: 100%; max-width: 100%;'></iframe>