基于FFMPEG API开发RTMP推流器

您所在的位置:网站首页 ffmpeg暂停推流 基于FFMPEG API开发RTMP推流器

基于FFMPEG API开发RTMP推流器

2023-06-02 00:24| 来源: 网络整理| 查看: 265

1. 环境

Win10 + Visual Stdio 2017

2. 材料

Windows版本的FFMPEG库

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

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

3 开发环境配置 创建解决方案

打开Visual Studio 2017,创建一个live的解决方案,

创建项目

项目结构如下图所示。

运行

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

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

接下来我们把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目录

链接器–>常规–>附加库目录 添加lib目录 如下图

链接器–》输入–》附加依赖项–》编辑,输入lib目录中所有的.lib文件名。

运行环境配置:配置属性–>高度–>环境–>输入path=ffmpeg bin目录

至此,所有的配置完成。

3.2 导入源码

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

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

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

预编译头错误

解决方法

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

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推流器

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3