配置编码器预览(SDK) [英] Dispose Encoder Preview (SDK)

查看:67
本文介绍了配置编码器预览(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