PlayReady-direktuppspelning offline för Windows 10

media services-logotyp


Varning

Uppdatera rest-API:et och SDK:erna för Azure Media Services till v3 senast den 29 februari 2024. Version 3 av REST-API:t och klient-SDK:erna för Azure Media Services för .NET och Java har fler funktioner än version 2. Vi fasar ut version 2 av REST-API:t och klient-SDK:erna för Azure Media Services för .NET och Java.

Åtgärd krävs: För att minimera störningar i dina arbetsbelastningar läser du migreringsguiden för att överföra koden från version 2 API och SDK:er till version 3 API och SDK före den 29 februari 2024. Efter den 29 februari 2024 accepterar Azure Media Services inte längre trafik på rest-API:et version 2, ARM-kontohanterings-API:et version 2015-10-01 eller från version 2 .NET-klient-SDK:er. Detta omfattar alla klient-SDK:er med öppen källkod från tredje part som kan anropa VERSION 2-API:et. Lär dig mer om den senaste versionen, med början i Översikt över Media Services v3.

Azure Media Services stöder nedladdning/uppspelning offline med DRM-skydd. Den här artikeln beskriver offlinestöd för Azure Media Services för Windows 10/PlayReady-klienter. Du kan läsa om offlinelägesstöd för iOS/FairPlay- och Android/Widevine-enheter i följande artiklar:

Översikt

Det här avsnittet ger viss bakgrund vid uppspelning av offlineläge, särskilt varför:

  • I vissa länder/regioner är internettillgängligheten och/eller bandbredden fortfarande begränsad. Användarna kan välja att ladda ned först för att kunna titta på innehåll med tillräckligt hög upplösning för att få en tillfredsställande visningsupplevelse. I det här fallet är problemet oftast inte nätverkstillgänglighet, snarare är det begränsad nätverksbandbredd. OTT/OVP-leverantörer ber om stöd för offlineläge.
  • Som avslöjas på Netflix 2016 Q3 aktieägarkonferens är nedladdning av innehåll en "oft-begärd funktion", och "vi är öppna för det" sa Reed Hastings, Netflix VD.
  • Vissa innehållsleverantörer kan neka DRM-licensleverans utanför ett lands/en regions gräns. Om en användare behöver resa utomlands och fortfarande vill titta på innehåll behövs nedladdning offline.

Utmaningen vi står inför när vi implementerar offlineläge är följande:

  • MP4 stöds av många spelare, kodarverktyg, men det finns ingen bindning mellan MP4-container och DRM;
  • På lång sikt är CFF med CENC rätt väg att gå. Men i dag finns inte ekosystemet för verktyg/spelares support ännu. Vi behöver en lösning i dag.

Tanken är att filformatet Smooth Streaming (PIFF) med H264/AAC har en bindning med PlayReady (AES-128 CTR). Enskild smooth streaming .ismv-fil (förutsatt att ljud är muxed i video) är i sig en fMP4 och kan användas för uppspelning. Om ett smidigt strömmande innehåll går igenom PlayReady-kryptering blir varje .ismv-fil en PlayReady-skyddad fragmenterad MP4. Vi kan välja en .ismv-fil med önskad bithastighet och byta namn på den som .mp4 för nedladdning.

Det finns två alternativ för att vara värd för PlayReady-skyddade MP4 för progressiv nedladdning:

  • Man kan placera denna MP4 i samma container/mediatjänsttillgång och använda Azure Media Services-slutpunkten för direktuppspelning för progressiv nedladdning.
  • Man kan använda SAS-positioneraren för progressiv nedladdning direkt från Azure Storage och kringgå Azure Media Services.

Du kan använda två typer av PlayReady-licensleverans:

  • PlayReady-licensleveranstjänst i Azure Media Services;
  • PlayReady-licensservrar som finns var som helst.

Nedan visas två uppsättningar testtillgångar, den första som använder PlayReady-licensleverans i AMS medan den andra använder min PlayReady-licensserver som finns på en virtuell Azure-dator:

Tillgång nr 1:

Tillgång nr 2:

För uppspelningstestning använde jag ett universellt Windows-program på Windows 10. I Windows 10 Universal-exempel finns det ett grundläggande spelarexempel som heter Adaptive Streaming Sample. Allt vi behöver göra är att lägga till koden så att vi kan välja nedladdad video och använda den som källa, i stället för anpassningsbar strömmande källa. Ändringarna finns i händelsehanteraren för knappklick:

private async void LoadUri_Click(object sender, RoutedEventArgs e)
{
    //Uri uri;
    //if (!Uri.TryCreate(UriBox.Text, UriKind.Absolute, out uri))
    //{
    // Log("Malformed Uri in Load text box.");
    // return;
    //}
    //LoadSourceFromUriTask = LoadSourceFromUriAsync(uri);
    //await LoadSourceFromUriTask;

    //willzhan change start
    // Create and open the file picker
    FileOpenPicker openPicker = new FileOpenPicker();
    openPicker.ViewMode = PickerViewMode.Thumbnail;
    openPicker.SuggestedStartLocation = PickerLocationId.ComputerFolder;
    openPicker.FileTypeFilter.Add(".mp4");
    openPicker.FileTypeFilter.Add(".ismv");
    //openPicker.FileTypeFilter.Add(".mkv");
    //openPicker.FileTypeFilter.Add(".avi");

    StorageFile file = await openPicker.PickSingleFileAsync();

    if (file != null)
    {
       //rootPage.NotifyUser("Picked video: " + file.Name, NotifyType.StatusMessage);
       this.mediaPlayerElement.MediaPlayer.Source = MediaSource.CreateFromStorageFile(file);
       this.mediaPlayerElement.MediaPlayer.Play();
       UriBox.Text = file.Path;
    }
    else
    {
       // rootPage.NotifyUser("Operation cancelled.", NotifyType.ErrorMessage);
    }

    // On small screens, hide the description text to make room for the video.
    DescriptionText.Visibility = (ActualHeight < 500) ? Visibility.Collapsed : Visibility.Visible;
}

Uppspelning i offlineläge av PlayReady-skyddad fMP4

Eftersom videon är under PlayReady-skydd kan skärmbilden inte innehålla videon.

Sammanfattningsvis har vi uppnått offlineläge i Azure Media Services:

  • Innehållstranskodning och PlayReady-kryptering kan göras i Azure Media Services eller andra verktyg.
  • Innehåll kan finnas i Azure Media Services eller Azure Storage för progressiv nedladdning.
  • PlayReady-licensleverans kan komma från Azure Media Services eller någon annanstans.
  • Det förberedda innehållet för smidig direktuppspelning kan fortfarande användas för onlineuppspelning via DASH eller smidigt med PlayReady som DRM.

Ytterligare information

  • Widevine är en tjänst som tillhandahålls av Google Inc. och som omfattas av användarvillkoren och sekretesspolicyn för Google, Inc.