用于Symbian OS的DirectShow模拟?

时间:2009-12-25 12:42:32

标签: windows symbian directshow nokia

因此Windows Mobile有DirectShow用于媒体编辑捕获,因此它的Symbian OS模拟(s60 v5)是什么?

1 个答案:

答案 0 :(得分:7)

Symbian上有许多API提供音频和音频。视频功能;请注意,我不熟悉DirectShow,但基于对维基百科的简要介绍,看起来DirectShow API比Symbian(目前)提供的功能更强大。

以下是Symbian可用API的简要概述以及使用它们可以做些什么。

DevSound

DevSound API CMMFDevSound是可用的最低级音频API。它提供各种格式的音频输入和输出流。支持的确切格式取决于您使用的特定硬件,但它始终支持16位PCM,并且通常也支持AMR,AAC和MP3。 API不是最容易使用的,但如果您想要执行“实时”音频流,则可能值得使用。

CMMFAudioInputStreamCMMFAudioOutputStream基本上是DevSound的包装器;它们更容易使用但功能却不那么强大。

音频剪辑实用程序

对于基本文件(剪辑)播放/录制,您可以使用CMdaAudioPlayerUtilityCMdaAudioRecorderUtility。它们提供“打开文件”,“播放”,“搜索”等级别的功能。如果您只想播放/录制音频文件,它们是最简单的选项。如果您希望能够在播放时生成音频,或者在录制时处理音频,则它们并不好。

视频片段实用程序

这些是音频剪辑实用程序的模拟,但用于播放/录制视频文件。要使用的类是CVideoPlayerUtilityCVideoRecorderUtility。它们涉及使用直接屏幕访问和/或ECAM来呈现/录制视频(见下文)。

直接屏幕访问

Direst Screen Access(DSA)提供对视频硬件的快速访问,用于渲染视频,摄像机取景器或任何其他需要高速图形的内容。开始的课程是CDirectScreenAccess

DSA的确切行为可能取决于您的具体硬件:例如,如果在DSA区域顶部绘制菜单或其他窗口,某些实施将“中止”您的DSA;其他人可能允许DSA在后台继续,在硬件中执行剪切和DSA区域。

注意,如果您直接使用DSA渲染视频,则需要安排自己解码视频流; DevVideo(下面)可能会有所帮助。只能使用DSA呈现未压缩的位图。

ECAM

ECAM API CCamera提供对存在的任何相机硬件的访问。它可以从摄像机提供实时未压缩视频帧(用于编码或渲染取景器,通常使用DSA),也可以拍摄快照。

DevVideo

DevVideo API提供对视频编码和解码硬件的低级访问。根据您使用的特定硬件,它还可能支持将编码视频流渲染到DSA区域。 API难以使用,您可能会遇到不同手机型号之间的不规则。如果你真的需要执行硬件加速流视频编码/解码,我只建议使用它。请注意,上面提到的视频片段实用程序使用了DevVideo,因此如果您使用它们,您将受益于任何硬件加速。

要查看的课程是CMMFDevVideoPlayCMMFDevVideoRecord。一些警告:

  • 诺基亚已从某些SDK中排除.lib个文件,这意味着您无法将这些API与标准SDK一起使用;我不确定目前的情况如何。
  • 实际上,为了使这些课程有效,您可能需要诺基亚的专业帮助,即您需要付费。我很高兴在这里被证明是错的: - )

使用哪些API?

好问题。这取决于你想做什么。如果你想要做的只是音频/视频的基本播放/录制,请使用剪辑实用程序。如果它们足够强大以满足您的需求,它们比其他更容易使用。

但是,如果您需要执行音频或视频流,则需要使用DevSound和/或DSA。如果你想做类似的事情:

  • 呈现通过网络流式传输的音频和视频
  • 实时生成音频,例如游戏音效
  • 实时处理录制的音频/视频,例如通过网络从相机流式传输

然后你需要使用低级API,你可能需要学习很多东西!

一些链接

  • Symbian books页面上的一些示例源代码。来自 Symbian OS C ++ for Mobile Phones v3 的代码包含所有更高级别多媒体API(即不是DevSound或DevVideo)的示例。遗憾的是,该书本身无法在线获取。
  • 论坛诺基亚有一些example code可能值得一看。