2017-04-04 45 views
0

我正在使用Azure媒體播放器在必須僅用於移動設備的網絡應用程序中播放O365視頻。它適用於WP和Android,但播放器卡在iOS上。iOS設備上的Azure媒體播放器

這是我的代碼

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上運行。

回調函數中的記錄器沒有告訴我一些有用的,我也試圖改變技術順序。

是否有控制檯來管理視頻編碼,以避免AES算法和解密令牌?因爲this doc解釋說iOS與HTML5技術一起工作不會有令牌請求。我該如何解決?謝謝

回答

0

我發現了一種解決方法來在iOS設備上重現視頻。 代替使用REST API,我在頁面中嵌入了一個iframe元素並嵌入了視頻。 所示(使用MVC剃刀):

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> 

我得到的Office365視頻的視頻頁面「嵌入」菜單的彈出驗證碼。

如果有人知道另一個(和更好的)方法,請讓我知道。謝謝