2017-03-07 15 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 article을 참조하십시오. official sample은 참조 할 수있는 미디어 파일을 MP4, WMIAVI으로 트랜스 코딩하는 예제를 제공합니다.

두 번째로, 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을 만들면 다음 예외가 발생하여 충돌합니다. System.TypeloadException { "요청한 Windows 런타임 유형 'Windows.Media.MediaProperties.MediaEncodingProfile'이 (가) 등록되지 않았습니다.": "Windows.Media. MediaProperties.MediaEncodingProfile "}. 어떤 아이디어?, 나는 수색했다. 그리고 나는 아무것도 넣지 않았다. – cahernanz

+0

@cahernanz 코드 스 니펫을 제공해주세요. 상대 이름 공간을 가져 왔는지 확인하십시오. 또한 새로운 문제이기 때문에 대답을 수락하고 새 스레드를 열면 훨씬 더 좋아질 것입니다. –

+0

또한, 내가 편집 한 코드는 "x"MB를 가중시키는 비 압축 파일을 만들지 만 그 파일은 재생할 수 없습니다. ffmpeg.exe를 제대로 재생하려면 "전달"해야합니다. 그것을 해결하기위한 아이디어?. 미리 감사드립니다. – cahernanz