什么是Windows或者.Net好的DVD刻录组件?
我想将DVD刻录功能添加到我的.Net应用程序(在Windows Server 2003上运行),是否有任何可用的好组件?我已经使用了Nero随附的NeroCOM sdk,但它们不再支持最新版本的Nero中的sdk。我了解到Microsoft已经为Windows XP / 2003创建了IMAPI2升级,并且CodeProject上有一个示例项目,但是我自己没有使用过,所以我不能说它的使用多么容易/可靠。
我并不担心将音频/视频刻录到DVD,因为这仅用于文件备份。
解决方案
回答
在我的上一份工作中,我的任务是找到一个跨平台,最好是使用免费的方式将特定于应用程序的文件写入cd / dvd。我很快发现在Windows上写CD并不困难,但是我却不容易写DVD,而只能在Windows上写。
最后,我围绕cdrecord编写了一个包装器。cdrecord是一个开源项目,可以使用cygwin轻松构建。我将创建一个暂存目录,在该目录中添加需要写入的文件,在该目录上称为mkisofs以制作cd iso,然后称为cdrecord刻录映像。如果我们只有严格的Windows用户,这可能不是最佳解决方案,但这是我唯一能找到Windows,Linux和OS X的解决方案。
可以签出的另一个选择是StarBurn SDK,我下载了该试用版并使用了它,效果很好,但是最后它不是免费的,因此对于我的目的而言太昂贵了。
回答
cdrecord方法是否支持DVD刻录?有没有一种简单的方法可以通过应用程序重新分发/安装cygwin?乍看之下,StarBurn看起来还不错,尽管我有点犹豫要使用未经验证的库,这些库必须处理这种复杂的事情(尤其是现在存在的媒体类型数量),并且StarBurn产品组合页面上有些许蓬松的一面。
回答
我的cdrecord方法确实支持dvd刻录,我只是看了一下代码,而男孩却忘记了我投入该类的时间和精力。
cdrecord几乎可以刻录任何类型的媒体,但是由于它是一个独立的应用程序,因此我必须进行大量解析才能获得有用的信息。如果我们有兴趣,我可以挖掘出我使用的标志和不同的调用,但是不幸的是,由于它是为商业项目开发的,因此我无法共享源。
在查看代码时,我还被提醒我将cdrecord(cdrtools)的形式切换为wodim(cdrkit)。 wodim是几年前由debian团队制作的cdrecord的一个分支,因为cdrecord放弃了GPL许可证。
就像我在将其作为商业应用程序发布之前所说的那样,我们对GPL的解释是,只要程序可以在没有外部二进制文件的情况下运行,我们就可以从程序中调用外部二进制文件(如果找不到cdrecord)我们弹出一个对话框,通知用户刻录功能不可用),我们还必须托管cdrkit和cygwin的源,并在我们的分布式程序中包含GPL的副本。因此,基本上,我们不会进行"派生工作",我们将完全按原样编译cdrkit代码,然后使用产生的二进制文件。
就StarBurn SDK而言,我已对其进行了演示,但我并未将其用于已发货的产品,因此我无法真正给出建议或者说得更多
回答
我已经使用了codeproject文章中的代码,并且效果很好。它是IMAPI2的一个很好的包装器,因此只要IMAPI2支持我们需要做的事情,.NET包装器就可以做到。