LKLiveTool
直播(swift与OC混编)
Install / Use
/learn @HectorLiuk/LKLiveToolREADME
运行此程序报错(报缺少IJKMediaFramework.framework的错误),请下载IJKMediaFramework.framework解压IJKMediaFramework.framework.zip后直接拖进工程运行即可。
LKLiveTool
(瞅瞅就行swift版本太老了已经懒得跟新了 2017.10.12 。。。。。。)
此APP使用OC和Swift混编,结构使用SB搭建更能直观展现项目结构。其中IJKMediaFramework和pili-librtmp使用OC桥接swift。通过抓取映客的接口实现直播,推流使用的搭建本地服务器实现推流。没有完全照搬映客APP,主要是为了熟悉Swift下常用三方库的使用。所以此App不是高仿只是Demo但是基本直播功能均已实现。
最近公司活较少经常跟新后期也会不定时添加新功能。
在写之前参考了很多前辈的代码以及对调研直播技术,对想写直播同学们提个建议一定要对整体有一个大概流程了解。本人在不断挖坑填坑中(下方有关直播资料链接地址)。
技术点介绍:
直播可以分为:采集,处理(美颜...),编码,传输, 服务器处理,解码渲染
- 采集: iOS系统因为软硬件适配性比较好, 只要能熟练运用三方库就好。
- 处理: 美颜,模糊效果, 水印...,直接运用GPUImage。
- 编码: 重难点在于要在分辨率,帧率,码率,GOP等参数设计上找到最佳平衡点I,P,B帧和PTS,DTS的关系,GOP相关。
- 传输: 各大厂商都会提供SDK,网易直播云、七牛、腾讯、百度、新浪。使用直播云的就是能快速上线App,功能十分齐全,可以播放器和推流端,集成速度快就是流量费太贵了。
- 服务器处理: 让推送上来的流适配各个平台各种不同的协议, 比如:RTMP,HLS,FLV...
- 解码渲染: 从服务器获取数据播放,这里就会遇到软硬解码问题区别,还有音画同步。
两大模块
1. 播放端
-
播放器采用ijkplayer,是基于FFmpeg的跨平台播放器针对RTMP优化,开源项目已经被多个App使用,其中映客、美拍和斗鱼使用了。这是已经打包好的直接导入就好IJKMediaFramework.framework
-
接口采用映客的只支持刷新(最置顶5条),没有抓到加载接口。。。。。。
-
礼物已经有许多造好的轮子直接拿过来用就好,还有一些模仿着写。 弹幕。
-
关于
ijkplayer方法使用在Demo中已经有详细注释。
2. 采集端
-
技术点特别多但是三方框架方法已经写好直接调用就好注释还是中文的。LFLiveKit
-
关于本地服务器的搭建快速集成iOS基于RTMP的视频推流
-
美颜模糊处理。
-
视频质量,分辨率,帧数,码率
<img src="https://github.com/HectorLiuk/LKLiveTool/blob/master/Show9.PNG" width="200">
请下载Demo自己去尝试
链接
Related Skills
node-connect
343.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
92.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
