2017-03-07 12 views
0

Ich muss Video-Streaming von MJPEG in MP4, AVI oder MKV-Format transcodieren. Ist es möglich, mit ffmpeg oder vlc zu tun? Ich entwickle UWP Win10 App und es gibt nicht viele Pakete dafür.Transcoding Video in UWP

Edit: mein Code

 VLCPreview.Source = "http://Admin:[email protected]:6021/cgi-bin/cmd/encoder?GET_STREAM"; 

    /cmd/encoder?GET_STREAM 

     try 
     { 


          HttpClientHandler aHandler = new HttpClientHandler(); 
          aHandler.Credentials = new NetworkCredential("Admin", "123456"); 
          aHandler.ClientCertificateOptions = ClientCertificateOption.Automatic; 

          HttpClient aClient = new HttpClient(aHandler); 
          aClient.DefaultRequestHeaders.ExpectContinue = false; 
                        //url get stream o web.Source 
          HttpResponseMessage response = await aClient.GetAsync("http://192.168.0.21:6021/cgi-bin/cmd/encoder?GET_STREAM", HttpCompletionOption.ResponseHeadersRead);//urlLinkToOnlineStream 

          Stream stream = await response.Content.ReadAsStreamAsync(); 
          IInputStream inputStream = stream.AsInputStream(); 
          ulong totalBytesRead = 0; 
          while (true) 
          { 
           // Read from the web. 
           IBuffer buffer = new Windows.Storage.Streams.Buffer(4096); 
           buffer = await inputStream.ReadAsync(buffer, buffer.Capacity, InputStreamOptions.None); 
           if (buffer.Length == 0) 
           { 
            break; 
           } 
           totalBytesRead += buffer.Length; 
           await fileStream.WriteAsync(buffer); 
           Debug.WriteLine("TotalBytesRead: {0:f}", totalBytesRead); 

           if (StopRec == true) { break;} 
      } 

      transcode(destinationFile, sampleFileVidTranscoded); 

           inputStream.Dispose(); 

          fileStream.Dispose(); 
+0

Sie können sicher ffmpeg verwenden, aber Sie sollten auch versuchen, Ihre Frage besser zu schreiben. –

Antwort

1

Erstens UWP App seinen eigenen Namensraum Windows.Media.Transcoding für Transcodieren von Videos hat. Für das Umcodieren von Mediendateien verweisen Sie bitte auf this article. Und die official sample bieten Beispiele zum Umkodieren von Mediendateien zu MP4, WMI und AVI, die Sie verweisen können.

Zweitens Für FFmpeg, es ist ein freier, Open-Source-Multimedia-Framework, das eine Reihe von Tool enthält, die von den Endnutzern für Umcodierung, Streaming und Wiedergabe verwendet werden können, sowie eine Reihe von Bibliotheken für Entwickler in Anwendungen zu verwenden. Sie könnten es also zum Transkodieren verwenden. Glücklicherweise gibt es momentan eine FFmpeg-Bibliothek für uwp namens "FFmpegInterop". Sie können versuchen, es mit dem Nuget-Paket FFmpegInterop.UWP 1.0.3 zu verwenden, und weitere Details beziehen Sie sich bitte auf Using FFmpeg in Windows Applications.

Für VLC gibt es auch ein Paket für uwp, es ist VLC.MediaElement. Sie können auf dieses Paket unter der Nummer this NuGet package zugreifen.

+0

Danke für Ihre schnelle Antwort !. Ich habe Windows.Media.Transcoding verwendet, aber beim Erstellen von MediaEncodingProfile stürzt es ab und gibt die folgende Ausnahme aus: System.TypeloadException {"Angeforderter Windows-Laufzeittyp 'Windows.Media.MediaProperties.MediaEncodingProfile' ist nicht registriert.": "Windows.Media. MediaProperties.MediaEncodingProfile "}. Irgendwelche Ideen ?, Ich suchte und ich habe nichts geboren. – cahernanz

+0

@cahernanz bitte geben Sie Ihr Code-Snippet an. Und stellen Sie sicher, dass Sie den relativen Namensraum importiert haben. Darüber hinaus akzeptiert eine Antwort und öffnen Sie einen neuen Thread wird viel besser, da dies ein neues Problem ist. –

+0

Außerdem, der Code, den ich bearbeitet habe, erschafft die unkomprimierte Datei, die "x" MBs gewichtet, aber ich kann es nicht spielen. Ich muss jedoch ffmpeg.exe übergeben, um es richtig zu spielen. Irgendwelche Ideen für die Lösung? Danke im Voraus. – cahernanz