笔谈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一般是 ...
随机推荐
- Python中的日志记录方案-logging模块&loguru模块
原文链接 原创: 崔庆才 在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样.在使用时我们需要配置一些 Handler.Formatter ...
- pauseable 库
pauseable.js https://www.npmjs.com/package/pauseable Pauseable allows you to pause event emitters, t ...
- Qt开发经验小技巧61-70
很多人问Qt嵌入式平台用哪个好,这里统一回答(当前时间节点2018年):imx6+335x比较稳定,性能高就用RK3288 RK3399,便宜的话就用全志H3,玩一玩可以用树莓派香橙派. 对于大段的注 ...
- Mac mysql 忘记root密码的解决方法
1.执行命令以安全模式启动MySQL cd /usr/local/mysql/bin sudo ./mysqld_safe --skip-grant-tables 2.同上面目录下执行 '\) whe ...
- VC++ 学习笔记(六):简单C++
到现在,我觉得终于找到学习和使用C++的基本原则了——务必简单.将其看成一个带类的C,或者将其看做标准库下的C++. C++太复杂——其实这种复杂性,所有语言都有,只是多数语言都隐藏了这种复杂性,只有 ...
- 一文看懂JS继承
继承是OOP中大家最喜欢谈论的内容之一,一般来说,继承都两种方式:接口继承和实现继承而JavaScript中没有接口继承需要的方法,因此只能依靠实现继承.在讲继承的实现之前,我们首先来回顾一下什么是继 ...
- understanding backpropagation
几个有助于加深对反向传播算法直观理解的网页,包括普通前向神经网络,卷积神经网络以及利用BP对一般性函数求导 A Visual Explanation of the Back Propagation A ...
- 浅析 Java 中的继承和重写
浅析 Java 中的继承和重写 Java 中的构造方法不能被继承. Java 中 static 修饰的方法可以被继承,但不能被子类重写. Java 中 final 修饰方法不允许被子类重写,但是可以被 ...
- CentOS7-Docker 安装 Gitlab
官方教程 https://docs.gitlab.com/omnibus/docker/ 搜索镜像 [root@master ~]# docker search gitlab 拉取镜像 [root@m ...
- [转帖]从0开始的高并发(一)--- Zookeeper的基础概念
从0开始的高并发(一)--- Zookeeper的基础概念 https://juejin.im/post/5d0bd358e51d45105e0212db 前言 前面几篇以spring作为主题也是有些 ...