2017-03-07 194 views
0

我需要将视频流从MJPEG转码为MP4,AVI或MKV格式。是否可以使用ffmpeg或vlc?我正在开发UWP Win10应用程序,并没有太多的软件包。在UWP中转码视频

编辑:我的代码

 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

您确定可以使用ffmpeg,但您也应该尝试更好地编写您的问题。 –

回答

1

首先,UWP应用对视频转码自己的命名空间Windows.Media.Transcoding。有关如何转码媒体文件,请参阅this articleofficial sample提供了将媒体文件转码为MP4WMIAVI的示例,您可以参考该文件。其次,对于FFmpeg,它是一个免费的开放源代码多媒体框架,其中包括一组工具,可供最终用户使用,用于转码,,流媒体和播放,以及一组库开发人员用于应用程序。所以你可以使用它进行转码。幸运的是,目前有一个名为“FFmpegInterop”的uwp FFmpeg库。您可以尝试使用Nuget包FFmpegInterop.UWP 1.0.3,更多详细信息请参考Using FFmpeg in Windows Applications

对于VLC,还有一个uwp包,它是VLC.MediaElement。您可以通过参考this NuGet package访问该软件包。

+0

感谢您的快速回复!我用Windows.Media.Transcoding,但是当它创建MediaEncodingProfile,它崩溃抛出了以下异常:“请求的Windows运行时类型‘Windows.Media.MediaProperties.MediaEncodingProfile’未注册” System.TypeloadException {:“Windows.Media。 MediaProperties.MediaEncodingProfile“}。任何想法?,我搜索,我没有任何东西。 – cahernanz

+0

@cahernanz请提供您的代码片段。并请确保您已导入相关名称空间。此外,接受答案并打开一个新线程会更好,因为这是一个新问题。 –

+0

此外,我编辑的代码,它创建的权重“x”MB的未压缩文件,但我不能播放它。我需要通过ffmpeg.exe来正确播放它。任何想法解决它?提前致谢。 – cahernanz