cahernanz
cahernanz

Reputation: 11

Transcoding video in UWP

I need to transcode video streaming from MJPEG to MP4, AVI or MKV format. Is it possible to do with ffmpeg or vlc? I am developing UWP Win10 app and there aren't many packages for this.

Edit: my 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();  

Upvotes: 0

Views: 1985

Answers (1)

Sunteen Wu
Sunteen Wu

Reputation: 10627

Firstly, uwp app has its own namespace Windows.Media.Transcoding for transcoding video. For how to transcode media files please reference this article. And the official sample provide examples for transcoding media files to MP4,WMI and AVI that you can reference.

Secondly, For FFmpeg, it is a free, open-source multimedia framework that includes a set of tools which can be used by end users for transcoding, streaming, and playing, as well as a set of libraries for developers to use in applications. So you could use it for transcoding. Fortunately, currently there is a FFmpeg library for uwp called "FFmpegInterop". You can try to use it by the Nuget package FFmpegInterop.UWP 1.0.3, and more details please reference Using FFmpeg in Windows Applications.

For VLC, there is also a package for uwp, it is VLC.MediaElement. You could access this package by reference this NuGet package.

Upvotes: 3

Related Questions