簡體   English   中英

iOS設備上的Azure Media Player

[英]Azure Media Player on iOS devices

我正在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上仍然無法運行。

回調函數中的記錄器沒有告訴我一些有用的信息,我還嘗試了更改技術順序。

是否有一個用於管理視頻編碼的控制台,以避免AES算法和解密令牌? 因為此文檔說明iOS與HTML5技術一起使用,因此不會請求令牌。 我該如何解決? 謝謝

我找到了一種解決方法,可以在iOS設備上重現視頻。 我沒有使用REST API,而是在頁面中放置了嵌入視頻的iframe元素。 像這樣(使用MVC Razor):

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視頻的視頻頁面中的“嵌入”菜單的彈出窗口中獲取此代碼。

如果其他人知道另一種(更好的方法),請告訴我。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM