转载请注明出处:http://www.cnblogs.com/fpzeng/p/3202344.html

系统版本:OS X 10.8

一、在iOS平台上交叉编译librtmp

librtmp link时需要openssl,在iOS上编译openssl请参考以下脚本:https://github.com/x2on/OpenSSL-for-iPhone/blob/master/build-libssl.sh,假设openssl/*.h头文件放于

/a/b/c/openssl/include路径下,libcrypto.a和libssl.a库文件i386版本存放于/a/b/c/openssl/ios/libs/ios_i386路径下,libcrypto.a和libssl.a库文件armv7版本存放于/a/b/c/openssl/ios/libs/ios_armv7路径下。

首先获取librtmp代码:

git clone git://git.ffmpeg.org/rtmpdump

在rtmpdump中就有librtmp代码了,可以看到librtmp/Makefile文件已经存在了,我们需要做的就是export相关变量就行了。其中需要处理CROSS_COMPILE、XCFLAGS、XLDFLAGS三个变量。

1.1 编译i386版本

cd rtmpdump/librtmp
export CROSS_COMPILE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/
export XCFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk -I/a/b/c/openssl/ios/include -arch i386"
export XLDFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk -L/a/b/c/openssl/ios/libs/ios_i386 -arch i386 "
make SYS=darwin

1.2 编译armv7版本

export CROSS_COMPILE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
export XCFLAGS='-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -I/a/b/c/openssl/ios/include -arch armv7'
export XLDFLAGS='-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -L/a/b/c/openssl/ios/libs/openssl/ios_armv7 -arch armv7'
make SYS=darwin

1.3  调试

如果需要调试,请将librtmp/Makefile中设置优化选项产生debug信息。

OPT=-O0
CFLAGS=-Wall -g $(XCFLAGS) $(INC) $(DEF) $(OPT) $(SO_DEF)
LDFLAGS=$(XLDFLAGS) -g

其中,-O0能减少编译时间并产生调试信息。并且在编译和链接选项中添加-g选项产生debug symbol。

二、在ffmpeg中使用librtmp

假设librtmp/*.h头文件在/a/b/c/librtmp/include路径下,librtmp.a在/a/b/c/librtmp/libs/路径下。

执行配置时,添加选项开启librtmp并且指定头文件和链接库路径:

./configure --enable-librtmp
--extra-cflags=-I/a/b/c/librtmp/include
--extra-ldflags=-L/a/b/c/librtmp/libs/

此时,提示错误:

ERROR: librtmp not found

查看日志文件config.log:

check_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
ERROR: librtmp not found

ffmpeg尝试在检查librtmp时运行pkg-config,请将

enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket

修改为

enabled librtmp

iOS平台在ffmpeg中使用librtmp的更多相关文章

  1. 多媒体开发(7):编译Android与iOS平台的FFmpeg

    编译FFmpeg,一个古老的话题,但小程还是介绍一遍,就当记录.之前介绍怎么给视频添加水印时,就已经提到FFmpeg的编译,并且在编译时指定了滤镜的功能. 但是,在手机盛行的时代,读者可能更需要的是能 ...

  2. 在iOS平台使用ffmpeg解码h264视频流(转)

    在iOS平台使用ffmpeg解码h264视频流,有需要的朋友可以参考下. 对于视频文件和rtsp之类的主流视频传输协议,ffmpeg提供avformat_open_input接口,直接将文件路径或UR ...

  3. 在iOS平台使用ffmpeg解码h264视频流

    来源:http://www.aichengxu.com/view/37145 在iOS平台使用ffmpeg解码h264视频流,有需要的朋友可以参考下. 对于视频文件和rtsp之类的主流视频传输协议,f ...

  4. iOS平台基于ffmpeg的视频直播技术揭秘

    现在非常流行直播,相信很多人都跟我一样十分好奇这个技术是如何实现的,正好最近在做一个ffmpeg的项目,发现这个工具很容易就可以做直播,下面来给大家分享下技术要点: 首先你得编译出ffmpeg运行所需 ...

  5. 实战FFmpeg--iOS平台使用FFmpeg将视频文件转换为YUV文件

    做播放器的开发这里面涉及的东西太多,我只能一步步往前走,慢慢深入.播放器播放视频采用的是渲染yuv文件.首先,要知道yuv文件是怎么转换得来的,其次,要知道怎么把视频文件保存为yuv文件.雷神的文章1 ...

  6. FFmpeg编译:mac下编译iOS平台的FFmpeg库(支持armv7, arm64, i386, x86_64)

    环境:FFmpeg 3.4.6Xcode 10.3macOS 10.14.6iOS SDK 12.4 一.准备工作 1. 下载FFmpeg我这里使用的是3.4.6版本的FFmpeg,可以从FFmpeg ...

  7. 在FFMPEG中使用libRTMP的经验

    FFMPEG在编译的时候可以选择支持RTMP的类库libRTMP.这样ffmpeg就可以支持rtmp://, rtmpt://, rtmpe://, rtmpte://,以及 rtmps://协议了. ...

  8. 实战FFmpeg + OpenGLES--iOS平台上视频解码和播放

    一个星期的努力终于搞定了视频的播放,利用FFmpeg解码视频,将解码的数据通过OpenGLES渲染播放.搞清楚了自己想知道的和完成了自己的学习计划,有点小兴奋.明天就是“五一”,放假三天,更开心啦. ...

  9. 实战OpenGLES--iOS平台使用OpenGLES渲染YUV图片

    上一篇文章 实战FFmpeg--iOS平台使用FFmpeg将视频文件转换为YUV文件 演示了如何将视频文件转换为yuv文件保存,现在要做的是如何将yuv文件利用OpenGLES渲染展示出图像画面.要将 ...

随机推荐

  1. CPU进程与线程的关系和区别

    进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. ...

  2. android EditText内嵌图片

    如下所示: 主要用到的属性:android:drawableLeft <EditText android:layout_width="match_parent" androi ...

  3. Practice: Process logs with Apache Hadoop

    http://www.ibm.com/developerworks/library/os-log-process-hadoop/ Analyzing Apache logs with Apache P ...

  4. Changing a Service's Configuration

    Changing a Service's Configuration   A service configuration program uses the ChangeServiceConfig an ...

  5. oschina大数据开源软件

    Hadoop 图形化用户界面 Hue 大数据可视化工具 Nanocubes 企业大数据平台 RedHadoop 大数据查询引擎 PrestoDB Hadoop集群监控工具 HTools 安全大数据分析 ...

  6. fuel部署openStack

    https://code.launchpad.net/fuel [fuel项目] http://www.imgburn.com/ [各种镜像制作工具]

  7. es6新特性:

    http://es6katas.org/ es6+一些新特性,截图如下 对应方法,函数显示相关的数据,如图: 对应方法,函数的例子,如下

  8. laravel敏捷应用

    App Category Recipes dealing with Laravel's App facade Checking Your Environment Checking if You're ...

  9. Stack and queue.

    队列的定义及基本运算 1.定义    队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表 (1)允许删除的一端称为队头(Front). (2)允许插入的一端称为队尾(Rea ...

  10. ubuntu server 14.04.4 无线网卡没有启用,找不到wlan0端口

    Ubuntu Server默认的情况下是不会启用无线网卡的,想想实际服务器上怎么可能有无线网卡呢,呵呵.所以我们需要手动来启用无线网卡,难点就在这里了. 使用ifconfig命令,发现没有wlan口, ...