ffmpeg推流摄像头数据至公网服务器

本文介绍了作者使用ffmpeg将摄像头数据推流到公网服务器的实践过程,涉及YUV、FLV格式理解、H264编码、RTMP推流等问题。作者通过查阅资料和参考他人代码,解决了编码格式不兼容和推流实现的难题,最终成功实现推流功能并将代码托管到Gitee。
摘要由CSDN通过智能技术生成

完整的推流代码已经托管到个人的Gitee,如有需要请自取

https://gitee.com/MonsterAKALei/push_video.git

ffmpeg推流摄像头数据

昨天实现用API分别实现了读取摄像头数据并保存将本地文件推流到公网两个功能,所以想着是否可以将这两个功能合并一下,读取摄像头数据后不保存而直接推流到公网

FFmpeg采集摄像头图像并推流(RTSP/RTMP)—开发总结

我的一篇博文《如何用FFmpeg API采集摄像头视频和麦克风音频。。。》已经介绍了如何从视音频采集设备获取数据,并且编码、保存文件到本地。但是,**有些应用并不是把流保存成文件,而是需要发送到网络**的,比如现在很典型的一种应用场景:把流推送到RTSP、RTMP、HLS服务器,由服务器转发给其他用户观看。很多开发者也是调用FFmpeg API来实现推流的,用FFmpeg 做一个推流器很简单,调用流程跟输出文件的基本相同,基于前面博文的例子稍微修改就可以做出一个采集+编码+推流的软件。这里,我先假设读者已经会用FFmpeg API保存或录制文件,但没有实现过推流功能,我将给大家说一下做推流跟录制文件的区别,还有说一下要注意的几个问题,希望能帮助大家在开发推流功能时减少一些问题的出现

上面这个博客里提到了我目前的需求,如红字突出部分,但是其内容讲的是如何将已有文件推流到公网,还是有区别的

注意到对于RTMPAVOutputFormatflv,这对后面的操作有很大的影响

我先将昨天的两个cpp文件做了简单的拼接

transmit_test.cpp

#include <iostream>
#include <string>

extern "C"
{
#include "libavformat/avformat.h"
#include "libavutil/time.h"
#include "libavutil/avutil.h"
#include "libavdevice/avdevice.h"
#include "libavcodec/avcodec.h"
}

using namespace std;

#pragma comment(lib, "avformat.lib")
#pragma comment(lib, "avutil.lib")
#pragma comment(lib, "avcodec.lib")
#pragma comment(lib, "avdevic.lib")

int ff_Error(int errNum)
{
    char buf[1024] = {0};
    av_strerror(errNum, buf, sizeof(buf));
    cout << buf << endl;

    return -1;
}

static AVFormatConte
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Ubuntu上使用FFmpeg实现摄像头推流服务器的步骤如下: 1. 首先,确保你已经按照\[1\]中提供的链接编译安装了支持h264的FFmpeg源码。 2. 确认你的摄像头可以在Ubuntu上正常工作,并且已经安装了相应的驱动程序。 3. 使用FFmpeg命令行工具来采集摄像头视频并编码为RTMP流。你可以使用以下命令: ``` ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -f flv rtmp://your_server_url ``` 这个命令中,`/dev/video0`是你的摄像头设备路径,`libx264`是视频编码器,`ultrafast`是编码速度的预设值,`zerolatency`是为了实现低延迟,`rtmp://your_server_url`是你的服务器地址。 你可以根据需要调整命令中的参数,比如视频分辨率、帧率等。 4. 运行上述命令后,FFmpeg会开始采集摄像头视频并将其编码为RTMP流,然后将流推送到指定的服务器地址。 请注意,以上步骤假设你已经具备了使用FFmpeg API保存或录制文件的基本知识,并且已经安装了相应的依赖库。如果你对FFmpeg API不熟悉,可以参考\[3\]中提供的博文,了解如何使用FFmpeg API实现推流功能。 #### 引用[.reference_title] - *1* [ffmpeg调用USB摄像头并推RTMP流](https://blog.csdn.net/pk296256948/article/details/106493349)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ffmpeg推流摄像头数据公网服务器](https://blog.csdn.net/Solititude/article/details/128446139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值