2
我的應用程序使用裝飾器將自定義HLSL着色器效果應用於mediaElement。如何使用應用程序本身實時錄製和保存修改後的視頻?從mediaElement中錄製C#和WPF視頻
我的應用程序使用裝飾器將自定義HLSL着色器效果應用於mediaElement。如何使用應用程序本身實時錄製和保存修改後的視頻?從mediaElement中錄製C#和WPF視頻
我一直在使用RenderTargetBitmap對象來呈現這樣的動畫圖像序列:
首先你撥打:
myStoryboard.CurrentTimeInvalidated += new EventHandler(onCurrentTimeInvalidated);
其中myStoryboard是故事板驅動的動畫,然後你有以下方法:
void onCurrentTimeInvalidated (object sender, EventArgs e)
{
prefix = "";
if (counter < 10)
{
prefix = "000";
}
else if (counter < 100)
{
prefix = "00";
}
else if (counter < 1000)
{
prefix = "0";
}
Size size = new Size(MainCanvas.ActualWidth, MainCanvas.ActualHeight);
MainCanvas.Measure(size);
MainCanvas.Arrange(new Rect(size));
RenderTargetBitmap bmp = new RenderTargetBitmap(imgWidth, imgHeight, 96d, 96d, PixelFormats.Default);
bmp.Render(MainCanvas);
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.QualityLevel = 90;
encoder.Frames.Add(BitmapFrame.Create(bmp));
string file = basePath + prefix + counter.ToString() + "_testpic.jpg";
using (Stream stm = File.Create(file))
{
encoder.Save(stm);
}
counter++;
}
我不確定這將如何與MediaElement一起工作,但它可能值得一試。儘管您需要從MediaTimeline中驅動MediaElement,並從它的CurrentTimeInvalidated事件中調用onCurrentTimeInvalidated方法,但爲此可以在MediaElement上工作。