Mac OS X10.8.2 + Xcode4.5.2 编译 FFmpeg 记录

额...这还是两年前的一篇文章,Mac平台编译FFMpeg,网上资料比较少,当时也编译成功了,拿来记录下吧。


2013.03.24

RTCP+RTP+FFmpeg+H.264等相关的资料和网站
网站:
ChinaVideo
myException.cn
FFmpeg技术 (这个好!)
RTP Payload Format for H.264 Video
国内开发者写的那些既不认真又不负责的狗屎技术博客真特么恶心!写的不明不白,是在炫耀自己的技术能力么!?既然帮不到别人,写那些狗屁技术博客有什么用?这两天查找TCP+H.264的资料,尤其是H.264流分析的资料,查的一头雾水,各不相同还各说各的,百家讲坛啊!尼玛!最后找了篇老外的文章算是明白H.264咋回事了!!再次鄙视国内那些写技术博客只是为了单纯炫耀技术能力而帮不到比人的那些个开发者!鄙视!强烈鄙视!


How to process raw UDP packets so that they can be decoded by a decoder filter in a directshow source filter
博文:
视频流传输协议RTP/RTCP/RTSP/HTTP的区别
终端模拟rtsp回话过程
使用AsyncSocket实现RTSP协议
FFMpeg 中比较重要的函数以及数据结构
Stack OverFlow上一个大牛的解释


编译FFmpeg太特么费劲了,网上帖子杂且乱!那些教程按照步骤要么走不下来,要么走下来也编译失败!搞不明白,写这样的帖子有什么意义!?
还是老外写教程比较认真负责,国内开发者啊,真的应该向老外好好学习!
How to Prepare Your Mac for iOS Development with FFmpeg Libraries

现在记录一个刚遇到并解决的问题:(2013.03.19晚 )

sudo port install pkgconfig 错误


第五步,终端输入 sudo port install pkgconfig,遇到问题:

提示说安装的Xcode版本太低,这明显是个误报,因为我安装的Xcode版本是4.5.2,根据提示终端输入

sudo xcode-select --print-path

显示路径为:

这是哪?Volumes?我也不知道**解决:
**
终端输入

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer”

然后再终端执行:sudo port install pkgconfig,发现没问题了。

遇到问题:(2013.03.20上午)

#include "libavcodec/avcodec.h" 报错


这个问题很好解决,这是路径问题
解决:

#include "libavcodec/avcodec.h"改为#include "avcodec.h"即可
还有其他类似的,改掉即可

**遇到问题:(2013.03.20午)

Undefined symbols for architecture i386:

  "_iconv", referenced from:

......

见图:


这种问题看一眼就头大,但还好的是,网上有很多人遇到过这个问题,本来在 How to Prepare Your Mac for iOS Development with FFmpeg Libraries 原文评论里有开发者提出这个问题,但是博主没有给出解决办法,最后在stackoverflow里找到解决办法(stackoverflow真是一个伟大的开发者技术网站,好好利用!)
解决:
**
http://stackoverflow.com/questions/6854190/ffmpeg-integration-on-iphone-ipad-project/15429359#15429359
具体方法是,在工程Targets->Build Phases中加入类库
libiconv.dylib**
**

**
至此,编译就成功了!(我目前编译的版本还是有问题,模拟器OK,但在iPad4上运行报错,应该是armv7s编译失败了,那iPhone5真机测试也应该不成功,我没试,不过应该是这样。就先用模拟器做开发吧!真机以后再搞

2013.03.25

以上描述有误,因为按照老外原文的流程,只是把编译的armv7下的链接库文件拉入了Xcode,没有拉armv7s的,所以在iPad4上运行的时候会报错,其实编译已经成功!

然后把armv7s文件夹里include文件夹的文件夹们(真拗口)拉到工程里,运行,若报如下错误:

libavcodec.a(shi.o), in section __TEXT,__text reloc 0: R_ABS reloc but no absolute symbol at target address for architecture armv7

那么这个问题是 gas-preprocessor.pl版本的问题,在这gas-preprocessor下载最新版本,替换之前的,然后再重新编译一遍!
注意,不是替换掉原先文件就好了,要重新编译!按照老外的这个教程!

然后在真机iPad4或iPhone5上就可以真机运行了!

新知识:
终端查询Xcode信息:

xcode-select

打印路径和版本就不记录了,更改路径:

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

2013-03-19

你可能感兴趣的:(Mac OS X10.8.2 + Xcode4.5.2 编译 FFmpeg 记录)