配置编码器预览(SDK) [英] Dispose Encoder Preview (SDK)
问题描述
您好:
我注意到当我使用SDK中的预览窗口选项时,每次启动和停止编码过程时我的应用程序的RAM都会增加(好极了!)如果我仅从音频设备进行编码或完全禁用视频
预览选项,则不会发生这种情况。我已经尝试清除livejob,source等无济于事。通常情况下,每次将预览窗口附加到livejob时,我都找不到清除正在使用的内存的方法。
是有任何代码(C#/ VB)演示了"处理"的正确方法。一个实时预览窗口,以便它正在使用的内存(相当可观!)返回到空闲RAM。
Jeremy
谢谢
J
并回收
请考虑以下事项:
使用
系统;
使用
System.Runtime.InteropServices;
使用
System.Threading;
使用
Microsoft.Expression.Encoder;
使用
Microsoft.Expression.Encoder.Live;
namespace
ConsoleApplication1
{
class
程序
{
静态
PreviewForm
previewForm = new
PreviewForm ();
静态
void
Main( string []
args)
{
使用
( LiveJob
job = 新
LiveJob ())
{
ActivateLivePreview(job);
FileArchivePublishFormat
archive = new
FileArchivePublishFormat ( @" C:\ Users\Me\Documents\Output.wmv" );
LiveFileSource
testContent = job.AddFileSource( @" C:\ Temp \ Pescadero
Beach.mpg" );
job.ActivateSource(testContent);
job.PublishFormats.Add(archive);
尝试
{
job.StartEncoding();
线程 。睡眠( 新
TimeSpan (0,
0,15)) ;
job.StopEncoding();
}
catch
( EncodeErrorException )
{
返回 ;
}
previewForm.Dispose();
}
}
///
< summary>
///
将作业对象与通用预览表单对象关联
///
< / summary>
///
< param name =" job">< / param>
public
静态
void
ActivateLivePreview( LiveJob
工作)
{
previewForm.Text =
"论坛响应" ;
job.OutputPreviewWindow =
new
PreviewWindow ( 新
HandleRef (previewForm,
previewForm.Handle));
job.OutputPreviewWindow.SetSize(previewForm.Size);
//挂钩进入SizeChanged事件以调整预览
窗口
previewForm.SizeChanged + =
委托 ( 对象
发件人, EventArgs
args)
{
job.OutputPreviewWindow.SetSize(previewForm.Size);
};
previewForm.Show();
previewForm.BringToFront();
}
}
}
注意* PreviewForm 是一个简单的Windows窗体对象,用于托管实时预览对象。
添加对项目的引用:Microsoft .Expression.Encoder,Microsoft.Expression.Encoder.Api2,Microsoft.Expression.Encoder.LiveUI
Hi There:
I've noticed that the when I use the Preview Window option from the SDK that each time I start and stop an encoding process my application's RAM increases (well skyrockets!). This doesn't happen if I encode from an audio device only or I disable the video preview option completely. I've tried clearing the livejob, sources etc to no avail.Bascially, I cannot find a way to clear the memory being used each time the preview window is attached to a livejob.
Is there any code (C#/VB) that demonstrates the proper way to "dispose" of a live preview window so that the memory it is using (which is considerable!) is returned to free RAM.
Jeremy
Thanks
J
and reclaim the
Consider the following:
using
System;
using
System.Runtime.InteropServices;
using
System.Threading;
using
Microsoft.Expression.Encoder;
using
Microsoft.Expression.Encoder.Live;
namespace
ConsoleApplication1
{
class Program
{
static PreviewForm previewForm = new PreviewForm();
static void Main(string[] args)
{
using (LiveJob job = new LiveJob())
{
ActivateLivePreview(job);
FileArchivePublishFormat archive = new FileArchivePublishFormat(@"C:\Users\Me\Documents\Output.wmv");
LiveFileSource testContent = job.AddFileSource(@"C:\Temp\Pescadero Beach.mpg");
job.ActivateSource(testContent);
job.PublishFormats.Add(archive);
try
{
job.StartEncoding();
Thread.Sleep(new TimeSpan(0, 0, 15));
job.StopEncoding();
}
catch (EncodeErrorException)
{
return;
}
previewForm.Dispose();
}
}
/// <summary>
/// Associates the job object with the generic preview form object
/// </summary>
/// <param name="job"></param>
public static void ActivateLivePreview(LiveJob job)
{
previewForm.Text =
"Forum Response";
job.OutputPreviewWindow =
new PreviewWindow(new HandleRef(previewForm, previewForm.Handle));
job.OutputPreviewWindow.SetSize(previewForm.Size);
// Hook into SizeChanged events to resize preview window
previewForm.SizeChanged +=
delegate(object sender, EventArgs args)
{
job.OutputPreviewWindow.SetSize(previewForm.Size);
};
previewForm.Show();
previewForm.BringToFront();
}
}
}
Note* PreviewForm is a simple Windows form object used to host the Live preview object.
Add there references to your project: Microsoft.Expression.Encoder, Microsoft.Expression.Encoder.Api2, Microsoft.Expression.Encoder.LiveUI
这篇关于配置编码器预览(SDK)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!