• 【iOS开发】使用iFrameExtractor实现视频直播


      

      这是去年的时候做项目写的一篇文章了,项目背景是有一个IP摄像头(拥有网络服务器),在iPad端实现视频的实时监控,最开始去理解RTP、RTSP、H.264等等一些专业概念,经过TCP握手建立连接接收数据,最后的结果是接收到数据不知道怎么用FFMpeg进行解析,后来使用第三方程序iFrameExtractor跳过了这些麻烦的步骤,提供一个rtsp://...服务器地址即可播放视频。以下是文章内容:


     

    iOS平台视频直播功能的实现主要使用了第三方类库FFMpeg,此类库提供了视频编解码解决方案。但是该类库对视频流的使用非常的复杂和麻烦,网上有iOS平台iFrameExtractor项目,可以使用它来实现视频直播功能。

    步骤:

    1、         在本地编译FFMpeg;(见底部附件)

    2、         借用iFrameExtractor项目。

     

    一、      本地编译FFmpeg

    首先 git clone git://source.ffmpeg.org/ffmpeg.git 下载FFMpeg源文件。

    编译步骤见一篇老外写的教程:http://www.tangentsoftworks.com/2012/11/12/how-to-prepare-your-mac-for-ios-development-with-ffmpeg-libraries/

    需要注意的是:

    1. 以上提供的老外的编译教程只适合以下环境:

    Mac OS X10.8.2 + Xcode4.5.2(4G2008a)

    PS:我在Mac OS X10.8.3环境编译未成功。

    2. 此教程中gas-preprocessor链接的文件编译可能出错,推荐下载最新版本gas-preprocessor,链接在此:

    https://github.com/mansr/gas-preprocessor

    至于其他平台如何编译,https://github.com/lajos/iFrameExtractor 此网页有编译steps,未曾尝试。

       3. 看到教程中编译步骤分为i386、armv6、armv7、armv7s,需要明白模拟器和真机以及真机之间使用了不同的指令集处理器架构,所以要分别编译。其中

    i386      适用于模拟器

    armv6      适用于3GS之前设备

    armv7      适用于3GS之后iPhone5与iPad4之前设备

    armv7s    适用于iPhone5及iPad4及之后设备

    4. 判断编译成功与否

    新建XCode项目,进行以下配置:

    ①       将libavcodeclibavdevicelibavfilterlibavformatlibavresamplelibavutillibswresamplelibswscale文件夹拖到工程根目录,见图:(注意文件夹颜色)

     

    ②       找到所有.a文件并拖到工程Frameworks文件夹中,见图:

     

    ③       添加类库libbz2.dyliblibz.dyliblibiconv.dylib

    ④       Build Settings

    Header Search Paths 添加 $(SRCROOT)  (PS:与lib文件夹路径有关)

       为 Library Search Paths 添加 $(SRCROOT)

       以上为配置,然后用代码验证:

          在AppDelegate.m文件中添加

             #include “avformat.h”

          然后在didFinishLaunchingWithOptions方法添加

             av_register_all();

       然后command+R运行验证,按照此步骤,应该不会出错。

     

    二、      借用iFrameExtractor项目

    下载此项目

    git clone git://github.com/PinkyJie/iFrameExtractor.git

    需要用到的此项目中的文件有四个,Utilities.h/ Utilities.mVideoFrameExtractor.h/VideoFrameExtractor.m,把此四个文件拖到工程中,用法见iFrameExtractor.git的iFrameExtractorAppDelegate.h/iFrameExtractorAppDelegate.m文件。

        需要注意,初始化VideoFrameExtractor

    self.video=[[VideoFrameExtractor alloc]initWithVideo:videoURLString];

         其中,videoURLString是”rtsp://……”链接。

     

     


     

     附:

       Mac OS X10.8.2 + Xcode4.5.2 环境编译FFMpeg老外教程:

    http://www.tangentsoftworks.com/2012/11/12/how-to-prepare-your-mac-for-ios-development-with-ffmpeg-libraries/

    以上链接已失效,查了一下,文章在此:

    http://ywanguu.blogspot.com/2013/02/how-to-prepare-your-mac-for-ios.html

      

    FFMpeg源代码下载链接:

    https://github.com/FFmpeg/FFmpeg

     

    iFrameExtractor项目下载链接

    https://github.com/lajos/iFrameExtractor

     

    gas-preprocessor文件下载链接

    https://github.com/mansr/gas-preprocessor

    附我编译成功的FFMpeg

    http://pan.baidu.com/s/1ntFklhZ          

    2013-06-28 

  • 相关阅读:
    restapi(6)- do it the functional way, 重温函数式编程
    JS模块化
    socket.io websocket
    CSS 文字换行
    webpack初识
    升级nodejs至最新
    JavaScript Promise迷你书(中文版)
    时间格式化
    npm yarn
    深入浅出MongoDB应用实战开发
  • 原文地址:https://www.cnblogs.com/youthpasses/p/3844916.html
Copyright © 2020-2023  润新知