推流
- LiveVideoCoreSDK
框架提供IOS苹果手机的RTMP推流填写RTMP服务地址,直接就可以进行推流,SDK下载后简单的工程配置后能直接运行,实现了美颜直播和滤镜功能,基于OpenGL,前后摄像头随时切换,提供RTMP连接状态的回调。
这个框架是国内比较早的一款推流框架有不少在使用这个SDK,功能非常齐全,作者也比较牛,用来学习推流采集相关内容非常好,但是集成到工程中有些困难(对于我来说)。总的来说这是一款非常厉害的推流SDK,几乎全部使用C++写的,编译效率非常好,如果有实力的话推荐使用这个框架来做自己项目的推流端。
- 可读性比较好的推流LFLiveKit
框架支持RTMP(Real Time Messaging Protocol ):实时消息传输协议,Adobe公司的。
HlS (HTTP Live Streaming) :苹果自家的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。
推荐这个框架第一是因为它主要使用OC写的,剩下的用C语言写的,框架文件十分清晰,这对不精通C++的初学者提供了很大的便利,并且拓展性非常强,支持动态切换码率功能,支持美颜功能
拉流
安装构建必要的环境
# install homebrew, git, yasm
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm
构建
下载ffmpeg和编译ffmpeg会花费比较长的时间,可以去泡一杯咖啡:)
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
git checkout -B latest k0.4.4.1
./init-ios.sh
cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
运行
用Xcode打开ios/IJKMediaDemo/IJKMediaDemo.xcodeproj,验证是否构建正确
打包 IJKMediaFrame.framework
要想将ijkplayer集成到项目中,有两种方法:
- README 中的做法,这个方法比较麻烦,不推荐
- 打包 IJKMediaFrame.framework框架,就是把 ijkplayer 打包成 framework导入工程中使用。下面开始介绍如何打包IJKMediaPlayer.framework,按照下面步骤一步一步做:
1、首先,打开工程 IJKMediaPlayer.xcodeproj,位置如下:
打开后,如下图:
2、设置工程的 scheme
设置好 scheme 后,分别选择真机模式和模拟器进行编译,编译完成后,进入 Finder,如下图
进入 Finder 后,可以看到,有真机和模拟器两个版本的编译结果,如下图:
3、合并真机和模拟器版本的framework
注意: 不要合错了,要合并的是这个文件,如下图:
打开终端,进行合并,命令行的格式如下:
lipo -create "真机版本路径" "模拟器版本路径" -output "合并后的文件路径"
合并后,如下图:
4、用合并生成的 IJKMediaFramework 替换掉原来的IJKMediaFramework
图中的1、2两步完成后,蓝色框中的那个IJKMediaFramework.framework文件就是我们所需要的框架了,可以复制出来,稍后我们需要导入项目中使用。
那么,到此,用于 调试(Debug)的 IJKMediaFramework.framework就制作完成了。
用于发布(Release)的 IJKMediaFramework.framework 制作过程是类似的,就不再介绍。
已经将两种模式下的 IJKMediaFramework.framework 上传至网盘,
网盘分享链接: https://page13.ctfile.com/dir/14174113-21635467-cd9f24/
使用打包好的 IJKMediaFramework.framework 将 ijkplayer 集成到项目中
1、 新建工程,导入合并后的 IJKMediaFramework.framework
调试的话,拖入调试版的 ijkplayer 库
发布的话,拖入发布版的 ijkplayer 库
2、查看 ijkplayer 的 README,导入依赖库
如图,导入依赖库完成
3、测试一下是否集成成功
在ViewController.m中进行测试,首先导入IJKMediaFramework.h头文件,编译一下,看有没有报错,如果没有报错,就说明集成成功了。
经过编译,证实集成成功了。
经测试:iOS 10 以上的系统才能播放,否则崩溃了。