2016-08-03 25 views
2

Wiedergabe abspielen Ich möchte Video in Media-Element von Scherdatei im Netzwerk spielen. Wie kann es gehen?Wie Video in Media-Element von freigegebenen Ordner in Netzwerk

Zum Beispiel ist meine lokale IP 192.168.1.51 und der Name des freigegebenen Ordners ist SharedFileVideo. Ich kann auf diese Datei von Windows Explorer mit \ 192.168.1.51 \ SharedFileVideo \ video.mp4 zugreifen, aber wenn ich \ 192.168.1.51 \ SharedFileVideo oder file: //192.168.1.51/SharedFileVideo/video.mp4 in Uri für die Quelle der Element Medien verwenden spielt mein Video nicht ab.

Wie binden Sie Video aus Datei im Netzwerk für medial Element in uwp freigegeben.

vielen Dank

Antwort

3

Um eine Videodatei in freigegebenen Ordner im Netzwerk zu spielen, können wir die StorageFile zuerst und dann verwenden, um die SetSource Methode, um die Quelle der Datei zu setzen. Um auf Dateien im freigegebenen Ordner zugreifen zu können, müssen einige Funktionen im App-Manifest deklariert werden.
enter image description here
Die universelle Namenskonvention (UNC) ist das in Microsoft Windows häufig verwendete Namenssystem für den Zugriff auf freigegebene Netzwerkordner. Weitere Informationen finden Sie unter File access permissions.

So können wir Package.appxmanifest gesetzt wie folgt vor:

<Applications> 
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="UWPApp.App"> 
    <uap:VisualElements DisplayName="UWPApp" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="UWPApp" BackgroundColor="transparent"> 
     <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"> 
     </uap:DefaultTile> 
     <uap:SplashScreen Image="Assets\SplashScreen.png" /> 
    </uap:VisualElements> 
    <Extensions> 
     <uap:Extension Category="windows.fileTypeAssociation"> 
     <uap:FileTypeAssociation Name="myvideotest"> 
      <uap:DisplayName>MyVideoTest</uap:DisplayName> 
      <uap:SupportedFileTypes> 
      <uap:FileType>.mp4</uap:FileType> 
      </uap:SupportedFileTypes> 
     </uap:FileTypeAssociation> 
     </uap:Extension> 
    </Extensions> 
    </Application> 
</Applications> 
<Capabilities> 
    <Capability Name="internetClient" /> 
    <Capability Name="privateNetworkClientServer" /> 
    <Capability Name="internetClientServer" /> 
    <uap:Capability Name="enterpriseAuthentication" /> 
</Capabilities> 

Und dann in Code-behind, abrufen zuerst auf den freigegebenen Ordner.

StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(@"\\192.168.1.51\SharedFileVideo"); 

Danach können wir die Video-Datei und legen Sie es als MediaElement ‚s abrufen Quelle wie:

StorageFile file = await folder.GetFileAsync("video.mp4"); 
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); 
MediaElement.SetSource(stream, file.ContentType); 
+0

hallo vielen Dank nur eine Sache. Ich teste und weiß, sollte \ Share-Ordner für gute Arbeit einfügen. – user2704932

2

Haben Sie versucht, Ihre Quelle Einstellung:

\\ 192.168.1.51 \ SharedFileVideo \ video.mp4

zurück Schrägstriche (\) nicht Schrägstriche (/) und stellen Sie sicher, mit einem doppelten Schrägstrich

012 zu starten

ich das mit meinem Raspberry Pi und es wird sie feine

\\ Raspberry Pi \ Filme \ OS1 \ Filme \ video.mp4

vergessen Sie nicht, diese youll in XAML, dies zu tun müssen:

<MediaElement Source="\\192.168.1.51\SharedFileVideo\video.mp4"/> 

oder zur Bindung:

<MediaElement Source="{Binding Path=URI}"/> 

und in Code:

URI = @"\\192.168.1.51\SharedFileVideo\video.mp4"; 

, wie ich sagte, dies für mich gut funktioniert, ich brauche nicht synchrone Programmierung und meine Maschinen und Router scheinen gut genug, um nicht Verzögerung oder Pufferung zu verursachen gibt

eine andere Sache zu erinnern, wenn die Bindung der Quelle in einen String dann manchmal muss das Medienelement erzählen, um zu spielen. Wenn ja, vergessen Sie nicht, ihm zu sagen, dass Sie das Video mit dem geladenen Behavior-Tag manuell laden.

so XAML:

<MediaElement Name="VideoPlayer" Source="{Binding Path=URI}" LoadedBehaviour="Manual"/> 

und in Code hinzu:

URI = @"\\192.168.1.51\SharedFileVideo\video.mp4"; 
VideoPlayer.Play(); 
+0

Wenn Sie MVVM verwenden, lassen Sie es mich wissen, und ich zeige Ihnen, wie ich dies erreichen kann, ohne das Medienelement an Ihre Viewmodels zu senden. Wenn Sie diesen Kommentar ignorieren, – Sam

+0

Ich habe Ihre Lösung versucht, aber es hat nicht funktioniert. Ich teste auf meinem Desktop, die freigegebene Datei befindet sich auf einem anderen Desktop im selben Netzwerk. Haben Sie auf dem Desktop getestet? Weißt du, warum das auf dem Desktop nicht funktioniert hat? @ Jays Antwort funktioniert. Aber es scheint zu komplex. – ZORRO

+0

ive versuchte dies zu Hause mit Windows 8 Laptop und Raspberry Pi und bei der Arbeit zwischen 2 Windows 7 Stück. Alles funktioniert gut. nur ich benutze nicht ip Ich benutze Maschinennamen wie \ RaspberryPI \ Films \ MeBeforeYou.av oder \\ FEDEMOWS2 \ Downloads \ Sample.mp4 – Sam