2017-02-18 1 views
1

Ich habe diese Bibliothek in meinem UWP-Projekt hinzugefügt und versucht, eine einfache Mediendatei zu starten und Fehler von ffmpeginterop.ffmpeginteropmss nicht registriert, folgt ist mein Code.ffmpeginterop.uwp-Bibliothek gibt Fehler von nicht registriert

P.S: Ich habe bereits eine using-Anweisung für ffmpeginterop an der Spitze, so dass kein Compiler-Zeit Fehler auftritt.

BEARBEITEN Problem trat nur auf meinem Rechner auf, löste es vorübergehend durch Ausführen der App im x64-Modus und im Freigabemodus. Warum das Problem im Debug-Modus aufgetreten ist, ist noch unbekannt.

Antwort

1

Eine Möglichkeit ist ... Sie haben vergessen, den Decoder .dlls zu Ihrem Projekt hinzuzufügen. Wenn die DLLs hinzugefügt werden, haben die .csproj die folgenden Zeilen.

<ItemGroup> 
     <Content Include="$(SolutionDir)ffmpeg\Build\Windows10\$(PlatformTarget)\bin\avcodec-57.dll" /> 
     <Content Include="$(SolutionDir)ffmpeg\Build\Windows10\$(PlatformTarget)\bin\avdevice-57.dll" /> 
     <Content Include="$(SolutionDir)ffmpeg\Build\Windows10\$(PlatformTarget)\bin\avfilter-6.dll" /> 
     <Content Include="$(SolutionDir)ffmpeg\Build\Windows10\$(PlatformTarget)\bin\avformat-57.dll" /> 
     <Content Include="$(SolutionDir)ffmpeg\Build\Windows10\$(PlatformTarget)\bin\avutil-55.dll" /> 
     <Content Include="$(SolutionDir)ffmpeg\Build\Windows10\$(PlatformTarget)\bin\swresample-2.dll" /> 
     <Content Include="$(SolutionDir)ffmpeg\Build\Windows10\$(PlatformTarget)\bin\swscale-4.dll" /> 

Hinweis - Ist-Pfad ist für die Umwelt Ihrer Entwickler ab.

Sie können das Beispielprojekt überprüfen, das im FFmpegInterop-Projekt enthalten war. Das Beispielprojekt .csproject hat denselben Abschnitt.

https://github.com/Microsoft/FFmpegInterop/tree/master/Samples/SamplesWin10/MediaPlayerCS

+0

Wie kann ich die csproj-Datei überprüfen? Ich meine, ist das nicht eine Projektdatei? Wie kann ich es in Textform öffnen, wie Sie es in Ihrem Beitrag gezeigt haben, um zu bestätigen, ob es diese DLL-Referenzen hat? Wenn Sie fragen, ob ich DLL-Dateien in meinem Projektordner habe, dann NEIN, ich habe sie nicht bcz Ich habe die Bibliothek von Nugget heruntergeladen und es hatte keine Abhängigkeiten. – touseef

+0

Es war mein missverstanden. Ich dachte, dass Sie das FFmpegInterop-Gebäude von der Quelle verwenden. Wenn Sie das NuGet-Paket verwenden, müssen Sie die Datei .csproj nicht ändern, um die Decoder-DLL hinzuzufügen. Danach habe ich versucht, Ihr Problem neu zu erstellen. Ich habe ein einfaches UWP-Projekt erstellt und FFmpegInterop.UWP.1.0.3 hinzugefügt. Aber es funktioniert gut ohne Fehler. Entschuldigung, aber ich habe keine Ahnung davon. – pnp0a03

1

ich Ihren Code auf meiner Seite getestet. Ich habe eine leere uwp-App erstellt und installiere das FFmpegInterop.UWP 1.0.3 nugget-Paket. Verwenden Sie dann Ihr Code-Snippet, um eine lokale mp4-Mediendatei abzuspielen. Dies kann gut funktionieren und ich kann Ihr Problem nicht reproduzieren. Da Ihr Code-Snippet nicht das ganze ist, hier ist die komplette Demo, die erfolgreich ausgeführt werden kann, Sie können testen und versuchen herauszufinden, was falsch ist.

XAML-Code

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <MediaElement x:Name="mediaElement" Height="400" Width="400">    
    </MediaElement> 
    <Button x:Name="btnplay" Click="btnplay_Click" Content="play"></Button> 
</StackPanel> 

-Code hinter

private async void btnplay_Click(object sender, RoutedEventArgs e) 
{ 
    FileOpenPicker openPicker = new FileOpenPicker(); 
    openPicker.ViewMode = PickerViewMode.Thumbnail; 
    openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; 
    openPicker.FileTypeFilter.Add(".mp3"); 
    openPicker.FileTypeFilter.Add(".mp4"); 
    openPicker.FileTypeFilter.Add(".mkv"); 
    StorageFile file = await openPicker.PickSingleFileAsync(); 
    using (IRandomAccessStream readStream = await file.OpenAsync(FileAccessMode.Read)) 
    { 
     try 
     { 
      // Instantiate FFmpegInteropMSS using the opened local file stream 
      var FFmpegMSS = FFmpegInteropMSS.CreateFFmpegInteropMSSFromStream(readStream, false, false); 
      MediaStreamSource mss = FFmpegMSS.GetMediaStreamSource(); 
      if (mss != null) 
      { 
       // Pass MediaStreamSource to Media Element 
       mediaElement.SetMediaStreamSource(mss); 
       // Close control panel after file open 
       //Splitter.IsPaneOpen = false; 
      } 
      else 
      { 
       System.Diagnostics.Debug.WriteLine("Cannot open media"); 
      } 
     } 
     catch (Exception ex) 
     { 
      System.Diagnostics.Debug.WriteLine((ex.Message)); 
     } 
    } 
} 

Getestet habe ich auf dem lokalen Rechner Fenster 10 Build 14393. Weitere Informationen erhalten Sie this article verweisen. Und here ist ein ähnliches Problem mit Ihnen, das Sie versuchen können, zu verweisen.

+0

Ich habe auch Build 14393 und ich kopiere pasted ur XAML und C# und immer noch genau den gleichen Fehler wie vorher :(Es macht einfach keinen Sinn, welchen Modus debuggen Sie? X84 oder x64 in Visual Studio für dieses Projekt? – touseef

+0

konvertiert den Build zu x63 in Visual Studio und jetzt läuft es eine mp4-Datei, aber es zeigt das Video für 2, 3 Sekunden und dann Mediensuchleiste geht direkt an das Ende des Videos, und wenn ich Play-Taste erneut drücken gibt es Decodierung fehlgeschlagen Fehler geschrieben über Media Player – touseef

+0

@touseef Ich kann nicht reproduzieren das einzige Spiel 2-3 Sekunden Problem, bitte überprüfen Sie, ob etwas falsch mit Ihrer mp4-Datei selbst. Doppelte Wiedergabe kann Fehler führen, da die Datei bereits zum Lesen geöffnet ist. –

Verwandte Themen