2014-09-03 9 views
7

Kennt jemand eine Möglichkeit, .mp4-Video von einem sicheren azure-Blob (über https) in eine WPF-Anwendung zu streamen.Video von einem sicheren azure Blob zu WPF streamen

ich die uri bin Erzeugung wie folgt ...

public Uri GetSecureUriForBlob(CloudBlobContainer container, string blobName) 
{ 
    var blockBlob = container.GetBlockBlobReference(blobName); 
    var beforeOffset = new DateTimeOffset(DateTime.UtcNow.AddMinutes(-5)); 
    var afterOffset = new DateTimeOffset(DateTime.UtcNow.AddHours(1)); 

    var builder = new UriBuilder(blockBlob.Uri) 
    { 
     Query = blockBlob.GetSharedAccessSignature(
      new SharedAccessBlobPolicy 
      { 
       Permissions = SharedAccessBlobPermissions.Read, 
       SharedAccessStartTime = beforeOffset, 
       SharedAccessExpiryTime = afterOffset 
      }).TrimStart('?') 
    }; 

    return builder.Uri; 
} 

ich überprüft haben, dass die Service-Version mindestens „2013.08.15“ gesetzt ist und dass der Blob-Element hat die richtige Inhaltstyp festgelegt.

Ich weiß, dass das Format der URI korrekt ist, weil ich es in einem Browser einfügen kann, und es auch in einer Windows 8-Store-Anwendung verwendet, und das Video Streams korrekt.

Wenn ich jedoch das gleiche uri wie die Quelle für ein WPF MediaElement zuweisen, bekomme ich eine NullReferenceException tief in den inneren Funktionen von MediaPlayer.Open().

+0

könnten Sie eine nicht ablaufende URL zu einem Beispielvideo bereitstellen? – pushpraj

+0

Die Testvideos sind die Standard-Referenzdateien wie http://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4, aber behoben, so dass der Header am Anfang der Datei und nicht am Ende mit http:/steht /renaun.com/blog/2010/06/qtindexswapper-2/. Wie ich schon sagte, streamen sie gut in einem Webbrowser und Windows 8.1 Store-Anwendung, nur nicht in WPF. Sie strömen auch gut von einem nicht sicheren Blob-Container zu WPF, aber die Art des Inhalts (mögliche Polizei Beweise) erfordert einen sicheren Container verwendet werden. – Peregrine

Antwort

2

Es scheint einen known issue with WPF MediaElement when playing from HTTPS Endpunkte zu geben. Es gibt keine Probleme beim Abspielen von einfachem HTTP (ohne "S").

Dies ist nicht im Zusammenhang mit Microsoft Azure oder Blob verwandt. Dies ist ein reines WPF-Problem, das scheint jedoch nicht bald behoben zu werden, wenn es überhaupt behoben wird.

Für HTTPS-Streams können Sie entweder Silverlight oder Windows 8 Modern-Anwendungen verwenden - beide unterstützen HTTPS-Streams ohne Probleme.

Sie könnten wahrscheinlich ein Drittanbieter-Steuerelement für WPF finden, das das Abspielen von Medien über HTTPS unterstützt.

UPDATE

die VideoLan.NET WPF Controls Verwendung von I HTTPS Medien spielen machen konnte. Bisher die einzigen Steuerelemente für WPF, die HTTPS-Medien erfolgreich wiedergeben. Dies erfordert eine gültige Installation von VideoLAN VLC Player für Windows. Ich habe the portable one (ZIP package) verwendet und es funktioniert perfekt. Die Dokumentation für das VideoLan.NET ist etwas unordentlich, aber das Ergebnis ist, dass Sie HTTPS-Streams/progressive Downloads in WPF sicher wiedergeben können.