美文网首页IOS个人开发iOS技术iOS进阶
【如何快速的开发一个完整的iOS直播app】(播放篇)

【如何快速的开发一个完整的iOS直播app】(播放篇)

作者: 袁峥 | 来源:发表于2016-08-30 19:50 被阅读56138次

    前言

    在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇)

    开发一款直播app,集成ijkplayer成功后,就算完成直播功能一半的工程了,只要有拉流url,就能播放直播啦

    本篇主要讲解的是直播app中,需要用到的一个很重要的开源框架ijkplayer,然后集成这个框架可能对大多数初学者还是比较有难度的,所以本篇主要教你解决集成【ijkplayer】遇见的各种坑

    很多文章,可能讲解的是如何做,我比较注重讲解为什么这样做,大家有什么不明白,还可以多多提出来

    如果喜欢我的文章,可以关注我微博:袁峥Seemygo

    效果

    直播.gif

    一、基本知识

    README.md文件:框架的描述文件,描述这个框架怎么使用

    编译语言:程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要翻译,所以编译型语言的程序执行效率高,比如OC,C,C++

    解释性语言:解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低

    解释性语言执行和编译语言执行的区别

    • 解释性语言一行一行的解析,如果有错误,就不会执行,直接执行下一行。
    • 编译语言,只要有错,就不能编译,一行都不能执行。

    脚本语言:属于解析语言,必须通过解释器解析,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。

    • python:脚本语言,适合网络应用程序的开发,有利于开发效率,现在显得越来越强大
    • PHP:服务器端脚本语言,适合做动态网站
    • JS:作为客户端的脚本语言,在浏览中解释执行,
    • shell:操作系统脚本语言,一般指Unix/Linux中使用的命令行
    • 编译语言,执行文件是二进制。脚本语言是解释执行的,执行文件是文本

    shell解释器:shell是一个命令行解释器,相当于windows的cmd,处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户.

    • 默认Unix都有shell,OS基于Unix,因此OS自带shell。

    bash: bash是一种shell解释器版本,shell有很多种版本,就像人,也分不同国家的人。

    • 牛程序员看到不爽的Shell解释器,就会自己重新写一套,慢慢形成了一些标准,常用的Shell解释器有这么几种,sh、bash、csh等

    shell:通常我们说的shell,指的是shell脚本语言,而不是shell解释器。

    • 在编写shell时,第一行一定要指明系统需要哪种shell解释器解释你的shell脚本,如:#! /bin/bash,使用bash解析脚本语言
    • 什么时候使用shell命令,比如有些系统命令经常需要用到,可以把命令封装到一个脚本文件,以后就不用再敲一遍了,直接执行脚本语言。
    • 比如ijkplayer,就用脚本文件下载ffmpeg,因为下载ffmpeg需要执行很多命令,全部封装到脚本文件中。
    • 在导入一些第三方框架的时候,经常需要用到一些命令,所以一般都会封装到一个脚本文件中,以后只要执行脚本,就会自动执行集成第三方框架的命令。

    sh:sheel脚本文件后缀名

    二、下载ijkPlayer

    • 去到B站得github主页,找到ijkplayer项目,下载源码 ijkplayer下载地址
    • 打开Demo,查看用法,一般学习第三方库,都是先查看Demo
      Snip20160825_4.png

    三、编译ijkPlayer的步骤

    1、找到ijkPlayerMediaDemo并运行

    • 提示'libavformat/avformat.h' file not found
    bug1.png

    原因:因为libavformat是ffmpeg中的库,而ijkplayer是基于ffmpeg这个库的,因此需要导入ffmpeg

    解决:查看ijkplayer的README.md,一般都会有说明。

    执行脚本.png

    init-ios.sh脚本的作用:下载ffmpeg源码

    如何执行init-ios.sh脚本文件

    • 步骤一:找到init-ios.sh脚本文件
    找到init-ios.sh文件.png
    • 步骤二:打开终端,cd进入到ijkplayer-master的目录中
    进入init-ios.sh目录.png
    • 注意是 cd 这个文件夹
    cd ijkplayer-master.png
    • 步骤三:输入./init-ios.sh,就会执行当前脚本了。
    执行init-ios.sh.png
    • 执行完脚本后,就会发现ijkplayer中有ffmpeg
    执行脚本后.png

    2、下载好ffmpeg源码后,再次运行Demo

    • 发现还是报'libavformat/avformat.h' file not found错误
    • 原因:执行init-ios.sh,仅仅是下载源码,但是源码并没有参与编译,需要把源码编译成.a文件
      • Demo依赖于IJKMediaPlayer库
    Demo源码.png
    • 打开 IJKMediaPlayer库,查看下源码
    IJKMediaPlayer工程位置.png
    • 打开 IJKMediaPlayer库


      IJKMediaPlayer源码.png
    • 右击,发现FFMPEG中的库都是红的,表示不存在


      Snip20160829_23.png
    • 解决:查看ijkplayer的README.md

    编译ffmpeg.png

    编译ffmpeg库

    • 步骤一:进入到脚本文件的目录下
      cd ios.png
    • 步骤二:执行./compile-ffmpeg.sh clean
      • 步骤二功能:删除一些文件和文件夹,为编译ffmpeg.sh做准备,在编译ffmpeg.sh的时候,会自动创建刚刚删除的那些文件,为避免文件名冲突,因此在编译ffmpeg.sh之前先删除等会会自动创建的文件夹或者文件
    Snip20160828_19.png
    • 步骤三:执行./compile-ffmpeg.sh all,真正的编译各个平台的ffmpeg库,并生成所以平台的通用库.
    执行./compile-ffmpeg.sh all

    执行compile-ffmpeg.sh all前

    编译前.png

    执行compile-ffmpeg.sh all后

    编译后.png

    3.再次运行Demo,就能成功了,因为IJKMediaPlayer库获取到ffmpeg库了

    • 编译完ffmpeg后,IJKMediaPlayer库中显示


      成功获取到ffmpeg库.png
    • cmd+r,Demo运行成功

    Demo运行成功.png

    四、如何集成到ijkplayer到自己的项目中

    • 注意:ijkplayerREADME中的方法比较麻烦,不方便携带,不推荐。
    Snip20160830_9.png

    1.推荐自己把IJKMediaPlayer打包成静态库,在导入到自己的项目中。

    • 如何打包,请参考,iOS中集成ijkplayer视频直播框架,写的非常不错,就不一一详细介绍了,但是只有发布版本的库
    • 我自己打包了ijkplayer两个版本库,分别用于调试和发布(DEBUG和Release),点击下载
    • 由于文件太大上传不了GitHUb,就上传到百度云了

    2.直接把ijkplayer库拖入到自己的工程中,

    • 调试的话,拖入调试版本的ijkplayer库,发布的话,拖入发布版本的ijkplayer库
    Snip20160829_5.png

    3.导入ijkplayer依赖的库,具体可以查看ijkplayer的README

    Snip20160829_6.png Snip20160829_7.png

    五、使用ijkplayer直播

    1.ijkplayer用法简介

    • ijkplayer用法比较简单,其实只要有直播地址,就能直播了
    • 注意:最好真机测试,模拟器测试比较卡,不流畅,真机就没有问题了

    2.抓取数据

    - (void)loadData
    {
        // 映客数据url
        NSString *urlStr = @"http://116.211.167.106/api/live/aggregation?uid=133825214&interest=1";
    
        // 请求数据
        AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
        mgr.responseSerializer = [AFJSONResponseSerializer serializer];
        mgr.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", nil];
        [mgr GET:urlStr parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSDictionary * _Nullable responseObject) {
            
            _lives = [YZLiveItem mj_objectArrayWithKeyValuesArray:responseObject[@"lives"]];
    
            [_tableView reloadData];
            
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            
            NSLog(@"%@",error);
            
        }];
    }
    

    3.获取拉流url,直播

    • IJKFFMoviePlayerController:用来做直播的类
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        self.view.backgroundColor = [UIColor whiteColor];
        
        // 设置直播占位图片
        NSURL *imageUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://img.meelive.cn/%@",_live.creator.portrait]];
        [self.imageView sd_setImageWithURL:imageUrl placeholderImage:nil];
        
        // 拉流地址
        NSURL *url = [NSURL URLWithString:_live.stream_addr];
        
        // 创建IJKFFMoviePlayerController:专门用来直播,传入拉流地址就好了
        IJKFFMoviePlayerController *playerVc = [[IJKFFMoviePlayerController alloc] initWithContentURL:url withOptions:nil];
        
        // 准备播放
        [playerVc prepareToPlay];
        
        // 强引用,反正被销毁
        _player = playerVc;
        
        playerVc.view.frame = [UIScreen mainScreen].bounds;
        
        [self.view insertSubview:playerVc.view atIndex:1];
    
    }
    
    

    4.结束播放

    • 界面不播放,一定要记得结束播放,否则会报内存溢出
    内存bug.png
    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        
        // 界面消失,一定要记得停止播放
        [_player pause];
        [_player stop];
    }
    
    

    结束语

    后续还会更新更多有关直播的资料,希望做到教会每一个朋友从零开始做一款直播app,并且Demo也会慢慢完善.
    Demo点击下载

    • 由于FFMPEG库比较大,大概100M。
    • 本来想自己上传所有代码了,上传了1个小时,还没成功,就放弃了。
    • 提供另外一种方案,需要你们自己导入IJKPlayer库

    具体步骤:

    • 下载Demo后,打开YZLiveApp.xcworkspace问题
    打开YZLiveApp.xcworkspace问题
    • pod install就能解决
    Snip20160830_12.png
    • 下载jkplayer库,点击下载
    • 把jkplayer直接拖入到与Classes同一级目录下,直接运行程序,就能成功了
    拖入ijkplayer到与Classes同一级目录下.png
    • 注意不需要打开工程,把jkplayer拖入到工程中,而是直接把jkplayer库拷贝到与Classes同一级目录下就可以了。
    • 错误示范:不要向下面这样操作
    Snip20160830_14.png

    相关文章

      网友评论

      • Maxiu:pod 'ijkplayer' 导入的也需要编译ijkPlayer这些步骤吗?
      • Marsal丶:新版本xcode会./compile-ffmpeg.sh all会报
        ./libavutil/arm/asm.S:50:9: error: unknown directive
        .arch armv7-a
        解决方法:
        在 compile-ffmpeg.sh 中将FF_ALL_ARCHS_IOS8_SDK="armv7 i386 x86_64"
        修改为:FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
        b2efe7751b24:感谢!!
        因为太有钱:不过这里修改的话 用真机运行的话 会在 config.h
        armv7/config.h 找不到的错误

        # if defined(__ARM_ARCH_7S__)
        # include "armv7s/config.h"
        # elif defined(__ARM_ARCH)
        # if __ARM_ARCH == 7
        # include "arm64/config.h"
        # else
        # error Unsupport ARM architecture
        # endif
        # else
        # error Unsupport ARM architecture
        # endif

        我在里边也修改了下 才能运行 不知道会不会出现其他问题
        因为太有钱:正解!
      • 管家頗:两个版本库都不能用了, 直接崩溃
      • 68f107f65b8e:请教下,ijkPlayer可以播放rtp/udp流吗?
      • whcckj:袁哥 编译的时候出现问题显示C compiler test failed.求解
        追沐:怎么解决的?
      • 爱勤海之旅:demo里面没有东西呀
      • coder_my:嗨,峥峥大神知道这个问题怎么解决吗?这个是IJKMediaDemo运行问题
        ld: library not found for -lcrypto
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
        每日总结:@温暖的阳光_5353 lcrypto就是libcrypto.a这个库,执行openssl的初始化和编译sh就能得到了
        温暖的阳光_5353:解决了吗?我也遇到这个问题了
      • f55640ef1c25:峥哥我按照你的教程做的报错,这是什么问题!
        I===== custom modules begin =====
        register demuxer : ijklivehook
        ===== custom modules end =====
        av_version_info: ff3.1--ijk0.6.0--20160718--001
        ijkmp_set_inject_opaque(0x7ff5477136d0)
        ijkmp_set_inject_opaque()=void
        2018-01-04 16:49:28.942604+0800 bilibili[6448:2284590] OK setup GL
        ijkmp_ios_set_view(glView=0x7ff54761cdf0)
        ijkmp_ios_set_view(glView=0x7ff54761cdf0)=void
        ijkmp_set_data_source(url="http://qqpull.inke.cn/live/1515052239109266.flvikDnsOp=1&ikHost=tx&ikOp=0&codecInfo=8192&ikMinBuf=3000&ikMaxBuf=8000&ikSlowRate=0.9&ikFastRate=1.1&dpSrc=6";)
        ijkmp_set_data_source(url="http://qqpull.inke.cn/live/1515052239109266.flvikDnsOp=1&ikHost=tx&ikOp=0&codecInfo=8192&ikMinBuf=3000&ikMaxBuf=8000&ikSlowRate=0.9&ikFastRate=1.1&dpSrc=6";)=0
        ijkmp_prepare_async()
        ijkmp_prepare_async()=0
        2018-01-04 16:49:28.978713+0800 bilibili[6448:2284590] invalidateRenderBuffer
        2018-01-04 16:49:28.978843+0800 bilibili[6448:2285070] IJKSDLGLView: setupDisplay not ready
      • leeyyl:写的很详细,赞👍
      • 牛牛囧囧:执行出错 求指教

        hahadeMacBook-Pro:ios Robin$ ./compile-ffmpeg.sh all
        ====================
        [*] check xcode version
        ====================
        FF_ALL_ARCHS = armv7 arm64 i386 x86_64
        ====================
        [*] check host
        ====================
        FF_ARCH=armv7
        FF_BUILD_OPT=
        tools/do-compile-ffmpeg.sh: line 53: /Users/haha/Desktop/ijkplayer-master: No such file or directory
      • 指尖上的代码:峥哥,用ijkPlayer框架我播放avi格式不行,还要怎么配置的?
      • b4823c9344d1:./compile-ffmpeg.sh all执行出错/config/module.sh: line 1: module-lite.sh: command not found命令找不到怎么回事啊
        DroisAndEthan:先执行./compile-ffmpeg.sh clean再./compile-ffmpeg.sh all命令
      • 大地豪情:你好,楼主,怎么联系你呢,方便留你的联系方式给我妈 ?或者加我微信13905050845
      • 平平无奇DeBug:你好,我在appdelegate的根控制器的viewdidload中,添加了下面的代码,
        NSString *flv = @"http://pull2.inke.cn/live/1509344911708023.flv?ikHost=ws&ikOp=1&codecInfo=8192";;
        IJKFFMoviePlayerController *moviePlayer = [[IJKFFMoviePlayerController alloc] initWithContentURLString:flv withOptions:nil];
        moviePlayer.view.frame = [[UIScreen mainScreen] bounds];
        [moviePlayer prepareToPlay];
        _moviePlayer = moviePlayer;
        [self.view insertSubview:moviePlayer.view atIndex:1];
        只有声音没有画面,知道是什么问题吗?
      • a2f037f7bfbb:老师你好,我想请问下,播放的时候报了一下错误了,网上的答案也没办法解决我的问题,感谢
        <项目名称> was compiled with optimization - stepping may behave oddly; variables may not be available.
      • 沐浴汐:问题超低级的问题,有了jkplayer这个都不要用三方sdk了吗?
      • 免免的酸菜鱼:这个ijk的静态库为什么不能播放avi格式的视频?
      • Peter_song:厉害厉害厉害
      • me007:为什么会有这么牛逼的存在
      • 7a8b4e9c00b3:rtsp的播放不了·
      • iDog:是在下输了
      • 暮雨云归_9911:赞一个!
      • 未来行者:还需要带入一个库libc++.tbd,才行
      • 不必luo嗦:你好,按照你的方法操作后,编译出现Apple Match-O Linker(Id)error.请问该怎么解决
      • 不必luo嗦:您好,请问斗鱼的拉流地址改怎么用花瓶抓,我没抓到?
        ZhangCc_:百度谷歌好吗?
      • Sanchain:谢谢大神的分享,66666
      • 嘴爷:峥哥云盘的下载不动,搜索了个能下载的链接,共享下
        https://coding.net/u/wanglei123/p/ijkplayerDemo/git
      • 5729c2e51dfa:为什么我播放地址用rtmp://开头的就不行,报错IJKSDLGLView: setupDisplay not ready
      • FicowShen:给牛人点赞!
      • 7a0ee6b9a1a5:大神 我用ijk播放器 播放m3u8文件,没有声音 这是为什么呢? 播放地址 http://119.80.56.168:91/119/119.m3u8
      • 郑明明:老师好!
      • 郑明明:真的很棒的!
      • daniel_oyc:双击6666:smile:
      • 神SKY:峥哥,请问这个直播是HLS的还是RTSP的
        神SKY:@袁峥Seemygo 峥哥,有空写写HLS给我们学习一下:smile:
        袁峥:@神SKY rtmp
      • 杯水救车薪:ijkplayer的demo中找不到IJKMediaFramework怎么办
        Monster_Lai:请问下解决了吗?
      • onePic:直播会卡是什么原因!
        袁峥:@coder_xiaohua 码率
      • Goplayer王布斯:先打赏,再看好文章,正是我需要的
      • 630c5eeb35d3:想问下这个可以播放rtsp流吗?
      • 夜空繁星海:谢谢大神分享,自己也做个东西:smile:
      • 魔君大人:jkplayer 集成做成静态库总是不成功, have the same architectures (x86_64) and can't be in the same fat output
      • 简了个书1993::smile: 绝对是NO.1
        Demo里边“采集”切换摄像头后有点问题,视频连接为空,输出数据代理里边都变成音频了
        if (_videoConnection == connection) {
        NSLog(@"采集到视频数据");
        } else {
        NSLog(@"采集到音频数据");
        }
      • 47d808653289:折腾了两三天,终于把弄好了,谢谢楼主!另外我遇到YZLiveApp的demo中一个内存暴增的问题,找了原因是 主要是对高分辨图像进行解压缩操作造成的 请见这个 http://www.jianshu.com/p/1c9de8dea3ea当中的解决办法。
        在高分辨率图像不进行压缩,就可以了。
        [[SDImageCache sharedImageCache] setShouldDecompressImages:NO];
        [[SDWebImageDownloader sharedDownloader] setShouldDecompressImages:NO];
      • macfai: 大神,讲的真细,真好,大赞
      • 036b111e7d57:我用的腾讯云互动直播,观看回放直播卡顿是怎么回事儿啊
      • a116f835a5ff:为什么我到了执行compile-ffmpeg.sh all的时候给我报了这个错,
        xcrun -sdk iphoneos clang is unable to create an executable file.
        C compiler test failed.
        找了好多资料也没解决
      • c431a11dada4:不错,很详细可以当直播教科书了
      • wangwayhome:去年运行demo也遇到不少坑
      • 崠崠:请问一个问题 你的直播API怎么抓的啊 作者
        夜空繁星海:charles或者wireshark工具,具体搜下百度就行了。
      • Bonew01:大神,在dos窗口里pod install 有问题,“zsh: command not found: pod”,怎么破?
      • 犹抱琵琶半遮:我问下,我下载你的demo后运行报错"需要pod install"操作,但是我在终点中cd 文件目录,然后pod install 后,出现-bash:pod:command not found咋解决?
      • qjhuang:./init-ios.sh执行太慢了,怎么破
      • 艾姆希:我想问下 直播的话 作为主播这边的 怎么上传数据?
      • 6a948902fef0:求分享一下各个平台获取主播信息的URL~万分感谢! 另外话说现在的平台对这些信息和拉流数据都不做加密么?
      • Hmilylpp:大神你好,IJKFFMoviePlayerController的内存泄漏怎么解决?
      • c5c8cbc32df6:为什么执行完./compile-ffmpeg.sh all 命令后,会报错
        C compiler test failed.

        If you think configure made a mistake, make sure you are using the latest
        version from Git. If the latest version fails, report the problem to the
        ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
        Include the log file "config.log" produced by configure as this will help
        solve the problem.
        cf02d3bf4496:Xcode环境安装过多 或者给Xcode重命名 导致路径不对
      • 五线谱xuan:峥哥请教个基础问题。进度条和播放暂停按钮的UI都是要自己写的吧?ijk里没有默认的UI吧?
      • 13149a3d9e65:袁哥,执行./init-ios.sh 下载ffmpeg 的时候总是下载不完 就会报错 , 我也没有修改host,也没有连VPN , 等了好久,最终发现报错了... 连续两次了,真的不知道为啥
        f58ec80588cf:@沉子汐 你好怎么翻墙
        13149a3d9e65:已经解决,翻墙过去下的,速度快多了.
        13149a3d9e65:@袁峥Seemygo 错误日志 ;
        sunyayongdeMacBook-Pro:~ Yaya$ cd /Users/Yaya/Desktop/ijkplayer-master
        sunyayongdeMacBook-Pro:ijkplayer-master Yaya$ ./init-ios.sh
        git version 2.9.3 (Apple Git-75)
        == pull gas-preprocessor base ==
        Fetching origin
        /Users/Yaya/Desktop/ijkplayer-master
        == pull ffmpeg base ==
        Cloning into 'extra/ffmpeg'...
        remote: Counting objects: 494447, done.
        error: RPC failed; curl 56 SSLRead() return error -98064 bytes/s
        fatal: The remote end hung up unexpectedly
        fatal: early EOF
        fatal: index-pack failed
        sunyayongdeMacBook-Pro:ijkplayer-master Yaya$
      • Ko_Neko:你好 请问Demo里点击“采集视频”就会闪退是什么情况呢?
        Monster_Lai:好像是iOS10权限的问题
      • 小小pk筱筱:为什么我到 步骤三:输入./init-ios.sh,就会执行当前脚本了。
        一直下载出错
      • Ko_Neko:峥哥你好,请问一下发布版本的库和调试版本的库有什么区别呢?为什么要特别做成两种库?
      • starfox寒流:从直播页面返回时,内存没有降低。如何解决?
      • iSuAbner:大神 我想问下ijkplayer 怎么在一个控制器里面切换播放源啊 我看url都是通过类方法 alloc init 出来控制器的时候用到的,不懂怎么能像原生那样更改avplayeritem就改变播放源。
      • 751fc49dcbfd:要从git clone最新版才行编译成功
      • ddfae95b32bc:终端输入./init-ios.sh 后出现
        Cloning into 'extra/ffmpeg'...
        remote: Counting objects: 494425, done.
        remote: Compressing objects: 100% (85/85), done.
        error: RPC failed; curl 56 SSLRead() return error -36.00 KiB/s
        fatal: The remote end hung up unexpectedly
        fatal: early EOF
        fatal: index-pack failed
        怎么解决呢, 峥哥. :hushed:
        f58ec80588cf:@沉子汐 你好 告诉一下怎么翻墙下载
        13149a3d9e65:@blank__ 你的网速太渣了,翻墙过去下
      • _方丈:
        Cloning into 'extra/ffmpeg'...
        remote: Counting objects: 494425, done.
        remote: Compressing objects: 100% (85/85), done.
        error: RPC failed; curl 56 SSLRead() return error -36536.00 KiB/s
        fatal: The remote end hung up unexpectedly
        fatal: early EOF
        fatal: index-pack failed
        这个./init-ios.sh下不了 是我这边原因??
      • plu:好详细,好喜欢,支持,还有感谢
      • plu:编译的时候会出现这个错误为什么呢???error: RPC failed; curl 18 transfer closed with outstanding read data remaining
      • 售前界的不死小强:Cloning into 'extra/ffmpeg'...
        remote: Counting objects: 493518, done.
        error: RPC failed; curl 56 SSLRead() return error -360.00 KiB/s
        fatal: The remote end hung up unexpectedly
        fatal: early EOF
        fatal: index-pack failed
        有什么解决的方法吗
      • PINN大大: --prefix=/Users/Hucom/Documents/Live/ijkplayer-ios/ios/build/ffmpeg-armv7/output xcrun -sdk iphoneos clang
        xcrun -sdk iphoneos clang is unable to create an executable file.
        C compiler test failed.
        ______./compile-ffmpeg.sh all出错, 也查看了git的issue仍然无法解决......., 不知道有没有遇到同样的问题的呢,?????
        c5c8cbc32df6:@allenpeng 找到解决方法了吗,我也出现这样的情况
        07060e4f06c3:@allenpeng 我也是,正在想办法解决,你解决了吗
      • 做一个有爱的伸手党:为什么点 采集的时候会报错呢
      • 那片飘落的树叶:想问一下,您的支持rstp格式的吗?比如监控
      • af4e8a35bc89:赞 好文章 实用加详细
      • 704d6c3a115f:666666 最近正打算自己写个直播
      • 李有钱灬:你好,我想问一下为什么我下的ijkplayer只能在iOS10.0以上使用呀,在10.0一下就会崩溃。。。
      • 小饼干是只松鼠:YZLiveApp 这个demo 不能播rtmp 吗 ?
      • Idoahc:峥哥,你这个demo采集之后在哪里看?
        Idoahc:@袁峥Seemygo 我下载了你的demo ,可一看视频直播,但是那个采集的话,别人可以到采集到的视频吗,如果能看到,那个观看地址是什么
        袁峥:@JasonMax 什么意思
      • xing_xing:很详细,点个赞
      • 中秋梧桐语:大神 执行./init-ios.sh这个脚本 就报了这个错 fatal: The remote end hung up unexpectedly
        fatal: early EOF
        fatal: index-pack failed 然后ffmpeg没下载成功。怎么回事了
        f58ec80588cf:你好 你这个问题解决了吗
      • 李头大:峥哥,获取到拉流地址正确,播放不了是怎么回事呢
        李头大:@袁峥Seemygo http://pull99.a8.com/live/1474935500103937.flv: Operation timed out
        李头大:@袁峥Seemygo Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
        invalidateRenderBuffer
        setupDisplay not ready

        invalidateRenderBuffer
        袁峥:@lyjpost 报错了吗 是https吗 还是r t m p
      • 男神nick: 可以的 这个player里面是不是实现了拉流的操作呀 大牛们太多了
      • ColinYF:学习了,感谢楼主的分享 :+1:
      • 飞天小猪猪:小码哥的就是精品 我喜欢
      • 小草先生:看了半天没把 ijkplayer中的一些坑如何填讲出来啊,只讲了如何导包
      • 2373e8185446:好文章
      • b5acacf4f8dc:Undefined symbols for architecture x86_64:
        "_inflate", referenced from:
        _http_read_stream in IJKMediaFramework(http.o)
        _rtmp_open in IJKMediaFramework(rtmpproto.o)
        "_inflateEnd", referenced from:
        _http_close in IJKMediaFramework(http.o)
        _http_read_header in IJKMediaFramework(http.o)
        _rtmp_open in IJKMediaFramework(rtmpproto.o)
        "_inflateInit2_", referenced from:
        _http_read_header in IJKMediaFramework(http.o)
        "_inflateInit_", referenced from:
        _rtmp_open in IJKMediaFramework(rtmpproto.o)
        "_uncompress", referenced from:
        _id3v2_read_internal in IJKMediaFramework(id3v2.o)
        _mov_read_cmov in IJKMediaFramework(mov.o)
        "_zlibCompileFlags", referenced from:
        _http_read_header in IJKMediaFramework(http.o)
        ld: symbol(s) not found for architecture x86_64
        clang: error: linker command failed with exit code 1 (use -v to see invocation)





        峥哥,按照你的详细解答,从编译demo到运行都很顺利,将IJKMediaFramework 拖到自己的工程中,就报了这个错,不知道咋解决
        b5acacf4f8dc:@b5acacf4f8dc 峥哥,有群号吗,这上面不能发图片,问题描述不太清楚了
        b5acacf4f8dc:@袁峥Seemygo 我最后下了一个峥哥的版本,就直接拖进去了,我再仔细看下
        袁峥:@b5acacf4f8dc 有两个版本的 你是不是托错了
      • 小怡情ifelse:还没开始看 但愿是干货 提前赞一个哈哈
      • I_m赵昊:请教大神,iOS中集成ijkplayer视频直播框架,按照这里打包出来的静态库是开发版本的,那修改哪里即可变为测试版本呢 :pray:
        袁峥:@I_m赵昊 运行按钮那 有edit scheme
      • 訷訷:峥哥,ijkplayer是不是能播放rtsp协议视频?为什么我用你的不行
        晓_我想去环游世界:@袁峥Seemygo 峥哥 确实播放不了rtsp格式的 rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp一直黑屏的
        袁峥:@訷訷 都支持吖
      • 我没喝酒啊:怎么我下载了你的代码 报错呢
        幕十三:@sean_xia 要是你觉得你的配置文件错了,先保证是不是从git拉的最新版,如果最新版都不得行,把这个问题报给XXX.net,必须要包含config.log这个日志文件,这个应该能解决问题。(翻的不对的话见谅)
        _老妖怪:@袁峥Seemygo 我下了走到 ./compile-ffmpeg.sh all 这一步就失败了 错误信息是找个
        ----------------------
        C compiler test failed.

        If you think configure made a mistake, make sure you are using the latest
        version from Git. If the latest version fails, report the problem to the
        ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
        Include the log file "config.log" produced by configure as this will help
        solve the problem.

        袁峥:@我没喝酒啊 有教程 很多人看了都没问题
      • 尕小天:峥哥,你这个demo一直不停切换主播的话,内存一直升,怎么解决啊?
        尕小天:峥哥,当播放结束时,在viewdiddisapper 里面调用 [_player shutdown]; 内存就不会一直增长了 :smile:
      • 尕小天:峥哥,我想问一下 IJKFFMoviePlayerController 这个是什么东西? 我把它作为子控制器,添加到当前控制器的子控制器数组中会报错,为什么?
        吃你煮的鱼:@尕小天 这个不是控制器 使用的时候只需要把它的view添加到你当前控制器的view上就可以了。
        袁峥:@尕小天 这个不是一个控制期
      • J_Pisces:认真看完,学习了,准备试一试:grin:
      • 我来自猿圈:大神,期待讲解音视频硬编码解码 比如H264,AAC 然后把音视频封装成flv流媒体格式,这块真的不知道从何开始?
      • 闭家锁:支持,非常详细,而且每个坑都讲得很详细,谢谢分享,估计很多人的直播app之路就起始于这篇文章了
      • 哆啦_:大神 刚下载了您的demo 然后发现视频的话会声音和口型对不上 这应该是后台处理的吧 或者是跟网络有关系?
        ps:期待大神把直播功能早早完善 好让我等膜拜学习 :heart_eyes:
        袁峥:@哆啦_ 真机调试就好了

      本文标题:【如何快速的开发一个完整的iOS直播app】(播放篇)

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