利用Bilibili的开源库ijkplayer实现视频直播
2017-07-18 21:47
288 查看
利用Bilibili的开源库ijkplayer实现视频直播
最近研究视频直播的技术,起初了解了直播APP需要的技术体系,包括音视频的编码、解码、推流等,但对于在真实项目中最好是使用优秀的第三方框架来实现相关的功能,下面介绍下ijkplayer实现视频的播放解码等。第一步在GitHub上面下载ijkplayer的源码
这里是官方给出的在iOS上面构建的方式git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios cd ijkplayer-ios git checkout -B latest k0.8.1 ./init-ios.sh cd ios ./compile-ffmpeg.sh clean ./compile-ffmpeg.sh all
构建完成后,如图所示,有需要的可以到这里下载
第二步在项目中集成该框架
这里我是把IJKMdeiaPlayer制作成framework在项目中使用的,这样的缺点就是看不到源码,开发阶段建议直接使用框架。1.打开项目工程选择模拟器直接编译制作framework
说明: 1.设备选择模拟器或者真机是制作不同平台的framwork 2. 真机和模拟器分为Debug和Release版本
Debug和Release版本的切换操作
2.查看制作的framework
3.有时候测试阶段需要在模拟器和真机上测试,这时候就需要两个版本的framework,合并framework是个不错的选择
进入framework文件夹
// 合并framework lipo -create Debug-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Debug-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework // 查看framework信息 lipo -info IJKMediaFramework
将刚生成的IJKMediaFramework 拖入任意一个文件夹替换原来的IJKMediaFramework即可,新的IJKMediaFramework就合并好了
4.将IJKMediaFramework导入框架使用
编译使用报错,需要添加libz.tbd,libc++.tbd两个依赖包
5.利用框架加载直播画面
let options = IJKFFOptions.byDefault() // 硬解码 options?.setOptionIntValue(1, forKey: "videotoolbox", of: kIJKFFOptionCategoryPlayer) ijkPlayer = IJKFFMoviePlayerController(contentURLString: liveURLString, with: options) let width = UIScreen.main.bounds.width ijkPlayer?.view.bounds = CGRect(x: 0, y: 0, width: width, height: width * 3 / 4) ijkPlayer?.view.center = view.center view.addSubview(ijkPlayer!.view) ijkPlayer?.prepareToPlay()
实现效果如下:
相关文章推荐
- ijkplayer简单实现播放 ijkplayer是Bilibili基于ffmpeg开发并开源的轻量级视频播放器,支持播放本地网络视频,也支持流媒体播放。支持
- 利用开源项目实现采集卡/摄像头 支持H264高清视频直播
- 利用函数计算实现网络游戏或视频直播中的敏感词检测
- 利用函数计算实现网络游戏或视频直播中的敏感词检测
- 利用函数计算实现网络游戏或视频直播中的敏感词检测
- 视频直播业务解析与实现(下)
- 基于freeSWITCH的sip协议利用WebRTC 实现实时视频聊天
- 利用 3D touch 的“Peek and Pop”实现视频预览
- 收藏:视频网站(JavaEE+FFmpeg)/Nginx+ffmpeg实现流媒体直播点播系统
- 利用DirectShow实现对视频文件H264编码与解码基类
- 利用DecorView实现播放视频开灯/关灯效果和仿QQ消息提示框
- EasyRTMP+EasyDSS实现一套完整的紧急视频回传直播与存储回放方案
- 基于HLS(HTTP Live Streaming)的视频直播分析与实现
- Android利用递归实现上下分屏幕播放视频
- 基于http live streaming, 使用vlc + mediastreamsegmenter + apache 实现iOS视频直播
- 做视频直播时如何实现对观看直播的用户做登记?
- 利用VC++实现局域网实时视频传输
- 利用DirectShow实现对视频文件H264编码与解码基类 3
- 视频直播时做多场景切换(实现类似切换台的效果)
- 利用Mplayer 实现视频连拍