`

XBMC源代码分析 1:整体结构以及编译方法

    博客分类:
  • XBMC
 
阅读更多

XBMC(全称是XBOX Media Center)是一个开源的媒体中心软件。XBMC最初为Xbox而开发,可以运行在Linux、OSX、Windows、Android4.0系统。我自己下载了一个然后体验了一下,感觉确实不错,和Windows自带的媒体中心差不多。

XBMC项目首页:http://xbmc.org/

XBMC差不多是我接触到的开源多媒体项目中体积最大的了。但是它的编译方法却出乎意料的简单。我按照它的Wiki上面说的步骤去做,非常顺利的完成了编译,没有遇到任何错误,赞一个。

下面简述一下它的编译方法。

前提条件

1.Visual C++ 2010

2.Microsoft DirectX SDK (August 2009 或更晚的版本)

3.Git

4.JRE

编译

注意:需要下载很多东西,所以需要联网

1.使用Git下载源代码。Git地址:git://github.com/xbmc/xbmc.git

2.运行DownloadBuildDeps.bat (所在目录 project\BuildDependencies):下载编译项目所需要的依赖项

3.运行DownloadMingwBuildEnv.bat (所在目录 project\BuildDependencies) :下载编译ffmpeg库所需要的依赖项

4.运行buildmingwlibs.bat (所在目录 project\Win32BuildSetup): 编译ffmpeg库

5.以下二选一。一般情况下选第二个就可以了。

(1)BuildSetup.bat (所在目录 project\Win32BuildSetup):只有需要直接编译一个打包文件的时候,才推荐使用该批处理。

(2)extract_git_rev.bat : 如果是为了调试,并且使用 VC++ 2010 进行编译,推荐使用该批处理。

6.打开project\VS2010Express\XBMC for Windows.sln,就可以编译了。

 

下面对XBMC源代码进行一个整体分析:

源代码的目录结构如下图所示。我把其中比较主要的文件夹下面标记了一条红线。

这几个主要文件夹的作用如下(其他文件夹就不再细说了):

addons:附加元件。比如说XBMC的皮肤文件,屏幕保护文件,可视化效果文件等等。

docs:文档。

language:语言文件。

project:项目工程文件。

xbmc:源代码

lib:调用的各个库。比如说libavcodec。

 

XBMC项目解决方案的目录如下图所示。可以看出项目工程数量是极其巨大的。

其中名字为“XBMC”的工程是主程序。

ImageLib_XXX是图片处理的工程。

libXBMC_XXX是完成XBMC各种功能的工程。

visXXX是各种可视化效果的工程。

 

我们来看一下“XBMC”工程的目录。该工程下源文件的数量也是十分庞大的。不同功能的类被放到了不同的文件夹中,显得还是比较井然有续的:

其中“core”文件夹中存放核心的类

“addon”文件夹中存放和addon相关的类

“music”文件夹中存放和音乐功能相关的类

“video”文件夹中存放和影视功能相关的类

“settings”文件夹中存放和设置功能相关的类

此处不一一例举

 

 

分享到:
评论

相关推荐

    ubuntu下的kodi(XBMC)编译

    标题中的“ubuntu下的kodi(XBMC)编译”指的是在Ubuntu操作系统环境下,对Kodi(以前称为XBMC,Xbox Media Center)媒体中心软件进行源代码编译的过程。Kodi是一款开源的多媒体中心应用,它能播放各种音频、视频格式...

    xbmc 移植到ANDROID 方法

    将XBMC移植到Android平台上需要进行一系列准备工作,包括设置Android开发环境、获取源代码以及编译等步骤。 #### 2. 安装并设置 Android 开发环境 为了在Android设备上运行XBMC,首先需要搭建Android开发环境,这...

    xbmc.rar_ xbmc_LINUX RT_rtmp c++_xbmc lin_xbmc linux

    这个“xbmc.rar”压缩包包含了在Linux环境下实现RTMP协议的源代码,这对于开发者来说是一个宝贵的资源,特别是那些希望在XBMC平台上处理流媒体内容的人。 RTMP(Real-Time Messaging Protocol)是Adobe Systems开发...

    xbmc4zidoo:Zidoo xbmc 存储库

    在这个存储库中,开发者对原始的XBMC源代码进行了修改,以适应Zidoo硬件的特性,确保了软件在Zidoo设备上的高效运行。这些修改可能包括针对Zidoo硬件特性的优化,比如GPU加速、硬件解码支持以及与Zidoo设备的遥控器...

    XBMC的Milkdrop2端口_C++_C_下载.zip

    7. **源代码管理和版本控制**:Milkdrop2-XBMC项目可能是通过版本控制系统(如Git)进行管理的,这样开发者可以协作开发,跟踪代码变更,回滚错误修改,并维护代码历史。 8. **软件构建与打包**:开发过程中,需要...

    ffmpeg-2.8.5-Jarvis-rc1.tar.gz

    5. **编译**: 对于开发者而言,这个压缩包意味着他们无需从源代码编译整个FFmpeg库,而是可以直接使用提供的预编译版本,简化了开发过程并确保与特定Kodi版本的兼容性。 6. **.tar.gz 文件格式**: 这种压缩格式是...

    XBMC4Xbox-开源

    MinGW是一个开源的Windows编译环境,它提供了将源代码编译为Windows可执行文件所需的工具链。对于XBMC4Xbox这样的跨平台项目,MinGW使得开发者能够在Windows环境下编译和测试针对Xbox的代码,确保软件在不同操作系统...

    android-xbmcremote

    通过对源代码的分析,开发者可以学习到如何实现设备间的通信、如何设计用户友好的触摸控制界面,以及如何与XBMC的API进行交互等技术细节。 总的来说,Android XBMC Remote是一个将Android设备变成高效媒体中心遥控...

    xbmc,Kodi是一个获奖的免费开源家庭影院/媒体中心软件和数字媒体娱乐中心。凭借其漂亮的界面和强大的皮肤引擎,它适用于android、bsd、linux、macos、ios和windows。.zip

    如果你是开发者或者对开源项目感兴趣,你可以查看和编译源代码,了解其工作原理,甚至参与开发,为这个项目贡献自己的力量。通过深入源代码,你可以学习到C++编程、多媒体处理、跨平台开发以及如何构建一个复杂的...

    SyncXBMC:将 UPNP 内容与 XBMC 同步-开源

    “开源软件”标签表明SyncXBMC遵循开放源代码的原则,这意味着它的源代码对公众开放,任何人都可以查看、使用、修改和分发。开源软件鼓励社区参与和协作,促进软件的持续改进和发展。 从“Release”这个压缩包子...

    Kassi分享 - 发送到Kodi「Kassi Share - Send to Kodi」-crx插件

    将视频发送到Kodi媒体中心 将视频发送到Kodi媒体中心。 “立即播放”和“添加到队列”链接位于上下文菜单中。...Github上提供的源代码,https://github.com/goldenratio/youtube-to-XBMC 支持语言:English

    XBMC Media Companion Linux Edition-开源

    如果它是源代码,那么用户或开发者可以深入研究其内部工作原理,学习如何与XBMC API交互,以及如何使用GTK+和MonoDevelop进行跨平台开发。如果是编译后的可执行文件,用户可以直接安装运行,体验XBMC Media ...

    shairplay, Airplay C version

    安装Shairport通常涉及从源代码编译或使用发行版的包管理器。对于开发人员,可以从GitHub获取最新的源代码并按照项目文档进行编译。对于普通用户,可以使用apt-get(Debian/Ubuntu)、brew(macOS)或其它相应工具...

    树莓派学习指南基于Linux

    软件安装与使用部分则更加深入地介绍了Linux环境下软件的安装和管理,包括命令行工具的使用、图形用户界面(GUI)的介绍、系统更新和软件升级,以及如何从源代码编译安装软件。此外,文档可能会提供一些树莓派专用...

    aac-rtmp-red5

    如果你没有这个工具,可以自行编译或从源代码构建。 使用rtmpdump向Red5推送AAC流的命令通常会包括以下参数: ``` rtmpdump -r "rtmp://your-server-address/your-app/stream-name" -v -a "your-aac-stream-file....

    ScraperXML-开源

    同时,由于该项目是开源的,开发者还可以查看和修改源代码,进一步优化性能或添加新功能,以适应不断变化的网络环境和数据需求。 总的来说,ScraperXML为.NET开发者提供了一个强大且灵活的工具,使得XML屏幕抓取变...

    Python库 | openwebifpy-3.2.6-py2.py3-none-any.whl

    1. **设备发现与连接**:`openwebifpy`库提供了一种简单的方法来查找和连接到支持OpenWebIf的设备,只需要设备的IP地址即可。 2. **数据获取**:库能获取设备的各种状态信息,如当前播放的频道、音量、电源状态等。...

    lirc-0.8.6.rar_lirc

    在源代码安装的情况下,解压下载的lirc-0.8.6.rar文件,进入目录并按照Readme指示进行编译和安装。 **3. 配置LIRC** 配置LIRC涉及到定义遥控器的代码库和设备设置。你需要提供遥控器的型号或制造商信息,以便LIRC...

    CharlieShock:在Gnu / Linux下用于Ps3控制Linux工具。-开源

    接着,下载CharlieShock项目源代码,解压后在终端中运行编译命令,最后将生成的`ps3tokey`可执行文件放置于PATH环境变量指定的目录下。启动`ps3tokey`,然后连接PS3控制器,即可开始使用。 四、开源优势 作为开源...

    plugin.video.azubutv:azubu.tv的Kodi插件

    使用`plugin.video.azubutv-master`这个压缩包,用户可以获取到插件的最新源代码,自行编译安装或进行二次开发。对于开发者来说,这是一个学习Kodi插件开发和Python网络编程的好例子。通过对源码的研究,可以了解到...

Global site tag (gtag.js) - Google Analytics