2016-04-11 13 views
0

VideoTransformEffectDefinition'u kullanmaya çalışıyorum. VideoTransformEffectDefinition, Error ile biter: Video kodu çözülemedi

 var clip = await MediaClip.CreateFromFileAsync(pickedFile);//creating clip from storage file 
     MediaComposition composition = new MediaComposition(); 
     composition.Clips.Add(clip); 
     VideoTransformEffectDefinition videoEffect1 = new VideoTransformEffectDefinition(); 
     videoEffect1.PaddingColor = Colors.Blue;//this line is not necessary, does not matter how videoEffect is changed 
     clip.VideoEffectDefinitions.Add(videoEffect1);//adding videoEffect 
     this.mediaElement.SetMediaStreamSource(composition.GenerateMediaStreamSource());//setting source to MediaElement 

Bu

istisna gitmiyor ama bana medya öğesi üzerinde

"Error: Video could not be decoded"

göstermektedir.

kod VideoStabilizationEffectDefinition ile iyi çalışıyor, çünkü garip:

 var clip = await MediaClip.CreateFromFileAsync(pickedFile);//creating clip from storage file 
     MediaComposition composition = new MediaComposition(); 
     composition.Clips.Add(clip); 
     VideoStabilizationEffectDefinition videoEffect = new VideoStabilizationEffectDefinition(); 
     clip.VideoEffectDefinitions.Add(videoEffect);//adding videoEffect 
     this.mediaElement.SetMediaStreamSource(composition.GenerateMediaStreamSource());//setting source to MediaElement 

Neyi yanlış yapıyorum?

cevap

1

VideoTransformEffectDefinition yalnızca MediaTranscoder ile çalışır. MediaComposition üzerinde bir etkisi yoktur. Ve MediaElement değerini MediaElement.SetMediaStreamSource(MediaComposition .GenerateMediaStreamSource()) olarak ayarladığınızda bir NullReferenceException atar.

MediaTranscoder kullanan GitHub numaralı resmi bir örnek var. Ve Scenario1'de, MediaTranscoder, private MediaTranscoder _Transcoder = new MediaTranscoder();'u oluşturur. VideoTransformEffectDefinition, MediaTranscoder, AddAudioEffect(System.String activatableClassId, System.Boolean effectRequired, IPropertySet configuration) ile ekleyebilirsiniz.

Aşağıdaki kodu Scenario1_Default.xaml.cs içinde TranscodePreset olayına ekleyebilirsiniz.

Örneğin

:

VideoTransformEffectDefinition videoEffect = new VideoTransformEffectDefinition(); 
_Transcoder.ClearEffects(); 
var activatableClassId = videoEffect.ActivatableClassId; 
_Transcoder.AddVideoEffect(activatableClassId, true, videoEffect.Properties); 
videoEffect.PaddingColor = Colors.Blue; 
videoEffect.Rotation = MediaRotation.Clockwise90Degrees; 
+0

Yani .. o gerçek zamanlı olarak dolgu rengi (örneğin) eklemek mümkün olmadığı anlamına gelir? Resmi örnek her zaman depolama dosyasına kaydetme ile .. – Alamakanambra

+0

Öyle görünüyor, gerçek zamanlı olarak oynamak için bir yöntem bulamıyorum. –

İlgili konular