现在非常流行直播,相信很多人都跟我一样十分好奇这个技术是如何实现的,正好最近在做一个ffmpeg的项目,发现这个工具很容易就可以做直播,下面来给大家分享下技术要点: 首先你得编译出ffmpeg运行所需的静态库,这个百度一下有很多内容,这里我就不多说了,建议可以用Github上的一个开源脚本来编译,简单粗暴有效率。 地址:https://github.com/kewlbear/FFmpeg-iOS-build-script 下载后直接用终端运行build-ffmpeg.sh脚本就行了,大概半个小时就全部编译好了…反正我觉得速度还行吧(PS:当初编译Android源码那叫一个慢啊…),若是报错就再来一遍,直到提示成功。 视频直播怎么直播呢?大概流程图如下: 1.直播人设备端:从摄像头获取视频流,然后使用rtmp服务提交到服务器 2.服务器端:接收直播人提交的rtmp视频流,并为观看者提供rtmp源 3.观看者:用播放器播放rtmp源的视频. PS:RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。 前期准备: 新建一个项目,将所有需要引入的ffmpeg的静态库及其他相关库引入到工程中,配置头文件搜索路径,这一步网上有很多教程就不重复叙述了。 我是用上面脚本编译的最新版,为了后期使用,需要将这些C文件添加到项目: cmdutils_common_opts.h cmdutils.h及cmdutils.c config.h在scratch目录下取个对应平台的 ffmpeg_filter.c ffmpeg_opt.c ffmpeg_videotoolbox.c ffmpeg.h及ffmpeg.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 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|