笔谈kxmovie开源播放器库的使用
开源播放器项目 kxmovie(https://github.com/kolyvan/kxmovie),现在仍然是很多刚开始接触播放器开发的程序员的参照范本。以下是我操作kxmovie项目的过程:
(1)在桌面上建立一个目录,名称可以随便取,我的该目录名为 examples
(2)打开Mac终端,执行命令 git clone git://github.com/kolyvan/kxmovie /Users/dev.temobi/Desktop/examples/kxmovie
git://github.com/kolyvan/kxmovie 是kxmovie项目存放的网络路径
/Users/dev.temobi/Desktop/examples/kxmovie 是我存放从网络下载得到的kxmovie的本地路径
devtemobideMac-mini:~ dev.temobi$ git clone git://github.com/kolyvan/kxmovie /Users/dev.temobi/Desktop/examples/kxmovie
正克隆到 '/Users/dev.temobi/Desktop/examples/kxmovie'...
remote: Counting objects: , done.
remote: Total (delta ), reused (delta ), pack-reused
接收对象中: % (/), 1.46 MiB | 466.00 KiB/s, done.
处理 delta 中: % (/), done.
检查连接... 完成。
执行完上面的命令之后,本地examples目录下的kxmovie文件夹中的文件如下:

(3)进入本地examples目录下的kxmovie文件夹路径,执行命令 cd /Users/dev.temobi/Desktop/examples/kxmovie
(4)执行命令 git submodule update --init
devtemobideMac-mini:~ dev.temobi$ cd /Users/dev.temobi/Desktop/examples/kxmovie
devtemobideMac-mini:kxmovie dev.temobi$ git submodule update --init
正克隆到 'FFmpeg'...
remote: Counting objects: 421790, done.
remote: Compressing objects: 100% (517/517), done.
remote: Total 421790 (delta 117), reused 0 (delta 0), pack-reused 421273
接收对象中: 100% (421790/421790), 160.59 MiB | 1.65 MiB/s, done.
处理 delta 中: 100% (327924/327924), done.
检查连接... 完成。
子模组路径 'FFmpeg':检出 '1e25afc1811a279094ebc2bc6407715a439e09ee'
正克隆到 'gas-preprocessor'...
remote: Counting objects: 410, done.
remote: Total 410 (delta 0), reused 0 (delta 0), pack-reused 410
接收对象中: 100% (410/410), 155.15 KiB | 0 bytes/s, done.
处理 delta 中: 100% (169/169), done.
检查连接... 完成。
子模组路径 'gas-preprocessor':检出 'cafe6e55a5606c5423c0a0e4045a97f2c3a86338'
devtemobideMac-mini:kxmovie dev.temobi$
执行步骤(3)、(4)之后,FFmpeg源代码被下载到本地,gas-preprocessor.pl脚本也被下载到本地了,在执行(3)、(4)之前,kxmovie文件夹下的FFmpeg、gas-preprocessor文件夹都是空的。

(5)执行命令 rake
devtemobideMac-mini:kxmovie dev.temobi$ rake
Installing the gas-preprocessor to /usr/local/bin
rake aborted!
Permission denied - (gas-preprocessor/gas-preprocessor.pl, /usr/local/bin/gas-preprocessor.pl)
/Users/dev.temobi/Desktop/examples/kxmovie/Rakefile::in `block in <top (required)>'
Tasks: TOP => default => build_ffmpeg => check_gas_preprocessor
(See full trace by running task with --trace)
devtemobideMac-mini:kxmovie dev.temobi$
Mac终端中提示:rake命令被终止执行,Permission denied表示没有权限将gas-preprocessor/gas-preprocessor.pl 复制到 /usr/local/bin/gas-preprocessor.pl
那只能修改 /usr/local/bin 目录的操作权限,前往/usr/local/bin ,选中bin目录显示简介,修改其访问权限,改为 读与写

(6)继续执行命令 rake

从上面的运行结果来看,权限问题已经解决,可前往目的文件夹/usr/local/bin/中检查gas-preprocessor.pl是否复制成功

但是出现了新的问题,仔细看了上面的提示信息,发现出现了“-cc=/Applications/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk
” ,说明Rakefile中使用的是Xcode 的iOS SDK 7.1 的版本,此时要注意“要打开Xcode 检查Xcode中有几个版本的iOS SDK库,一般情况只有一个,除非自己下载了一个低版本的iOS SDK”,我使用的是Xcode 6.3,我仔细检查了只有最新的iOS SDK 8.3,并没有iOS SDK 7.1,那问题可能出在这里了,现在要做的是修改kxmovie目录下的脚本Rakefile,将SDK_VERSION='7.1' 修改为 SDK_VERSION=‘8.3’,注意不要直接打开或用文本编辑器打开,进而来修改脚本Rakefile,否则在执行rake时会报错。应该在Mac终端中用命令来操作,修改脚本Rakefile。
如果是直接打开或用文本编辑器打开,进而来修改脚本Rakefile,在终端执行命令 rake,出现报错如下:

正确的操作是,在终端使用命令 vim ,来编辑脚本Rakefile,将SDK_VERSION='7.1' 修改为 SDK_VERSION=‘8.3’,正确步骤如下:
(1) vim Rakefile,打开文件
(2) 按一下键盘上的字母 i ,进入可修改文件的状态
(3) 按一下Esc 键,然后敲入 :wq 命令,保存退出
(7)继续执行命令 rake

...........................
.......................
................

(8)OK,成功了。FFmpeg文件下出现了新的文件夹 arm64、arm7、arm7s、i386、universal

但是universal文件夹中却是个空文件夹。不要以为又出现问题了,以为需要手动合并 arm64、arm7、arm7s、i386文件夹中的FFmpeg库了,其实要注意观察,kxmovie文件夹中多出来了一个文件夹libs,可以看到文件夹libs下有个FFmpeg文件夹,原来是universal文件夹中被合并的FFmpeg库被移动到了libs文件夹中,至于是怎么移过来的,那肯定是在Rakefile脚本中实现的咯。

(9)打开工程会发现,关于cocoapods的东西都是红色的,这是要做什么呢,因为从kxmovie工程的目录中可以看到其使用cocoapods管理第三方库,所以要知道如何使用cocoapods,这里可参考我写的文章 笔谈 cocoapods的安装与使用
(10)关闭Xcode,进入kxmovie目录,执行 pod install (或者 pod update),获取第三方库资源

(11)双击 kxmovie.xcworkspace ,打开工程,就可以发现第三方库被下载下来了,而且这个第三方库所需要的依赖库也自动添加了,这也是大部分人喜欢用cocoapods管理第三方库的原因所在。

(12)运行KxMovieExample,会提示签名错误,修改签名,换成自己的苹果开发者证书,然后再运行,OK,运行成功
细心的人会在Xcode中仔细看工程结构,会发现好多库显示为红色,其实啊不用管,直接运行KxMovieExample就OK啦。

(13)运行效果图

点击第一个 BigBuckBunny_175k.mov ,程序可能崩溃,不管啦,那就试试第二个mp4:BigBuckBunny_115k.mov看奔不奔溃,呵呵,程序没有崩溃,mp4:BigBuckBunny_115k.mov的播放效果如下:(注意:(a)双击播放画面,有放大/缩小画面的效果;(b)支持横竖屏,就是可以旋转屏幕;(c)点击右上角的“i”按钮,可以查看流媒体信息)



(14)以上就是开源项目kxmovie 的整个使用流程,自己做个笔记,或许也会帮助到其他人吧,呵呵。完整的可直接下载运行的项目kxmovie的下载地址为:http://pan.baidu.com/s/1sj9eSLf
笔谈kxmovie开源播放器库的使用的更多相关文章
- 开源播放器 ijkplayer (一) :使用Ijkplayer播放直播视频
1.ijkplayer 编码 IjkPlayer支持硬解码和软解码. 软解码时不会旋转视频角度这时需要你通过onInfo的what == IMediaPlayer.MEDIA_INFO_VIDEO_R ...
- 谈一谈做iOS播放器库开发所涉及的知识点
在自己研究生毕业的时候,想着能找上一份做视频编解码的工作,可惜没有如愿,最后到了一家iOS游戏渠道公司去做游戏支付业务的SDK开发,我的iOS正式开发生涯就这么开始了. 在那家iOS游戏渠道没做上一年 ...
- 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)
前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...
- Linux 下编译Android-VLC开源播放器详解(附源码下载)
这两天需要做音视频播放相关的东西,所以重新找了目前android下的解码库.Android自带的解码库支持不全,因此很多第三方播放器都是自带解码器,绝大部分都是使用FFMpeg作为解码库.我11年的时 ...
- 开源播放器 ijkplayer (二) :ijkplayer倍速变调问题解决方案
转载注明出处:http://www.cnblogs.com/renhui/p/6510872.html 之前使用IjkPlayer做播放器的使用的时候,在做倍速播放的时候,发现播放的声音音调明显变高了 ...
- 开源播放器ijkplayer源码结构
ijkplayer核心源码主要在ijkmedia文件夹下ijkplayer.ijksdl及ijkutils. 注:tag k0.3.1 player: remove ijkutil android相关 ...
- 开源播放器 ijkplayer (四) :Ijkplayer切换网络时停止播放的问题处理
问题起因: 在进行ijkplayer播放器的测试时,发现ijkplayer播放器在切换网络时出现直播画面停止的问题. 问题分析: 抓取日志发现:tv.danmaku.ijk.media.player. ...
- 开源播放器 ijkplayer (六) :Android 下使用 ijkplayer 异常处理思路
一. java.lang.IllegalStateException: mpjni: setOptionLong: null mp 根据已查到的资料看,目前是ijk内部的问题,只能通过try& ...
- 开源播放器 ijkplayer (五) :Linux/Ubuntu 下编译ijkplayer
一.安装Git与yasm sudo apt-get install git sudo apt-get install yasm 二.下载和配置 SDK.NDK SDK一般开发时肯定都有的,NDK一般是 ...
随机推荐
- fluid.io.load_inference_model 载入多个模型的时候会报错 -- [paddlepaddle]
将多个模型部署到同一个服务时,会出现stack错误. 原因是program为全局. 改成这样,可以解决. solved by myself. for those who need it:use a n ...
- [转]iview render函数常用总结(vue render函数)
原文地址:https://blog.csdn.net/weixin_43206949/article/details/89385550 iview 的render函数就是vue的render函数ivi ...
- 24V低压检测电路 - 低压检测电压(转)
24V低压检测电路 - 低压检测电压 参考: ADC采样工作原理详解 使用单片机的ADC采集电阻的分压 问题: 当ADC采集两个电阻分压后的电压的时候,ADC转换出来的电压值和万用表量出来的不一样差异 ...
- kafka window环境下使用(内置zookeeper)
下载 kafka 官网下载最新版本(已集成 zookeeper) 解压到 D 盘的 kafka_2.12-2.3.0 运行 zookeeper 执行 zookeeper 运行命令 D:\kafka_2 ...
- ES技巧
2, 统计字段b的不同值的数量 {"size":0,"aggs":{"distinct_colors":{"cardinality ...
- 〓经典文字MUD武侠游戏 我的江湖 〓
〓经典文字MUD武侠游戏 我的江湖 〓 我的江湖(FFLIB)基于地狱内核扩展,目前已扩展了很多实用功能! 我的江湖玩法 和掌心西游.书剑.东方故事.侠缘.武林等玩法大同小异 但扩展了更多好玩的玩法, ...
- CMDBuild部署教程
一.CMDBuild简介 CMDBuild是一个通过Web界面配置的CMDB系统.可以通过Web界面来进行建模.创建资产数据库,并处理相关的工作流程.CMDBuild可用于集中管理数据库模块和外部应用 ...
- 【并行计算-CUDA开发】GPU并行编程方法
转载自:http://blog.sina.com.cn/s/blog_a43b3cf2010157ph.html 编写利用GPU加速的并行程序有多种方法,归纳起来有三种: 1. 利用现有的G ...
- flutter本地环境的安装以及编辑器的配置
由于本文图片比较多,所有都缩小了不少,点击图片就可以放大看到原始图片 使用镜像 cmd打开终端,贴上以下代码,以加入到环境变量中,如果添加失败,可以手动添加 export PUB_HOSTED_URL ...
- Redis实现实时热点查询
Redis内存淘汰 定义: 指的是用户存储的一些键被可以被Redis主动地从实例中删除,从而产生读miss的情况 机制存在原因: Redis最常见的两种应用场景为缓存和持久存储 首先要明确的一个问题是 ...