美文网首页IOS个人开发IT圈ios框架
B站开源播放框架ijkplayer(iOS版)使用教程

B站开源播放框架ijkplayer(iOS版)使用教程

作者: StarGazer_C | 来源:发表于2016-03-11 14:04 被阅读32326次

最近在关注直播这块儿,开始时直接用ffmpeg写了一个,写得比较烂,卡顿很严重,后来听说了B站开源播放框架ijkplayer,于是就去试试看这是链接 ,一用之下果然不错,逢人便向人安利,可总是有部分同学说看不懂、不会用。其实用法都在readme里写得很清楚了,只要照着做就行了。好吧,我知道其实是你们懒得看 -_-!, 那我就在这儿说说大概的步骤吧。

首先配置环境,需要安装 homebrew,git,yasm (需要ruby环境)

图片截自readme

然后把项目克隆到本地,下载并编译ffmpeg

图片截自readme

最后导入播放器并用Xcode打开

图片截自readme

这样ijkplayer的官方demo就可以运行了。

运行截图

那么重点来了,如何把ijkplayer集成到自己项目里呢,一种是像demo里那样整个工程引用,这里不再展开。另一种就是导入IJKMediaPlayer工程产生的framework包。

ijkplayer集成

打包时要注意,模拟器打的包只能在模拟器上用,真机运行的话需要用真机打包。分别用模拟器和真机打包之后可以得到两个包,再合并一下,就可以得到一个通用的包,我demo里的就是个通用包(Debug版)

真机和模拟器打成的包(Debug版)

经朋友提醒,我打的这两个都是Debug版的,正式使用的话最好打成Release版,打包过程一样,只需修改以下选项即可Product->Scheme->Edit Sceme

Release版打包修改

导入打好的包和其他依赖库,就可以仿照官方demo调用了,如果懒得写的话就像我一样,直接把ijkplayer里写好的拉到项目里直接用就行了

直播中

这里我要吐槽一下B站,网页版正在直播时把网络断掉,在播放器上右键,选切换站点,屏幕中间立马就出来一句:Video not found or access denied: http://XXXXXX  这样直接把调试语句显示在网页上真的没关系吗?

这是我的demo

相关文章

