`
izuoyan
  • 浏览: 9222168 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之66---BREW 应用中的流媒体播放

阅读更多

流式播放的数据源来自ISource 接口对象,可以来自于网络,内存或者文件。流式媒体有两种内容:一种是格式化的媒体,该媒体包含了头,编码规范和原始数据的起始位置,例如.mp3 或者 .wav 的文件;另一种是原始数据,其编解码方法由使用者单独提供。流式播放需要一个ISource的具体实现,由应用创建 ISource 接口, 并保持在IMedia 接口的整个生命周期内有效。下面是一个简单的例子,对一个wav文件实现流式播放。

static void MyApp_SetupSource(MyApp * pme){

AEEMediaDataEx md;

IFileMgr *pfm; ISourceUtil *psu;

// 步骤#1: 创建IMedia PCM 对象,处于 IDLE 状态

ISHELL_CreateInstance(pme->e.m_pIShell,AEECLSID_MEDIAPCM,(void**)&pme->m_pIMedia);

// 步骤#2: 创建具体ISource对象

ISHELL_CreateInstance(pme->e.m_pIShell, AEECLSID_FILEMGR, (void **)&pfm))

pme->m_pFile = IFILEMGR_OpenFile(pfm, "sample.wav", _OFM_READ);

IFILEMGR_Release(pfm);

ISHELL_CreateInstance(pme->e.m_pIShell, AEECLSID_SOURCEUTIL, (void **)&psu))

ISOURCEUTIL_SourceFromAStream(psu, (IAStream*)pme->m_pFile, &pme->m_pISource);

ISOURCEUTIL_Release(psu);

// 步骤 #3: ISource 初始化AEEMediaDataEx

md.clsData = MMD_ISOURCE;

md.pData = (void *)pme->m_pISource;

md.dwSize = 0;

md.dwStructSize = sizeof(md); // AEEMediaDataEx 数据结构的大小

md.dwCaps = 0;.

md.bRaw = FALSE; // 是否是原始数据? FALSE代表不是

md.dwBufferSize = 0; // 内部的缓存大小, 0 代表使用默认值.

md.pSpec = NULL; // 只对原始数据格式有限

md.dwSpecSize = 0; //只对原始数据格式有限

// 步骤#4: 设置媒体数据,IMedia 对象处于 READY状态

IMEDIA_SetMediaDataEx(pme->m_pIMedia, &md, 1);

}

对于原始数据的流式播放,由于没有媒体播放的终止符,需要在播放中准确的调用IMEDIA_Stop()。在AEEMediaDataEx 数据结构中,需要将bRaw 设为TRUE,将pSpec 设为指定的编解码方法。

流媒体播放就是数据源来自网络的流式播放,采用流式传输的方式,不需要用户将多媒体数据全部下载,而是采取边下载边播放的方式, 仅仅将最初的一些数据先下载到本地缓冲区,只要数据积累到可以连续播放的要求后就开始播放,后面的数据会根据请求不断进入本地缓冲区,从而使播放片断形成一个完整的数据流,如最常用的网络电视PPLIVE 就是采用这种技术。由于无线网络的限制,移动流媒体一般采用单播的播放方式,每个接收端与流媒体服务器建立起一对一的连接关系,每个用户单独向服务器发出数据请求,并由服务器向该用户发送单独的数据拷贝。

由于目前的API不支持对H. 264 或者MPEG- 4/ H. 263 格式的接口,因此需要移植相应的解码器到BREW平台上。移植主要使用BREW的接口来替代解码器中的C 语言函数,并用整数计算或定点计算代替浮点运算,尤其需要解决的是H.264 Xvid 参考源程序所使用的栈空间超过BREW手机的限制问题(如将数组改为动态分配内存,将全局的数组改为函数域中),最终将视频帧解码为位图显示在手机屏幕上。手机播放视频流的一个重要问题是解决音视频的同步。服务器端传送的数据包中包含了音频和视频的播放持续时间,这样可以采取以音频播放时间为基准,校正视频播放. 假设ha 是当前音频的播放时间, hv是当前视频帧的播放时间. 如果hv < ha ,表示视频滞后于音频,则丢弃此帧,立刻转向下一帧的解码;如果hv > ha ,表示视频超前于音频,则此帧暂时不显示,等待音频播放hv - ha 的时间后再显示.

分享到:
评论

相关推荐

    深入brew开发 brew及buiw进阶手册

    《深入brew开发 brew及buiw进阶手册》是一本专为已对brew有一定基础的开发者设计的深度学习资源,旨在帮助读者全面理解和掌握这个强大的包管理工具及其相关生态系统。brew是Mac OS X系统中广泛使用的开源包管理器,...

    高通brew初级培训 培训资料 Brew开发技术文档.doc 海信BREW开发.pdf

    【BREW开发技术详解】 BREW(Binary Runtime ...理解并掌握BREW开发技术,能够帮助开发者创建出符合市场需求的高质量移动应用,尤其在海信等采用BREW系统的设备上,开发者有机会发挥更大的创新力和商业价值。

    BREW 开发者 进阶教程(共18章)

    BREW(Binary Runtime Environment for Wireless)是由高通公司开发的一个移动设备应用程序平台,主要用于2G和3G网络,提供了一个高效、可扩展的环境来开发和运行无线应用。 在本书的18个章节中,读者可以期待深入...

    中国移动的增值行业发展报告

    该报告旨在对中国移动增值业务的市场进行深入的研究与分析。 - **目的**:通过对2007-2008年中国移动增值业务市场的全面考察,为相关企业、投资者以及政策制定者提供有价值的参考信息。 #### 二、研究方法 - **调研...

    深入brew开发pdf与源代码

    2. 开发工具:介绍用于BREW应用开发的IDE、编译器、调试器等工具,以及如何配置和使用它们来优化开发流程。 3. BREW API:详述BREW提供的各种API,包括用户界面、网络通信、数据存储等方面,这些API是构建功能丰富...

    深入BREW开发(1-8)+深度剖析BREW实现原理

    深入BREW开发(1-8)+深度剖析BREW实现原理 BREW,全称为Binary Runtime Environment for Wireless,是由高通公司开发的一种操作系统平台,...通过学习这些材料,你可以深入了解BREW平台,提升你的无线应用开发能力。

    深入研究BREW手机游戏开发BREW开发-海信(王宏兵).RAR

    《深入研究BREW手机游戏开发BREW开发-海信(王宏兵)》是一份针对BREW(Binary Runtime Environment for ...同时,了解BREW平台的历史和现状,也能帮助开发者理解移动应用开发的演进历程,为未来的技术选择提供参考。

    brew开发超级全的资料、文档

    (BREW 开发者 进阶教程)第1章 BREW平台与演进 第2章 BREW3.1图像处理高级编程 第3章 BREW多媒体接口 第4章 IVocoder接口介绍 第5章 ICamera接口 第6章 BREW 常用接口介绍 第7章 BREW 3.1 文件系统 第8章 BREW ...

    BREW PCM音频流播放代码

    在移动开发领域,BREW(Binary Runtime Environment for Wireless)是一个由高通公司开发的平台,主要用于2G和3G的CDMA网络设备。这个平台提供了一个C++的应用程序开发环境,使得开发者能够创建丰富的、交互性强的...

    BREW实例与应用开发

    在《BREW实例与应用开发》这一主题中,我们将重点探讨BREW平台的基础知识及其在社交网络应用中的具体实现。 #### 一、BREW平台简介 BREW平台提供了一个全面的软件环境,支持开发人员为移动设备创建和部署各种应用...

    深入BREW开发-中文版

    BREW SDK(Software Development Kit)提供了开发BREW应用程序所需的工具和库,使得开发者能够创建适用于移动设备的应用。 BREW的事件驱动机制是其核心特点之一。在BREW平台上,程序的执行基于事件,而非连续的循环...

    BREW 流媒体介绍

    BREW流媒体技术是一种专为移动设备设计的流式媒体解决方案,它允许用户在手机上享受音频、视频等多媒体内容的实时传输和播放。这一技术在早期的移动通信市场中扮演了重要角色,特别是在音乐铃声和图片应用方面。 ...

    brew开发者进阶教程

    联通博路编写的开发者进阶教程,pdf版本,转载。 共18部分: 第一部分目录如下: Brew概述 Brew技术演进 Brew3.1.5 sp01 Brew 4.0简介 Brew Mobile Platform简介 Brew 技术优势 Brew与其他技术的对比 以后各部分为...

    应用灌入手机方法-使用BREW工具

    这三个词语都是与手机应用安装相关的关键词,BREW是手机应用开发平台,手机是安装应用的设备,应用是被安装的软件。 部分内容 部分内容主要介绍了使用BREW工具将应用灌入手机的操作步骤,包括: 1. 使用数据线将...

Global site tag (gtag.js) - Google Analytics