美文网首页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这些步骤吗?
  • 38590d660505:新版本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流吗?
  • 79e136f7479c:袁哥 编译的时候出现问题显示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命令
  • d909d9165cfe:你好,楼主,怎么联系你呢,方便留你的联系方式给我妈 ?或者加我微信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
  • 郑明明:老师好!
  • 郑明明:真的很棒的!
  • 89b999ad5618:双击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”,怎么破?
  • 2c6ea129717f:我问下,我下载你的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