3

我正在开发一个涉及录制和播放声音的 VSTO PowerPoint 插件。我在最后一刻被要求允许用户选择播放声音的设备,就像 Skype 一样。

一般来说,我认为不可能指定 PowerPoint 应该使用什么设备,除非通过在控制面板中选择默认设备,我无法以编程方式执行此操作。但是,我可以识别我的加载项录制的声音,因为它们作为 SoundEffect 嵌入到我标记的 Shapes 中。

我的问题是:是否可以直接访问 .wav 文件 - 类似于SoundEffect.ImportFromFile,但在另一个方向?如果我能做到这一点,我可以使用加载项代码而不是 PowerPoint 打开和播放 .wav 文件。

[编辑:直接,我的意思是“不必以不同的格式保存演示文稿”]

或者,有没有办法在演示文稿中添加和检索二进制文件作为嵌入内容?

我怀疑这是不可能的,但如果有人知道,我会在 StackOverflow 上找到那个人!

4

1 回答 1

4

两者都是可能的。

  1. 从 PPTX 提取 WAV:所有嵌入的媒体都在 .pptx\ppt\media 文件夹中(将 .pptx 重命名为 .zip,解压缩并导航到 \ppt\media)。它们通常按照添加和/或处理的顺序依次编号。叙述,AFAIK,总是嵌入的,从不链接。问题将是确定要提取的确切内容 - 在添加到 pptx 时,可以通过向其添加标签或其他唯一标识符来解决这个问题。提取它的方法是使用 Open XML SDK(或直接使用 System.IO.Packaging)并打开当前演示文稿的内存副本,在文件夹中找到您的 .wav(我使用 Linq-to-XML 来找到我需要的东西)并将其读入内存流,以便写入磁盘进行播放,或者您的加载项是否可以从内存流中播放,甚至更好。

  2. PPTX 中的二进制类型:任何东西都可以进入 Open XML 文档,但关键是让它保持在那里。有关详细信息,请参阅此答案-是否可以将一些数据添加到 Word 文档中?.

于 2010-08-24T00:42:53.193 回答