用于Symbian OS的DirectShow模拟?

Rel*_*lla 0 windows directshow symbian nokia

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

Mat*_*ewI 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.一些警告:

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

使用哪些API?

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

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

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

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

一些链接

  • Symbian 书籍页面上的一些示例源代码.Symbian OS C++ for Mobile Phones v3的代码包含所有更高级别多媒体API的示例(即不是DevSound或DevVideo).不幸的是,这本书本身并不在网上提供.
  • 诺基亚论坛有一些示例代码可能值得一看.