iOS中集成ijkplayer视频直播框架

摘要:
ijkplayer是一款做视频直播的框架,基于ffmpeg,支持Android和iOS,网上也有很多集成说明,但是个人觉得还是不够详细,在这里详细的讲一下在iOS中如何集成ijkplayer,即便以前从没有接触过,按着下面做也可以集成成功!香港卫视直播画面至此,ijkplayer集成完毕!

ijkplayer 是一款做视频直播的框架,基于ffmpeg,支持 Android 和 iOS,网上也有很多集成说明,但是个人觉得还是不够详细,在这里详细的讲一下在 iOS 中如何集成ijkplayer,即便以前从没有接触过,按着下面做也可以集成成功!

一、下载ijkplayer

ijkplayer下载地址:https://github.com/Bilibili/ijkplayer

下载完成后解压,解压后文件夹内部目录如下图:

iOS中集成ijkplayer视频直播框架第1张

二、编译 ijkplayer

说是编译 ijkplayer,其实是编译 ffmpeg,在这里我们已经下载好了ijkplayer,所以 github 上README.md中的Build iOS那一步中有一些步骤是不需要的。

下面开始一步一步编译:

1、打开终端,cd 到jkplayer-master文件夹中,也就是下载完解压后的文件夹,如下图:

iOS中集成ijkplayer视频直播框架第2张

进入到这个文件夹

2、执行命令行./init-ios.sh,这一步是去下载 ffmpeg 的,时间会久一点,耐心等一下。如下图:

iOS中集成ijkplayer视频直播框架第3张

3、在第2步中下载完成后,执行cd ios,也就是进入到 ios目录中,如下图:

iOS中集成ijkplayer视频直播框架第4张

进入ios 文件夹

4、进入 ios 文件夹后, 在终端依次执行./compile-ffmpeg.sh clean./compile-ffmpeg.sh all命令,编译 ffmpeg,也就是README.md中这两步,如下图:

iOS中集成ijkplayer视频直播框架第5张

编译 ffmpeg

编译时间较久, 耐心等待一下。

三、打包IJKMediaFramework.framework框架

集成 ijkplayer 有两种方法:
一种方法是按照IJKMediaDemo工程中那样, 直接导入工程IJKMediaPlayer.xcodeproj,在这里不做介绍,如下图:

iOS中集成ijkplayer视频直播框架第6张

导入IJKMediaPlayer.xcodeproj

第二种集成方法是把 ijkplayer 打包成framework导入工程中使用。下面开始介绍如何打包IJKMediaFramework.framework,按下面步骤开始一步一步做:

1、首先打开工程IJKMediaPlayer.xcodeproj,位置如下图:

iOS中集成ijkplayer视频直播框架第7张

打开后是这样的,如下图:

iOS中集成ijkplayer视频直播框架第8张

要打包的 framework 工程

2、工程打开后设置工程的 scheme,具体步骤如下图:

iOS中集成ijkplayer视频直播框架第9张

第一步

iOS中集成ijkplayer视频直播框架第10张

第二步

3、设置好 scheme 后,分别选择真机和模拟器进行编译,编译完成后,进入 Finder,如下图:

iOS中集成ijkplayer视频直播框架第11张

进入 Finder 后,可以看到有真机和模拟器两个版本的编译结果,如下图:

iOS中集成ijkplayer视频直播框架第12张

运行后生成的文件

下面开始合并真机和模拟器版本的 framework,注意不要合并错了,合并的是这个文件,如下图:

iOS中集成ijkplayer视频直播框架第13张

合并真机和模拟器文件中的这个文件

打开终端,进行合并,命令行具体格式为:

lipo -create "真机版本路径" "模拟器版本路径" -output "合并后的文件路径"

合并后如下图:

iOS中集成ijkplayer视频直播框架第14张

合并生成后的文件

下面很重要,需要用合并后的IJKMediaFramework把原来的IJKMediaFramework替换掉。如下图:

iOS中集成ijkplayer视频直播框架第15张

用合并生成的文件替换原来的文件

上图中的1、2两步完成后,绿色框住的那个IJKMediaFramework.framework文件就是我们需要的框架了,可以复制出来,稍后我们需要导入工程使用。

四、iOS工程中集成ijkplayer

新建工程,导入合并后的IJKMediaFramework.framework以及相关依赖框架以及相关依赖框架,如下图:

iOS中集成ijkplayer视频直播框架第16张

导入 framework及依赖框架

导入框架后,在ViewController.m进行测试,首先导入IJKMediaFramework.h头文件,编译看有没有错,如果没有错说明集成成功。

接着开始在ViewController.m文件中使用IJKMediaFramework框架进行测试使用,写一个简单的直播视频进行测试,在这里看一下运行后的结果,后面会放上 Demo 供下载。

iOS中集成ijkplayer视频直播框架第17张

香港卫视直播画面

至此,ijkplayer 集成完毕!

Demo地址:https://coding.net/u/wanglei123/p/ijkplayerDemo/git

免责声明:文章转载自《iOS中集成ijkplayer视频直播框架》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[leetcode 周赛 159] 1234 替换子串等到平衡字符串为什么需要链路追踪下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Django 框架入门篇(安装与创建项目)

什么是Django框架? 官方定义:Django是一个高级Python Web框架,鼓励快速开发和简洁实用的设计。它由经验丰富的开发人员构建,可以解决大部分Web开发的麻烦,因此您可以专注于编写应用程序而无需重复造轮子。 Django is a high-level Python Web framework that encourages rapid de...

FFMPEG学习----遍历所支持的解码器

下面简单介绍一下遍历ffmpeg中的解码器信息的方法(这些解码器以一个链表的形式存储): 1.注册所有编解码器:av_register_all(); 2.声明一个AVCodec类型的指针,比如说AVCodec* p; 3.调用av_codec_next()函数,即可获得指向链表下一个解码器的指针,循环往复可以获得所有解码器的信息。注意,如果想要获得指...

uni-app移动端开发中ios/安卓--坑和经验总结

1、 ios new时间对象,需要用逗号隔开传日期的方式, 不支持 new Date('2019-03-01 08:00:00') 格式; 支持以下两种方式: 2、 ios个别版本对fixed的属性的支持性不好,需要用absolute替代; 3、 input 的 placeholder会出现文本位置偏上的时候             input 的pl...

ffmpeg 使用 gdb 调试相关技巧

本文说明了,在ffmpeg二次开发或调用库的过程,如何借助于ffmpeg源码进行调试。 注:ffmpeg版本是4.0。 1. 编写代码 编写将pcm数据转换为mp2的代码 pcm_to_mp2.c #include <libavformat/avformat.h> #include <libavcodec/avcodec.h> #i...

asp.net core 系列 19 EFCore介绍

一.概述 目前最新的EF Core版本是3.0,最稳定的EF Core版本是2.2。EF Core 的计划与 .NET Core以及 ASP.NET Core 版本同步。EF Core 是一个 .NET Standard库,使用 EF Core 开发面向 .NET Core 的应用。生成 .NET Core 应用需要安装 .NET Core SDK。最后,...

二、实践与视频解决方案

一、视频解决方案 说明: 公司下户拍摄视频,上传存储一直用的优酷云(视频压缩、解码、播放)当然还支持水印。 现在场景,我们公司内部买服务器,下户拍摄视频上传到我们自己服务内,需要解决的问题,下户拍摄视频很大,需要解决的问题: 1、(下户视频过大)需要压缩处理、 2、(视频格式、播放帧处理)解码格式 3、(提供url)提供接口让内部人员可以播放  解决方案1...