2015-03-04 9 views
5

Mam problem podczas próby łączenia wielu filmów razem. Za każdym razem, gdy łączę 2 lub więcej filmów, dźwięk odtwarzany jest z podwójną szybkością, podczas gdy wideo odtwarza się normalnie.Windows Phone 8.1 MediaComposition - Audio za szybko po zszyciu wideo

Poniżej znajduje się kod. Czy czegoś brakuje?

Otrzymuję takie same wyniki podczas testowania, ale klonowania pojedynczego filmu lub wyboru wielu filmów.

Mam w porównaniu do przykładu kodu here (Nie jestem przycinanie).

public static IAsyncOperation<IStorageFile> ConcatenateVideoRT([ReadOnlyArray]IStorageFile[] videoFiles, IStorageFolder outputFolder, string outputfileName) 
    { 
     return Task.Run<IStorageFile>(async() => 
     { 
      IStorageFile _OutputFile = await outputFolder.CreateFileAsync(outputfileName, CreationCollisionOption.GenerateUniqueName); 

      MediaComposition _MediaComposition = new MediaComposition(); 
      foreach (IStorageFile _VideoFile in videoFiles) 
      { 
       MediaClip _MediaClip = await MediaClip.CreateFromFileAsync(_VideoFile); 
       _MediaComposition.Clips.Add(_MediaClip); 
       _MediaComposition.Clips.Add(_MediaClip.Clone()); 
      } 

      TranscodeFailureReason _TranscodeFailureReason = await _MediaComposition.RenderToFileAsync(_OutputFile); 
      if (_TranscodeFailureReason != TranscodeFailureReason.None) 
      { 
       throw new Exception("Video Concatenation Failed: " + _TranscodeFailureReason.ToString()); 
      } 

      return _OutputFile; 
     }).AsAsyncOperation(); 
    } 

Odpowiedz

3

Wygląda na to, że są dwa problemy. Mam tej pracy, dodając następujący wiersz:

MediaEncodingProfile _MediaEncodingProfile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Vga); 

i zmieniając następujący wiersz:

TranscodeFailureReason _TranscodeFailureReason = await _MediaComposition.RenderToFileAsync(_OutputFile); 

Do:

TranscodeFailureReason _TranscodeFailureReason = await _MediaComposition.RenderToFileAsync(_OutputFile, MediaTrimmingPreference.Fast, _MediaEncodingProfile); 

problem wydaje się być to, że nie robi RenderToFileAsync Wygląda na to, że działa poprawnie podczas używania VideoEncodingQuality.HD720p lub VideoEncodingQuality.HD1080p, oba te ustawienia odtwarzają szybki problem z dźwiękiem. Ponadto, użycie VideoEncodingQuality.Auto wydaje się powodować niepowodzenie kodowania (chociaż myślę, że ma używać domyślnych ustawień z kamery).

Dodatkowo napisałem problem na forach społeczności partnerów Microsoft, a ich reakcja polegała na tym, że kodowanie może się nie udać na określonych urządzeniach, np. w ich testach wideo nagrane na Lumia 638 nie mogło być zakodowane/połączone nawet na innych urządzeniach, ale wideo z HTC 8x, Lumia 920 i Lumia 930 mogło być zakodowane na wszystkich urządzeniach, nawet 638.

Zasugerowali, że to było problem z urządzeniem (oprogramowanie układowe), a nie problem z interfejsem Windows.Media.Editing.