美文网首页
基于FFMPEG API开发RTMP推流器

基于FFMPEG API开发RTMP推流器

作者: onroad_tech | 来源:发表于2018-11-12 19:13 被阅读0次

    1. 环境

    Win10 + Visual Stdio 2017

    2. 材料

    Windows版本的FFMPEG库

    下载地址:https://ffmpeg.zeranoe.com/builds/

    如图1所示,下载Windows64位的4.0.2版本的Shared和Dev版本,Dev包含的是开发ffmpeg程序所需要的头文件及链接库,在编译时会用到;Shared包含的是运行程序时调用到的ffmpeg的动态库,在运行时用到。这两个都要下载。

    图1

    3 开发环境配置

    • 创建解决方案

    打开Visual Studio 2017,创建一个live的解决方案,如图2所示,

    图2
    • 创建项目

    如图3,


    图3

    项目结构如图4所示。


    图4
    • 运行

    此时点本地Windows调试器按键运行一下,如果弹出的控制台有打印Hello World, 则项目创建成功。

    VS默认为Debug环境为x86配置,我们可以将其手动改为x64平台。如图5所示,再次点本地Windows调试器按键运行一下,看是否还会成功打印Hello World,答案当然是肯定的啦。

    图5

    接下来我们把ffmpeg加入到我们的解决方案中,在我们的live目录下创建一个ffmpeg的目录来存放库及头文件,还有运行动态库。将ffmpeg-4.0.2-win64-dev文件夹下的include和lib,还有ffmpeg-4.0.2-win64-shared文件夹下的bin目录都复制到ffmpeg目录下。

    接下来就是把它们配置到我们的live解决方案中

    3.1 配置include和lib目录

    右击项目,属性 --> C/C++ --> 常规 添加include目录 如图6

    图6

    链接器-->常规-->附加库目录 添加lib目录 如图7


    图7

    链接器--》输入--》附加依赖项--》编辑,输入lib目录中所有的.lib文件名,如图8,9所示。

    图8
    图9

    运行环境配置:配置属性-->高度-->环境-->输入path=ffmpeg bin目录 如图10所示


    图10

    至此,所有的配置完成。

    3.2 导入源码

    我们这次的推流工程项目StreamPusher是直接拿雷神的simplest_ffmpeg_streamer的工程来升级的,雷神的simplest_ffmpeg_streamer的github地址为https://github.com/leixiaohua1020/simplest_ffmpeg_streamer, 它这个工程是在2014年10月份写的,当时的ffmpeg版本为2.3.6, https://ffmpeg.org/olddownload.html,如图11。

    图11

    这次我们尝试着给它升级到4.0.2,看它能不能正常运行。

    首先将雷神的simplest_ffmpeg_streamer项目中的simplest_ffmpeg_streamer.cpp复制到我们的StreamPusher.cpp里,编译时主要碰到三个问题,

    • 预编译头错误

    解决方法

    1. 在解决方案资源管理器中,右击相应的.cpp文件,点击“属性”
    2. 在左侧配置属性中,点开“C/C++”,单击“预编译头”
    3. 更改右侧第一行的“创建/使用预编译头”,把选项从“使用预编译头(/Yu)”改成“不使用预编译头”

    如下图所示

    13.png
    • CODEC_FLAG_GLOBAL_HEADER找不到

    在4.0.2版本中,它已被替换成AV_CODEC_FLAG_GLOBAL_HEADER。

    • 变量/类被声明已否决

    发现报非常多的变量/类被声明已否决,先暂时关掉SDL试一下,

    3.3 验证

    编译成功后,再搭建一个SRS流媒体服务器验证一下(网上有许多博客可参考,比较简单),推流成功。

    如下图所示:

    下一节,我们将打开SDL,通过修改代码,实现将此工程升级到4.0.3版本。

    完整代码可到我的github下载:
    https://github.com/onroadtech/live
    branch: master

    相关文章

      网友评论

          本文标题:基于FFMPEG API开发RTMP推流器

          本文链接:https://www.haomeiwen.com/subject/auacfqtx.html