网友评论

  • 宁静1致远:运行系统demo,点击input URL输入http://video.myhaowai.cn/2017/12/21/4c1e32dd5179b538a5aa4a90afcf0c36.mp4 点击play,然后点击done,再点击play,来回几次,肯定有无法播放的情况出现,请问有遇到相同问题的吗?怎么解决?谢谢了。
    宁静1致远:官方demo
  • 指尖上的代码:楼主,用ijkPlayer框架还要什么配置才能支持avi,其他格式播放视频?
  • LeoZzz:为什么播放MPEG视频格式 的只有声音没有图像啊?按照官网 导出所有解码格式
  • 5729c2e51dfa:为什么我播放地址用rtmp://开头的就不行,报错IJKSDLGLView: setupDisplay not ready
  • 想象不到2019:楼主,请问下,你现在用最新的版本0.7.9, 编译生成的framework ,会有很多警告出现吗?
  • my我的:哥们 我们也是集成了这个 导入到项目里面 在使用的时候 was compiled with optimization - stepping may behave oddly; variables may not be available. 有这个错误崩溃了 这是什么情况 能讲解下子吗 谢谢了
  • 96770837c5ba:支持rtsp格式吗
  • A_rcher34:请问,可以设置缓存和缓存速度的接口吗
  • 杨鹏_小宝:如果在当前控制器我要切换两一个视频,ijkplayer是不是还要重新创建?
    Lionel_Messi:小宝,我现在也要切换视频源,请问你怎么解决的哦
  • 0570c2304446:请问 ijkplayer 这个框架 有没有点播功能?
  • 禁城九少:请问ijkplayer生成的IJKMediaFramework.framework在iOS7上可以使用么?自定义的动态库不是ios8之后才支持么?
  • 峰子1994:你好
    ijkplayer和ffmpeg有什么区别吗
    daybreak_:ijkPlayer基于ffmpeg的封装
  • 一悸木槿伤:合并了好几次都不成功 :sob:
  • 一悸木槿伤: :sob: 我合并了好几次都合并不了 大神求救啊
  • c6359d2e49b5:你好 我怎样添加 音频speex 这样解码格式 编译进去啊 多谢了
  • 848e33812d39:这个可以做推流 吗
  • Fionashow:你好,ijkplayer默认是软解吗?? 如何设置硬解呢?
  • 2ba3b79e6446:有个问题我不明白,编译ffmpeg是不是可以运行ijkplayerdemo,可是我没有编译为什么可以正常运行demo呢 ?
  • d9fde5aab67e:大神,如何播放https的协议sh init-ios-openssl.sh
    sh init-ios.sh

    cd ios
    ./compile-openssl.sh clean
    ./compile-ffmpeg.sh clean
    ./compile-openssl.sh all
    ./compile-ffmpeg.sh all

    是错误的
  • d9fde5aab67e:大神:您好!请教下,如何编译ios端支持https的ijk,我试了很多次都不可以,您能帮我编译给个思路吗?我按照安卓的不行,试了很多天了,目前市面上的都不支持https加密协议播放
  • a82aa8bb03b9:为啥http的不能播放
  • 程旭媛:请问为什么IJKVideoViewController代码里的这个类和头文件IJKMoviePlayerViewController虽然是同一个文件 为什么名字可以不一样呢?
  • Link913:/init-ios.sh 我的这个命令每次都执行到20就断掉了,大哥你能把你的ffmpeg下载好的ijkplayer-master打包发我一份吗?万分感谢,fanyang32012@icloud.com
  • Mr卢大大:#include "libavformat/avformat.h" not found 这个要怎么处理啊?
  • f1fe547dc0cf:楼主想问下 播放含中文的网址时会出现只有声音没有画面的情况 这个是什么原因?
    Link913:@Wulijian /init-ios.sh 我的这个命令每次都执行到20就断掉了,大哥你能把你的ffmpeg下载好的ijkplayer-master打包发我一份吗?万分感谢,fanyang32012@icloud.com
  • RichChane:楼主 这个B站的播放器并非开源吧 解码部分都封成.a了
  • nBonneNuit:大家用这个没有延迟吗?为什么我的延迟感觉很大 rtmp
    Link913:@nBonneNuit /init-ios.sh 我的这个命令每次都执行到20就断掉了,大哥你能把你的ffmpeg下载好的ijkplayer-master打包发我一份吗?万分感谢,fanyang32012@icloud.com
  • FerrariM:大神,问下,这个支持rtsp么?
  • 44074f73731a:我的为什么会出现
    ===================
    ijkmp_prepare_async()=0
    remove 'timeout' option for rtmp.
    No default whitelist set
    No default whitelist set
  • VoiderSun:为什么我cell跳进去播放后,返回就会崩溃,是不是返回要调用什么关闭播放方法呀?求大神赐教
  • 952625a28d0d:楼主 我用ijkplayer没有声音,怎么办啊。。
  • 9bd107adaafd:LZ我下了你的demo , 用了一个直播的URL 但是画面和音频 对应不上能解决么
  • jianshu_wl:按照 github 上面编译之前配置 config 文件夹里面的文件,以支持更多视频格式, 但是编译后还是播不了其它格式,比如 wmv, 编译之前我是按照"Before Build"里面的"If you prefer more codec/format"做的.
  • 鱼嘿蛮仁:大神。你的frameWork是不是改了dome里的一些东西再打包的。我播放自己拍摄的视频会出现绿条。用没改的dome的framework就不会。但是竖屏的播放出来变横屏。O(∩_∩)O谢谢解答!
  • 092a90adc13c:兄弟你真机运行时直播占用的CUP是多少啊?还有点播,谢谢啊
  • CodingSha:直接用你demo里打包好的文件可以吗?不太会搞
  • 孤独感爆棚:有个疑问,生成的framework所谓的的真机和模拟器的区别是不是,分别运行一下,然后把framework拷贝,是吧?
  • 菲式爱情:最后导入播放器并用Xcode打开 这一步没反应求教
  • 丶Destinyxl:请问您 打包的静态库 ffmpeg 是哪个版本的?
  • 丶Destinyxl:谢谢分享! 请问可以发一份 合并的包文件吗?
  • quua:请问
    您打包的时候,会报错吗
    ******************************
    ld: warning: ignoring file /Users/IJKMedia/IJKMediaFramework.framework/IJKMediaFramework, missing required architecture armv7 in file /Users/IJKMedia/IJKMediaFramework.framework/IJKMediaFramework (2 slices)
    Undefined symbols for architecture armv7:
    "_IJKMPMoviePlayerLoadStateDidChangeNotification", referenced from:
    -[OCOPMusic installMovieNotificationObservers:] in OCOPMusic.o
    "_OBJC_CLASS_$_IJKFFMoviePlayerController", referenced from:
    objc-class-ref in OCOPMusic.o
    ld: symbol(s) not found for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    ******************************

    运行没有问题,就是打包不了
    ಥ_ಥ 头痛
    尘埃_落定:@quua 我是接手的别人的项目,原来他不支持armv7 :smile: 而打包选了。就报错了
    quua:@尘埃_落定 重新编译 IJKMediaFramework 这个就好了..
    尘埃_落定:@quua 大兄弟,我也遇到这问题了,你怎么解决的
  • xclidongbo:你写的demo,有问题,只支持x86_64. 在arm64,arm7,arm7s下会有错误.
  • xclidongbo:怎样将整个工程引入到demo?
  • 26c2e0608895:请问下 播放时候切换到后台 然后在切换到前台 延迟会累加。这个怎么解决呢。rtmp
    Lionel_Messi:@就叫香克斯 我给你发间信了哦,来来来
    26c2e0608895:@Lionel_Messi 哈哈 都忘了怎么解决了 最终是解决了 方法很多~
    Lionel_Messi:香克斯,你解决这个问题了嘛
  • 旁蟹棒:我这里播放的是本地的MP4文件还是只有声音,用quicktime是可以正常播放的
    StarGazer_C:@旁蟹棒 我的demo里试了,你下下来看看
  • 旁蟹棒:谢谢分享~麻烦问下我用ijk播放本地的文件只有声音,没有画面,这是什么情况呢?
    旁蟹棒:@StarGazer_C 好👌
    StarGazer_C:@旁蟹棒 我试了一下,没有问题啊,你换个资源再添加一次试试
  • Sanchain:楼主您好,我在lipo -info 合并后的静态库, 没有发现有armv7s的,只有armv7, arm64, i386, x86_64这四个。怎么样才能让合并后的静态库支持armv7s呢?万分感谢!!
    StarGazer_C:@Sanchain 额,没有和环信一起用过,真要是静态库内部有重复的话估计不好解决
    Sanchain:@StarGazer_C 谢谢。这个问题解决好了。我在集成了环信SDK的项目里使用ijkplayer静态库时,编译报错,提示说是环信的静态库与ijkplayer静态库编译时有重复的文件,楼主遇到过吗?
    StarGazer_C:@Sanchain Xcode6以后默认的Architectures不包含armv7s.想要生成的库支持armv7s,把armv7s添加到Architectures中,重新生成Framework即可 具体可以看http://www.cocoachina.com/ios/20141126/10322.html
  • Sanchain:楼主辛苦
  • Shumin_Wu:build iOS 步骤不对吧 github上面 最新版本已经没有 这个ijkplayer-ios文件夹了。而是单独放到了一个ios文件夹下。而且编译文件放在了 ijkplayer文件夹里面。
    Shumin_Wu:@StarGazer_C 了解 :joy:
    StarGazer_C:把项目克隆到本地时可以指定路径,文件夹随意命名,直接下载的话就是ijkplayer了
  • sun_sx:解码能力不错 可惜原生支持的视频格式并不多
  • ryugaku:ヽ(  ̄д ̄;)ノ 看起来不错
  • Shumin_Wu:支持
  • Fang_OSH:楼主我想复制下你截图的内容怎么办?
    StarGazer_C:@疾风_15 图片内容出自ijplayer的Readme 开头有链接的

本文标题:B站开源播放框架ijkplayer(iOS版)使用教程

本文链接:https://www.haomeiwen.com/subject/quwqhttx.html