我想移植一个我的 ActiveX(到 Silverlight),它具有以下功能:
- 在任何视频文件中嵌入徽标图像。
- 在任何视频文件中嵌入字幕。
- 裁剪任何视频文件(例如:裁剪 1 分钟视频的 10 秒)。
- 保存视频文件结果(由客户端的当前编码器)。
当前的 ActiveX 使用 DirectShow - 不幸的是,它不能在 Silverlight 中使用。我怎样才能放弃旧的 ActiveX 技术而使用新的 Silverlight 技术?
我想移植一个我的 ActiveX(到 Silverlight),它具有以下功能:
当前的 ActiveX 使用 DirectShow - 不幸的是,它不能在 Silverlight 中使用。我怎样才能放弃旧的 ActiveX 技术而使用新的 Silverlight 技术?
简单的答案是:你不能。
Silverlight 针对两种主要类型的应用程序:-
视频编辑并不真正属于这两个阵营,也没有得到满足。
我不确定说 ActiveX 是旧的,毕竟在 Internet Explorer 中托管 Silverlight 插件的技术是什么?活动X。
我不知道这是否会很容易实现。Silverlight 原生可用的各种编解码器都由 Silverlight MediaElement 控件包装,据我所知,它们不是通过 API 直接公开的,例如,您无法获得原始解码的 RGBA 比特流。(如果我在这方面错了,我很想知道,但我已经四处寻找,我不知道该怎么做。) Mono 源代码树具有Dirac编解码器的仅解码实现,但据我所知,没有什么可以让您轻松解码,例如 WMV 或 AVI 文件。
即使你能以某种方式获取原始的、解码的 RGBA(或 YCbCr)比特流,以便能够将你想要的任何数据插入到这些帧中,你仍然必须重新编码视频流,并且 Silverlight不为此提供任何本机支持。您必须编写自己的编码器(一点也不简单),从 ffmpeg 库中移植它们(也不是简单的),或者等待其他人来做。
简而言之,我怀疑您现在将需要坚持使用您的 ActiveX 解决方案——尽管使用一些巧妙的 JavaScript 编码,可能可以将其包装在一个漂亮的 Silverlight UI 中。