CN101137054A - 嵌入式流媒体播放器实现方法 - Google Patents
嵌入式流媒体播放器实现方法 Download PDFInfo
- Publication number
- CN101137054A CN101137054A CN 200610106944 CN200610106944A CN101137054A CN 101137054 A CN101137054 A CN 101137054A CN 200610106944 CN200610106944 CN 200610106944 CN 200610106944 A CN200610106944 A CN 200610106944A CN 101137054 A CN101137054 A CN 101137054A
- Authority
- CN
- China
- Prior art keywords
- module
- filter
- data
- function
- graph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了嵌入式流媒体播放器的内部架构,该机制可以保证针对任何纷繁复杂的文件格式和压缩方式以及网络接入协议,都可以把它们抽离成具体的实现模块,根据需要提供一些模块的集合,可以相应的添加和删除。软件的控制架构不会因为需要支持新的文件格式或视音频压缩格式而受到破坏,增强了软件的健壮性,可移植性,缩短了软件的开发周期和开发难度,相应的测试周期也随之大大缩短。
Description
技术领域
本发明涉及一种流媒体技术,具体地讲是涉及一种嵌入式流媒体播放器实现方法。
背景技术
随着流媒体技术的不断发展,使得流媒体的格式多种多样,现有的播放器架构为了适应这种变化,往往增加了许多复杂的处理机制,导致播放器的结构复杂,不利于嵌入式应用。同时这些播放器往往以播放文件为主,虽然有时可以播放流媒体数据,但是往往是从以前版本修改过来的,很难对网络的各种异常情况进行处理。同时这些播放器往往没有考虑到嵌入式环境的特殊性,没有最大限度的利用嵌入式编解码的特性。
发明内容
本发明的目的就在于解决上述现有技术中的结构复杂、难以对网络的各种异常情况进行处理等不足,从而提供一种嵌入式流媒体播放器实现方法。
本发明是通过以下措施来实现:
本发明的方法如下,
播放器设有四个模块,分别是filter reader模块、filter demux模块、filter decoder模块和graph模块;各个模块的实现方法分别是:
filter read模块:负责连接服务器或网络,从服务器上获取所需要的数据,或者从本地磁盘读取多媒体数据文件,并把得到数据写进数据缓冲区;
filter demux模块:负责从数据缓冲区中读取数据,将数据进行音视频分离,写进对应的数据缓冲区;
filter decoder模块:负责从缓冲区中读取音视频数据,进行音视频同步交织,然后根据指定的压缩标准,进行解码并同步输出;
graph模块:播放器的逻辑控制部分;负责将filter的三个模块组织和协调起来,并提供接口给图形库界面和浏览器;
每个filter模块完成一种功能,并生成相应的库,由graph判断文件格式以及需求,调用相对应的库文件;
各filter模块提供相同的函数接口Creat、Destroy、Play、Pause、Stop、Fastforward、Fastbackward,并提供整个播放器的兼容性和扩展性以及不同硬件平台的移植性;
filter之间的模块的数据的交互,采取整帧的环形缓冲区的维护机制;
graph与filter的模块的控制消息的交互,采用模块间的调用函数和回掉函数的方法来通信,或者直接使用进程间通信;当采用模块间的调用函数和回掉函数的方法来实现时,是使用虚函数,将单一的通信的机制多元化,并根据实际的需要采取多种通讯方式;
解码前处理音视频同步的解决方案:
在解析文件的过程中,将每一帧音视频数据打上正确的时间标签,在进行实际的解压缩以前,选取时间差值,将音视频数据进行交织或者是丢弃帧数据,保证视频和音频数据的同步发送。
本发明中虚函数为用c实现的虚函数或c++的虚函数。在graph与filter的模块的控制消息的交互中,最佳的通信方式为信号、信号量、消息队列、监测设置的标志位中任一种或多种组合。另外,在graph与filter的模块的控制消息的交互中,进程间通信包括消息队列或信号或信号量或共享内存任一种或组合。解析文件的过程中,选取的时间差值为10ms--10s。
本发明由于采用上述方法使之具有如下优点:
1.针对不同的数据获取方式(基于网络或基于本地文件,基于网络的还可能基于不同的网络协议HTTP,RTP、RTCP等),都只和filter read模块相关,所有数据获取的工作均在此模块内部完成,对外提供一致性的接口。
2.针对不同的文件封装格式(.mpg,.mp4,.avi等等),提供不同的filterdemux模块实现视频音频的解复用,对外提供一致性的接口。
3.针对不同的数据压缩方式(MPEG2,MPEG4,H.264,AVS等),用不同的filterdecoder进行解压缩,并播放。
这样,针对任何纷繁复杂的文件格式和压缩方式,都可以把它们抽离成具体的实现模块,根据需要提供一些模块的集合,可以相应的添加和删除。软件的控制架构不会因为需要支持新的文件格式或视音频压缩格式而受到破坏,增强了软件的健壮性,可移植性,缩短了软件的开发周期和开发难度,相应的测试周期也随之大大缩短。
附图说明
附图是本发明的原理框图。
具体实施方式
本发明以下结合附图和实施例作以详细的描述:
实施例1
如图所示,本发明采用的硬件包括微处理器、音视频码编解码器、多媒体信号处理器(DSP)或片上系统(SOC)等,其实现方法如下,
播放器设有四个模块,分别是filter reader模块、filter demux模块、filter decoder模块和graph模块;各个模块的实现方法分别是:
filter read模块:负责连接服务器或网络,从服务器上获取所需要的数据,或者从本地磁盘读取多媒体数据文件,并把得到数据写进数据缓冲区;
filter demux模块:负责从数据缓冲区中读取数据,将数据进行音视频分离,写进对应的数据缓冲区;
filter decoder模块:负责从缓冲区中读取音视频数据,进行音视频同步交织,然后根据指定的压缩标准,进行解码并同步输出;
graph模块:播放器的逻辑控制部分;负责将filter的三个模块组织和协调起来,并提供接口给图形库界面和浏览器;
每个filter模块完成一种功能,并生成相应的库,由graph判断文件格式以及需求,调用相对应的库文件;
各filter模块提供相同的函数接口Creat、Destroy、Play、Pause、Stop、Fastforward、Fastbackward,并提供整个播放器的兼容性和扩展性以及不同硬件平台的移植性;
filter之间的模块的数据的交互,采取整帧的环形缓冲区的维护机制;
graph与filter的模块的控制消息的交互,采用模块间的调用函数和回掉函数的方法来通信,或者直接使用进程间通信;当采用模块间的调用函数和回掉函数的方法来实现时,是使用虚函数,将单一的通信的机制多元化,并根据实际的需要采取多种通讯方式;
解码前处理音视频同步的解决方案:
在解析文件的过程中,将每一帧音视频数据打上正确的时间标签,在进行实际的解压缩以前,选取时间差值,将音视频数据进行交织或者是丢弃帧数据,保证视频和音频数据的同步发送。
实施例2
本发明采用的硬件包括微处理器、音视频码编解码器、多媒体信号处理器(DSP)或片上系统(SOC)等,其实现方法基本同实施例1。
只是其中,虚函数为用c实现的虚函数或c++的虚函数。
实施例3
本发明采用的硬件包括微处理器、音视频码编解码器、多媒体信号处理器(DSP)或片上系统(SOC)等,其实现方法基本同实施例1。
只是其中,graph与filter的模块的控制消息的交互中,最佳的通信方式为信号、信号量、消息队列、监测设置的标志位中任一种或多种组合。
另外,graph与filter的模块的控制消息的交互中,进程间通信包括消息队列或信号或信号量或共享内存任一种或组合。
实施例4
本发明采用的硬件包括微处理器、音视频码编解码器、多媒体信号处理器(DSP)或片上系统(SOC)等,其实现方法基本同实施例1
只是其中解析文件的过程中,选取的时间差值为10ms--10s,可根据需要在此范围内取任意值。
实施例5
本发明的架构采用模块化设计方式,同时对于播放器中的各模块的对外接口进行限定,同时增加专门对于网络的处理,既保证了播放器的灵活性,增强了对网络的适应能力,同时降低了播放器的复杂性,非常适合于嵌入式流媒体的应用。
播放器架构的设计原理:
本播放器架构能够以灵活的方式,解决目前播放器软件兼容性差的缺点。把流媒体数据获取部分,流媒体数据视音频解复用部分和流媒体解码部分分离开来,以模块的形式存在。这样,就可以灵活的拼装组合各个模块,达到针对不同数据获取方式(通过各种网络协议或本地文件),不同媒体压缩方式的灵活组合。
播放器的整体架构:
播放器架构总共采用4个模块,分别是reader模块、demux模块、decoder模块和graph模块。
read模块:负责连接服务器或网络,从服务器上获取所需要的数据,或者从本地磁盘读取多媒体数据文件,并把得到数据写进数据缓冲区;
demux模块:负责从数据缓冲区中读取数据,将数据进行音视频分离,写进对应的数据缓冲区;
decoder模块:负责从缓冲区中读取音视频数据,进行音视频同步交织,然后根据指定的压缩标准,进行解码并同步输出;
graph模块:播放器的逻辑控制部分;负责将filter的三个模块组织和协调起来,并提供接口给图形库界面和浏览器。
播放器的架构框图如下:
每个filter模块完成一种功能,并生成相应的库,有graph判断文件格式以及需求,调用相对应的库文件。
各个模块之间的交互:
filter之间的模块的数据的交互,采取整帧的环形缓冲区的维护机制;
graph与filter的模块的控制消息的交互,采用模块间的调用函数和回掉函数来代替消息队列的通信。在实现的过程中,用c实现c++中的虚类的概念,将单一的通信的机制多元化,可以根据实际的需要采取最佳的通信方式,比如:信号,信号量,消息队列,监测设置的标志位。
解码前处理音视频同步的解决方案:
在解析文件的过程中,将每一帧音视频数据打上正确的时间标签,在进行实际的解压缩以前,选取合理的时间差值,将音视频数据进行交织或者是丢弃帧数据,保证视频和音频数据的同步发送。
Claims (5)
1.一种嵌入式流媒体播放器实现方法,其特征在于:其方法如下,
播放器设有四个模块,分别是filter reader模块、filter demux模块、filter decoder模块和graph模块;各个模块的实现方法分别是:
filter read模块:负责连接服务器或网络,从服务器上获取所需要的数据,或者从本地磁盘读取多媒体数据文件,并把得到数据写进数据缓冲区;
filter demux模块:负责从数据缓冲区中读取数据,将数据进行音视频分离,写进对应的数据缓冲区;
filter decoder模块:负责从缓冲区中读取音视频数据,进行音视频同步交织,然后根据指定的压缩标准,进行解码并同步输出;
graph模块:播放器的逻辑控制部分;负责将filter的三个模块组织和协调起来,并提供接口给图形库界面和浏览器;
每个filter模块完成一种功能,并生成相应的库,由graph判断文件格式以及需求,调用相对应的库文件;
各filter模块提供相同的函数接口Creat、Destroy、Play、Pause、Stop、Fastforward、Fastbackward,并提供整个播放器的兼容性和扩展性以及不同硬件平台的移植性;
filter之间的模块的数据的交互,采取整帧的环形缓冲区的维护机制;
graph与filter的模块的控制消息的交互,采用模块间的调用函数和回掉函数的方法来通信,或者直接使用进程间通信;当采用模块间的调用函数和回掉函数的方法来实现时,是使用虚函数,将单一的通信的机制多元化,并根据实际的需要采取多种通讯方式;
解码前处理音视频同步的解决方案:
在解析文件的过程中,将每一帧音视频数据打上正确的时间标签,在进行实际的解压缩以前,选取时间差值,将音视频数据进行交织或者是丢弃帧数据,保证视频和音频数据的同步发送。
2.根据权利要求1所述的嵌入式流媒体播放器实现方法,其特征在于:所述虚函数为用c实现的虚函数或c++的虚函数。
3.根据权利要求1或2所述的嵌入式流媒体播放器实现方法,其特征在于:所述graph与filter的模块的控制消息的交互中,最佳的通信方式为信号、信号量、消息队列、监测设置的标志位中任一种或多种组合。
4.根据权利要求1或2所述的嵌入式流媒体播放器实现方法,其特征在于:所述graph与filter的模块的控制消息的交互中,进程间通信包括消息队列或信号或信号量或共享内存任一种或组合。
5.根据权利要求1或2所述的嵌入式流媒体播放器实现方法,其特征在于:所述解析文件的过程中,选取的时间差值为10ms--10s。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610106944 CN101137054A (zh) | 2006-08-29 | 2006-08-29 | 嵌入式流媒体播放器实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610106944 CN101137054A (zh) | 2006-08-29 | 2006-08-29 | 嵌入式流媒体播放器实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101137054A true CN101137054A (zh) | 2008-03-05 |
Family
ID=39160845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610106944 Pending CN101137054A (zh) | 2006-08-29 | 2006-08-29 | 嵌入式流媒体播放器实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101137054A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567206B (zh) * | 2009-05-26 | 2011-01-05 | 北京北纬通信科技股份有限公司 | 支持音视频解码自适应的系统及其方法 |
CN102111674A (zh) * | 2010-12-22 | 2011-06-29 | 深圳市五巨科技有限公司 | 一种移动终端播放在线视频的系统、方法及移动终端 |
CN101557512B (zh) * | 2009-05-19 | 2011-07-20 | 武汉长江通信产业集团股份有限公司 | 视频终端接收视频数据延时的处理方法 |
CN102129370A (zh) * | 2011-01-12 | 2011-07-20 | 福州瑞芯微电子有限公司 | 一种通用的多媒体播放器框架 |
CN102221953A (zh) * | 2010-04-14 | 2011-10-19 | 上海中标软件有限公司 | 一种透明用户界面视频播放器的实现方法及其播放器 |
CN102404573A (zh) * | 2011-11-28 | 2012-04-04 | 深圳市万兴软件有限公司 | 音频视频同步处理方法及装置 |
CN102469360A (zh) * | 2010-11-17 | 2012-05-23 | 郑州威科姆科技股份有限公司 | 嵌入式系统中基于双es接口的媒体数据播放方法 |
CN102647629A (zh) * | 2012-04-27 | 2012-08-22 | 北京人民广播电台 | 内容播放方法和装置 |
CN102866882A (zh) * | 2012-08-28 | 2013-01-09 | 厦门亿联网络技术股份有限公司 | 在资源受限的情况下的媒体文件播放方法 |
CN103997643A (zh) * | 2014-06-06 | 2014-08-20 | 北京安兔兔科技有限公司 | 视频播放性能测试方法及装置 |
-
2006
- 2006-08-29 CN CN 200610106944 patent/CN101137054A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101557512B (zh) * | 2009-05-19 | 2011-07-20 | 武汉长江通信产业集团股份有限公司 | 视频终端接收视频数据延时的处理方法 |
CN101567206B (zh) * | 2009-05-26 | 2011-01-05 | 北京北纬通信科技股份有限公司 | 支持音视频解码自适应的系统及其方法 |
CN102221953A (zh) * | 2010-04-14 | 2011-10-19 | 上海中标软件有限公司 | 一种透明用户界面视频播放器的实现方法及其播放器 |
CN102469360A (zh) * | 2010-11-17 | 2012-05-23 | 郑州威科姆科技股份有限公司 | 嵌入式系统中基于双es接口的媒体数据播放方法 |
CN102111674A (zh) * | 2010-12-22 | 2011-06-29 | 深圳市五巨科技有限公司 | 一种移动终端播放在线视频的系统、方法及移动终端 |
CN102111674B (zh) * | 2010-12-22 | 2012-11-14 | 深圳市五巨科技有限公司 | 一种移动终端播放在线视频的系统、方法及移动终端 |
CN102129370A (zh) * | 2011-01-12 | 2011-07-20 | 福州瑞芯微电子有限公司 | 一种通用的多媒体播放器框架 |
CN102129370B (zh) * | 2011-01-12 | 2013-05-22 | 福州瑞芯微电子有限公司 | 一种通用的多媒体播放器框架 |
CN102404573A (zh) * | 2011-11-28 | 2012-04-04 | 深圳市万兴软件有限公司 | 音频视频同步处理方法及装置 |
CN102647629A (zh) * | 2012-04-27 | 2012-08-22 | 北京人民广播电台 | 内容播放方法和装置 |
CN102866882A (zh) * | 2012-08-28 | 2013-01-09 | 厦门亿联网络技术股份有限公司 | 在资源受限的情况下的媒体文件播放方法 |
CN103997643A (zh) * | 2014-06-06 | 2014-08-20 | 北京安兔兔科技有限公司 | 视频播放性能测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101137054A (zh) | 嵌入式流媒体播放器实现方法 | |
CN104333808B (zh) | 用于Android及Linux智能电视机上的通用播放器 | |
CN102026017B (zh) | 一种视频解码高效测试方法 | |
CN104837052A (zh) | 播放多媒体数据的方法及装置 | |
CN106131550B (zh) | 播放多媒体文件的方法及装置 | |
CN102595114B (zh) | 一种在低端嵌入式产品上播放视频的方法及终端 | |
CN108111859B (zh) | 基于JetsonTX1平台的H.264视频编解码方法 | |
CN102074257A (zh) | 软硬件结合解码的通用多媒体播放设备及其播放方法 | |
CN106664458A (zh) | 用于无线显示的直接流式传输 | |
CN104159150A (zh) | 云终端、云服务器、媒体数据流播放系统及方法 | |
CN104796768A (zh) | 一种基于omap硬解码加速的嵌入式高清媒体播放器及其操作方法 | |
EP2666305A1 (en) | Dynamic video switching | |
CN101656099A (zh) | 一种用于mp3播放器的音视频制作和播放方法 | |
CN103051941A (zh) | 一种在移动平台上播放本地视频的方法和系统 | |
CN102385864B (zh) | 一种音频数据解码方法、装置及音频播放器 | |
CN105357545A (zh) | 基于流媒体方式的无线同屏方法及装置 | |
CN102246491A (zh) | 用于存储多源多媒体表示的系统和方法 | |
CN102802022A (zh) | 编解码系统和方法 | |
CN104980682A (zh) | 一种智能动态高清视频传输系统 | |
CN103503444A (zh) | 在视频编码中用信号通知活动层的数量 | |
CN104023260B (zh) | 硬件解码实现方法、装置及播放器 | |
CN108122558A (zh) | 一种latm aac音频流的实时转容实现方法及装置 | |
CN101645967B (zh) | 一种以自定义格式处理多媒体数据的移动终端及实现方法 | |
CN101009836A (zh) | 基于双处理器的嵌入式视频播放装置 | |
CN109743643B (zh) | 楼宇对讲系统的处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20080305 |