美文网首页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