首页 存档 技术 查看内容

【原创】iOS平台基于ffmpeg的视频直播技术揭秘

2018-3-30 13:00 |来自: 互联网 580 0

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

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

首先你得编译出ffmpeg运行所需的静态库,这个百度一下有很多内容,这里我就不多说了,建议可以用Github上的一个开源脚本来编译,简单粗暴有效率

地址:https://github.com/kewlbear/FFmpeg-iOS-build-script

下载后直接用终端运行build-ffmpeg.sh脚本就行了,大概半个小时就全部编译好了反正我觉得速度还行吧(PS:当初编译Android源码那叫一个慢啊),若是报错就再来一遍,直到提示成功

视频直播怎么直播呢?大概流程图如下:

1.直播人设备端:从摄像头获取视频流,然后使用rtmp服务提交到服务器

2.服务器端:接收直播人提交的rtmp视频流,并为观看者提供rtmp

3.观看者:用播放器播放rtmp源的视频.

PS:RTMPReal Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。

前期准备:

新建一个项目,将所有需要引入的ffmpeg的静态库及其他相关库引入到工程中,配置头文件搜索路径这一步网上有很多教程就不重复叙述了

我是用上面脚本编译的最新版,为了后期使用,需要将这些C文件添加到项目:

cmdutils_common_opts.h

cmdutils.hcmdutils.c

config.hscratch目录下取个对应平台的

ffmpeg_filter.c

ffmpeg_opt.c

ffmpeg_videotoolbox.c

ffmpeg.hffmpeg.c

除了config.h文件外,别的文件均在ffmpeg-3.0源码目录中

注意问题:

1.编译会报错,因为ffmpeg.c文件中包含main函数,请将该函数重命名为ffmpeg_main并在ffmpeg.h中添加ffmpeg_main函数的声明.

2.ffmpeg任务完成后会结束进程,iOS设备都是单进程多线程任务,所以需要将cmdutils.c文件中的exit_program方法中的

exit(ret);

改为结束线程,需要引入#include

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部