iOS8.1 编译ffmpeg和集成第三方实现直播(监控类)

http://www.mamicode.com/info-detail-476094.html

一,下载并在终端中运行脚本编译ffmpeg

脚本参考git上的:https://github.com/kewlbear/FFmpeg-iOS-build-script;

终端进入刚刚下载后的脚本文件夹下,运行sh:build-ffmpeg.sh 自动编译,有缺少yasm的按照提示操作,安装yasm

编译的是ffmpeg2.5.3版本,Xcode6下iOS8.1。

按照脚本编译完后的静态库目录如下:

其中的.a文件为静态库文件,include文件夹内的是头文件

二,将编译好的ffmpeg文件拖人工程,并设置相应的路径

新建工程,将编译好后包含include和lib文件夹拖进工程

我这里先将FFmpeg-iOS文件夹copy了一分放在工程目录下,并重新命名为ffmpegNew,路径如下图:

到这里要修改工程的Header Search Paths ,要不然会报

include“libavformat/avformat.h” file not found  错误

根据Library Search Paths 中的lib的路径:

复制路径,添加一份到Header Search Paths 中,再将lib改为include

改好如下:

三,导入其他库文件

其中libz.dylib libbz2.dylib libiconv.dylib 貌似是必须要导入的,其他的按照需求配置

个人配置好后的如下供参考:

四,将第三方代码导入工程

根 据工程的定制化需求,这里选择了iFrameExtractor,git代码参考:https://github.com/lajos /iFrameExtractor 或者 RTSPPlayer    https://github.com/SutanKasturi/RTSPPlayer

我这里用的后者的demo里面的代码,直接将(AudioStreamer  RTSPPlayer  Utilities)六个文件拖入工程使用

五,实现播放,实现方法可以参考demo中的代码

其中的self.playUrl为视频流的地址本工程用的是RTSP 数据流  示例:

self.playUrl = @"rtsp://xxx.xxx.xxx.xxx/xxx.sdp";

实现播放的代码:

self.videoView = [[RTSPPlayer alloc] initWithVideo:self.playUrl usesTcp:YES];

self.videoView.outputHeight = self.playImage.frame.size.height;

self.videoView.outputWidth  = self.playImage.frame.size.width;

__weak TestViewController *weakself = self;

dispatch_async(dispatch_get_main_queue(), ^{

weakself.playTimer = [NSTimer scheduledTimerWithTimeInterval:1/30.0

target:weakself

selector:@selector(displayNextFrame:)

userInfo:nil

repeats:YES];

});

-(void)displayNextFrame:(NSTimer *)timer {

if (![self.videoView stepFrame]) {

[timer invalidate];

return;

}

if (startframecount < 48) {

startframecount++;

} else {

startframecount++;

[self playVideo];

}

}

-(void)playVideo

{

//    NSLog(@"%p,%d",__FUNCTION__,__LINE__);

//主线程更改视图

//视频源尺寸为352*288

__weak TestViewController *weakself = self;

dispatch_async(dispatch_get_main_queue(), ^{

weakself.playImage.image =  weakself.videoView.currentImage;

//        NSLog(@"%d,%d",self.videoView.sourceWidth,self.videoView.sourceHeight);

});

}

iOS8.1 编译ffmpeg和集成第三方实现直播(监控类)的更多相关文章

  1. 在Android源码中如何吧so库打包编译进入apk, 集成第三方库(jar和so库)

    集成第三方so和jar包 include $(CLEAR_VARS) #jar包编译            LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=securit ...

  2. Android中集成ffmpeg(一):编译ffmpeg

    方案选择 Android中集成ffmpeg的codec功能无非两种方式: JNI直接调用,主要用于App开发(无权限修改系统底层),如EXOPlayer,JPlayer等. 集成ffmpeg到OMX, ...

  3. iOS编译FFmpeg、kxmovie实现视频播放 (转载)

    由于FFmpeg开源框架的功能非常强大,可以播放的视频种类很多,同时添加第三方库kxmovie,实现视频播放,真的是爽爆了,因此今天来说一下关于FFmpeg在iOS手机上的一些配置过程,配置工具,还有 ...

  4. 开源项目:windows下使用MinGW+msys编译ffmpeg

    本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.    FFmpeg是在Linux平台下开发的,但 ...

  5. anroid ndk编译ffmpeg 引用librtmp libx264

    Ffmpeg 无处不在,自然android系统少不了它,折腾了不少时间完成 ndk编译ffmpeg,生成so库中引用了外部库librtmp,libx264.条条大路通罗马, 也许还有别的更好的方法去完 ...

  6. windows 下使用 MinGW + msys 编译 ffmpeg

    本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.    FFmpeg是在Linux平台下开发的,但 ...

  7. 在Windows下编译ffmpeg完全手册

    本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...

  8. 在Windows下编译FFmpeg详细说明

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

  9. Android 环境下编译FFmpeg

    Android 环境下编译FFmpeg 开发环境:Ubuntu 12.04.2 LTS , android-sdk-linux, android-ndk-r8e 一 .X264 编译 1.    X2 ...

随机推荐

  1. bootstrap课程13 bootstrap的官方文档中有一些控件的使用有bug,如何解决这个问题

    bootstrap课程13  bootstrap的官方文档中有一些控件的使用有bug,如何解决这个问题 一.总结 一句话总结:因为演示是正常的,所以检查演示效果的代码,把那一段相关的都弄过来就可以了 ...

  2. Hibernate3.5.4---java application的xml和annotation环境搭建(hibernate.cfg.xml配置文件说明,映射文件Student.hbm.xml说明

    http://blog.csdn.net/centre10/article/details/6050466 来自于:http://blog.csdn.net/centre10/article/deta ...

  3. sampleviewer add menu item error 'assert'

    可以跟踪到 mfc提供的源代码内部,(注:如果打开了mfc源代码,设置了断点,但是跟不进去,那就需要更新PDB文件,具体网上搜)打开 wincore.cpp文件(D:\Program Files\Mi ...

  4. 洛谷 P1808 单词分类_NOI导刊2011提高(01)

    P1808 单词分类_NOI导刊2011提高(01) 题目描述 Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且仅当 ...

  5. js进阶 14-6 $.ajax()方法如何使用

    js进阶 14-6 $.ajax()方法如何使用 一.总结 一句话总结:$.ajax([settings])settings可选.用于配置Ajax请求的键值对集合. 1.$.ajax()的特点是什么( ...

  6. amazeui学习笔记--css(HTML元素3)--表单Form

    amazeui学习笔记--css(HTML元素3)--表单Form 一.总结 1.form样式使用:在容器上添加 .am-form class,容器里的子元素才会应用 Amaze UI 定义的样式. ...

  7. 11.3 Android显示系统框架_最简单的surface测试程序

    APP有一个surface(界面),其有多个buffer用来存放界面数据,这些buffer是向surfaceflinger申请的: 因此我们编写的surface测试程序步骤: (1)获得surface ...

  8. python3 随机生成10以内的加法算术题

    今晚晚饭过后,看到小孩在做加法题,全是10以内的,因为她现在只会10以内的加法题.而这些题是老婆手动出的题目. 看到这个情景,突然想到,可以用python来实现随机出题,而且可以指定出多少题,出多少以 ...

  9. 2、opencv2.4.13.6安装

    一. 卸载opencv3.3.0: Going to the "build" folder directory of opencv from terminal, and execu ...

  10. 不可摸数 【杭电-HDOJ-1999】 附题

    /* hdu 1999 不可摸数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...