这是去年的时候做项目写的一篇文章了,项目背景是有一个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项目,进行以下配置:
① 将libavcodec、libavdevice、libavfilter、libavformat、libavresample、libavutil、libswresample、libswscale文件夹拖到工程根目录,见图:(注意文件夹颜色)
② 找到所有.a文件并拖到工程Frameworks文件夹中,见图:
③ 添加类库libbz2.dylib、libz.dylib、libiconv.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.m和VideoFrameExtractor.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://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