媒体播放器之:TCPMP播放器简介

***************************************************************************************************************************

作者:EasyWave                                                             时间:2014.09.06

类别:Media播放器-TCPMP播放器简介                        声明:转载,请保留链接

注意:如有错误,欢迎指正。这些是我学习的日志文章......

***************************************************************************************************************************

一:TCPMP简介

TCPMP-The Core Pocket Media Player是著名的PDA媒体播放器。掌上设备中最棒的媒体播放软件,完全可以用它替代设备系统自带的任何一款播放器,支持众多媒体格式。并且可以通过插件的形式扩展功能,如同步字幕、歌词显示,更多的媒体格式支持等。

二:TCPMP功能介绍

TCPMP是一个功能强大开放式的开源多媒体播放器,播放器主要由核心框架模块(common工程)和解码器分离器插件组成。 TCPMP的插件非常多,联合几个最常用的插件(ffmpeg、splitter)来说明,其中interface插件实现TCPMP的界面,由于他和媒体播放没有什么关系,这部分可以完全被替换掉,替换成自己的界面。

  • ffmpeg工程是系统主要的音视频解码模块,ffmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。ffmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码。很多开源播放器都用到了ffmpeg。但是ffmpeg程序解码效率不是很高,系统仅仅使用了FFmpeg的部分解码功能。ffmpeg主目录下主要有libavcodec、libavformat和libavutil等子目录。其中libavcodec用于存放各个encode/decode模块,libavformat用于存放muxer/demuxer模块,libavutil用于存放内存操作等常用模块。本系统的媒体文件分离器有单独的splitter模块完成所以不需要libavformat子目录。ffmpeg目录下libavcodec、libavutil保留子目录。
  • libmad工程用于MP3文件解码,该工程包含两个功能模块,一个负责解析MP3文件格式,包括MPEG1音频文件 (MP1,MP2,MP3,MPA),读取每一帧音频数据;另一个负责解码MPEG1音频数据,解码代码在libmad子目录中。  libmad是一个开源的高精度 MPEG1音频解码库,支持 MPEG-1(Layer I, Layer II 和 LayerIII,也就是 MP3)。libmad提供 24-bit 的 PCM 输出,完全是定点计算,非常适合没有浮点支持的平台上使用。使用 libmad
    提供的一系列 API,就可以非常简单地实现 MP3 数据解码工作。在 libmad 的源代码文件目录下的 mad.h 文件中,可以看到绝大部分该库的数据结构和 API 等。libmad是用的fixed-integer,通过整数模拟小数计算的,精度只能保证到小数点后第9位(大于0的最小值 0.00000000372529),虽然解码精度会有损失,但是极大提高了解码效率,特别是在嵌入式设备上也可以实现高码率MP3文件的解码。
  • splitter工程用于解析多种音视频文件格式。可以解析的文件格式包括:ASF媒体文件,视频文件 (AVI,DIVX),Windows波形文件 (WAV,RMP),MPEG电影文件 (MPEG,MPG,MPV),MPEG4文件 (MP4,3GP,M4A,M4B,K3G)。以上格式可以被解析但是数据编码不一定能正确解码,需要依赖系统的解码器。
  • common工程是核心模块,是一个开放的集数据输入、转换、音/视频解码、信号输出等功能为一体的完整的多媒体播放框架。这个框架自身不包含任何的Decode和Split功能,这些功能由插件实现,核心模块以一个树状结构管理所有的功能模块和插件模块,实现数据Render功能,对输入、转换、输出流程的控制,接受播放过程中的操作和对事件进行处理,同时也实现系统运行中经常使用的一些共用函数,比如解码过程中经常使用的逆离散余弦变换,内存操作,界面中需要使用的多语言字符处理等。

三:TCPMP现状

目前TCPMP已经不开源,而且也只有ARMV4版本下的source,因此对于ARMV5版本的或者更高级别的就都没有啦,同时WINCE方面的应用比较多些,而Linux下目前很少,几乎没有看到,很不错很优秀的播放器!!

四:TCPMP目录架构

TCPMP的目录架构如下图所示:

图一:TCPMP目录架构之一

图二:TCPMP目录架构之二

有哪位朋友可以将其移植到Linux中去呢?

时间: 2024-10-13 12:38:13

媒体播放器之:TCPMP播放器简介的相关文章

iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置

iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置 ios9音频应用播放控制 在“iOS 9音频应用播放音频之ios9音频基本功能”一文可以看到AVAudioPlayer类有很多的属性以及方法.本节将AVAudioPlayer类中常使用到的属性和方法进行详细的讲解. ios9音频应用暂停/停止 在音乐应用程序中都会有一个使音乐停止播放的按钮.当用户轻拍该按钮,正在播放的音乐就会停止.在iOS要想要正在播放的音频停止下来,可以使用AVAudioPlayer类中的pause()方法和stop

android: 内容提供器简介

我们学了 Android 数据持久化的技术,包括文件存储.SharedPreferences 存 储.以及数据库存储.不知道你有没有发现,使用这些持久化技术所保存的数据都只能在当 前应用程序中访问.虽然文件和 SharedPreferences 存储中提供了 MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE 这两种操作模式,用于供给其他的应用程序访问当前应用 的数据,但这两种模式在 Android 4.2 版本中都已被废弃了.为什么呢?因为 Android 官

获取视频停止播放时已经播放的时间

获取停止,暂停时视频已经播放的时间主要靠注册通知,当暂停或停止时响应通知时间,获取当前已经播放的时间,同时也可以在视频开始播放时给一个播放时间,从当前播放时间播放视频,用此方法来达到播放视频从上次播放时间开始播放 主要代码 MPMoviePlayerViewController *mPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:self.itemVideoUrl]]; [

使用JavaScript脚本控制媒体播放(顺序播放和随机播放)

在JavaScript脚本中获取<audio.../>元素对应的对象为HTMLAudioElement对象,<video.../>元素对应的对象为HTMLVideoElement对象. HTMLAudioElement对象和HTMLVideoElement对象支持的方法有如下几个: play():播放视频.音频 pause():暂停播放 load():重新装载音频.视频文件 canPlayType(type):判断该元素是否可以播放type类型的音频.视频.该属性指定该音频.视频文

swing布局管理器简介

转载:http://stevencjh.blog.163.com/blog/static/1218614612010101775336729/ swing布局管理器简介 一 .BorderLayout布局管理器:BorderLayout 也是一种非常简单的布局策略,它把容器内的空间简单地划分为东.西.南.北.中无个区域,没加入一个组件都应该指明把这个组件加在哪个区域中. BorderLayout是顶层容器( JFrame, JDialog, 和 JApplet )的默认布局管理器.有五个位置组件

spring 拦截器简介

spring 拦截器简介 常见应用场景 1.日志记录:记录请求信息的日志,以便进行信息监控.信息统计.计算PV(Page View)等.2.权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面:3.性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录):4.通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提

C#Spring音乐播放器之登录界面编程

Spring音乐播放器,我们小组设计其启动时有一个登录界面,用户初次可以注册,输入用户名和密码,点击注册即将输入信息保存到register文本文件中:如果已有用户名,输入用户名和密码,点击登录,程序会将输入的用户名和密码与已有的用户信息进行比较,如果找到完全匹配的用户名和密码,则进入音乐播放界面:若不匹配,则弹出消息框:用户名或密码错误. 首先建立一个登录界面窗口,添加button,label,和textbox,更改了窗体背景,如下图. 然后对注册和登录按钮进行消息响应编程. C#编程内容主要涉

音乐播放器之myeclipse项目

音乐播放器: 这个音乐播放器是用myeclipse打开的项目.假设有问题记得改掉文件的路径名.还有假设图片不显示也可能是图片的路径名不正确,如音乐无法播放也可能是路径名不正确.总之这个游戏有文件的引用,一旦文件找不到,程序不会挂,可是没结果. 注意:用myeclipse导入这个项目,就不会有问题. 假设还是有问题.请留言. 地址链接:点击打开链接

兼容IE7音乐播放器之jplayer的使用

首先列出为何要写这篇随笔的原因: 1:兼容IE7 2:音乐播放器 3:任意控制播放器 1: 最近做的网站需要兼容IE7,在此之前已经写好了关于音乐播放的插件,火狐,IE8以上,以及谷歌浏览器等都可以随意播放,但是IE7以及IE8浏览器却无法正常播放,真是恼火至极啊!网上收了一大箩筐音乐播放器都不满足我的要求,基本上都是基于XML配置文件式的,而我的网站需要动态播放音乐,控制音乐单曲循环,我自定义的音乐列表顺序播放等,因此不能满足我的要求,这些播放器要么是html5的要么是纯flash的(无法控制