2016-04-11 18 views
0

VideoTransformEffectDefinitionを使用しようとしています。VideoTransformEffectDefinitionでエラーが発生しました:ビデオをデコードできませんでした

 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 

これは、例外をスローするつもりはないが、それは私のメディア要素の

"Error: Video could not be decoded"

を示しました。

コードがVideoStabilizationEffectDefinitionでうまく機能しているので、それは奇妙です:私は間違っ

 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 

何をしているのですか?

答えて

1

VideoTransformEffectDefinitionMediaTranscoderとのみ動作します。 MediaComposition以上の効果はありません。そして、をMediaElement.SetMediaStreamSource(MediaComposition .GenerateMediaStreamSource())で設定すると、NullReferenceExceptionがスローされます。

GitHubの公式サンプルがMediaTranscoderを使用しています。シナリオ1では、MediaTranscoderprivate MediaTranscoder _Transcoder = new MediaTranscoder();で作成します。VideoTransformEffectDefinitionは、MediaTranscoderAddAudioEffect(System.String activatableClassId, System.Boolean effectRequired, IPropertySet configuration)と追加できます。

次のコードをScenario1_Default.xaml.csのTranscodePresetイベントに追加できます。例えば

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

..だから、リアルタイムで(例えば)パディング色を追加することはできないことを意味?公式のサンプルは、常に保存ファイルに保存されています.. – Alamakanambra

+0

それはそうです、私はリアルタイムで再生する方法を見つけることはありません。 –

関連する問題