网易首页 > 网易号 > 正文 申请入驻

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

0
分享至

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

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

ffmpeg推流摄像头数据

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

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

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

注意到对于RTMP,AVOutputFormat是flv,这对后面的操作有很大的影响

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

transmit_test.cpp

运行输出如下信息

redwall@redwall-G3-3500:~/Test/video_transmit/bin$ ./transmit_test 相机打开成功!打印输入流信息:Input #0, video4linux2,v4l2, from '/dev/video2':Duration: N/A, start: 21117.813711, bitrate: 147456 kb/sStream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 147456 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc输出上下文创建成功ictx->nb_streams:1打印输出流信息:Output #0, flv, to 'rtmp://centos:7788/videotest':Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, q=2-31, 147456 kb/s准备RTMP推流...[flv @ 0x5603fbb236c0] Video codec rawvideo not compatible with flv写入头信息失败!Function not implemented

相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】

音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击

提示Video codec rawvideo not compatible with flv,也就是视频编解码器rawvideo不兼容flv ,于是我又去查了yuy2 以及flv是什么

谈谈RGB、YUY2、YUYV、YVYU、UYVY、AYUV

常用视频像素格式NV12、NV21、I420、YV12、YUYV

音视频基础:FLV封装格式介绍及解析

像素格式描述了像素数据存储所用的格式,定义了像素在内存中的编码方式,RGB和YUV是两种经常使用的像素格式

YUV:(YCrCb)是指将亮度参量Y和色度参量U/V分开表示的像素格式,主要用于优化彩色视频信号的传输

FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小、封装简单等特点,非常适合于互联网上使用。目前主流的视频网站基本都支持FLV。采用FLV格式封装的文件后缀为.flv

所以报错就很正常了,一种是像素格式一种是流媒体格式,怎么可能读出来就直接推流呢

查看ffmpeg支持的所有视频或音频文件类型

ffmpeg所支持的所有视频或音频文件类型

ffmpeg -formatsredwall@redwall-G3-3500:~$ ffmpeg -formats|grep yuffmpeg version 3.4.11-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers Dpgmyuv_pipe piped pgmyuv sequence DE yuv4mpegpipeYUV4MPEG piperedwall@redwall-G3-3500:~$ ffmpeg -formats|grep h264ffmpeg version 3.4.11-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers DE h264raw H.264 videoredwall@redwall-G3-3500:~$ ffmpeg -formats|grep flvffmpeg version 3.4.11-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers DE flv FLV (Flash Video)

可以看到yuv4、h264、flv都是不同的编码格式,所以我就想能不能解决codec not compatible的问题

linux下使用ffmpeg采集摄像头数据并编码成h264文件

上面的博客确实做到了将原始摄像头yuyv422格式的数据转换为h264格式的数据并写入文件,但存在两个问题:

1、仅写入文件,但并未实现推流

2、h264格式的数据适用于RTSP,并不适用于RTMP,这一点是从下面的博客发现的

FFmpeg4入门27:捕获摄像头编码h264并推流

我下载并阅读了文中的代码,确实是推流到RTSP服务

//编码器部分开始/const char *outFile = "rtsp://192.168.1.31/test"; //输出URLconst char *ofmtName = "rtsp";//输出格式;if (avformat_alloc_output_context2(&outFmtCtx, NULL, ofmtName, outFile) < 0){printf("Cannot alloc output file context.\n");return -1;}outFmt = outFmtCtx->oformat;

所以没办法拿来稍微改改就能用,但还是有借鉴意义的,我看有300行代码和好多陌生的API,就没花时间去研究,后面看看有需要还是得研究下

关于ffmpeg的结构体和API,可以看网上的一些博客,也可以直接看官方文档,官方的比较简略,学习起来还是有一定的时间成本的

ffmpeg重要函数和结构体整理

ffmpeg官方文档

但是下面的博客又给了我一些新的思路

linux FFMPEG 摄像头采集数据推流

博客中使用ffmpeg命令进行本地摄像头的推流,而拉流则是通过ffmpeg的API函数编程实现的

然后我去看陆辉东robot_remote_control中的imagetransfer代码,发现也是只有拉流的实现

void ImgTrancefer::transImg(){av_register_all();avformat_network_init();iCtx = avformat_alloc_context();int ret;ret = avformat_open_input(&iCtx, rtmp_url.data(), NULL, NULL);if(ret != 0){emit TransIMGLog(QString("open input faild!"));qDebug() << "open input faild!";return;}if(avformat_find_stream_info(iCtx, NULL) < 0){emit TransIMGLog(QString("find stream faild!"));qDebug() << "find stream faild!";return;}for(int i =0;i < iCtx->nb_streams;i++){if(iCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO){videoStream = i;break;}}

后面则是一些解码和转码输出的内容,所以是不是只要有拉流输出的代码实现就可以呢,这是个问题

中午吃饭的时候问了陆辉东,说是推流也是通过API实现,但在车上

是我自己的疏忽,应该想到推流代码应该在车上才对,还是要多思考

推流的代码在redwallbot-2中的transfer_img包中,确实给我提供了一些思路,最重要的是打破了我的认知误区,H264格式也可以进行RTMP推流

第一条就说明RTMP可以推H264格式,所以要时刻保持怀疑的态度,对不熟悉的事物要多查多看

陆辉东代码里是订阅摄像头话题,转OpenCV图像格式,然后再编码为H264,最后封装为FLV进行RTMP推流,最重要的有3步

获取摄像头数据,转换为OpenCV图像格式(BGR/BGRA)

通过ffmpeg编码器将OpenCV图像格式编码为H264格式

将H264格式封装为FLV格式进行RTMP推流

其实弄清了分为几个步骤,分别去查相应的解决方法,逐个击破即可

第一步最简单,几乎不用什么新知识,几个参考博客

cv_bridge用于ROS图像和OpenCV图像的转换

第二步也有一些博客,但比较杂,用C++实现的不多,还没有深入研究

OpenCV采集的视频流转化成H264格式裸码流

cv::Mat编码H264

第三步涉及到对H264、FLV等格式的解析,难度较大,代码上也少有较清晰的实现

RTMP 两种方式推流:推H.264、ACC和推FLV封装格式

RTMP推流H.264

H264 推流到RTMP服务器

但是踏破铁鞋无觅处,这样一篇博客从天而降

流媒体解码及H.264编码推流

有一说一真的顶,简直量身定制,我看时间是17年的博客,陆辉东的代码感觉就是在他的基础上改为类实现而已,我再简单优化一下即可

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

MonsterLei/push_video

原文链接:ffmpeg推流摄像头数据至公网服务器_ffmpeg 摄像头推流_Prejudices的博客-CSDN博客

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
“宁愿坐在宝马车里哭”的宝马女:结婚1年被家暴7次,细节流出~

“宁愿坐在宝马车里哭”的宝马女:结婚1年被家暴7次,细节流出~

拾点先生
2024-06-16 19:29:13
真人真做的生猛风月片,再也看不到了

真人真做的生猛风月片,再也看不到了

剧透电影
2024-06-16 16:32:09
中超最新排名:海港逼近申花,泰山升至第四,南通倒数第一

中超最新排名:海港逼近申花,泰山升至第四,南通倒数第一

橙汁的味道123
2024-06-16 21:37:36
Vivo正被印度本土化

Vivo正被印度本土化

EETOP半导体社区
2024-06-16 11:21:36
父亲节,威尔士三小只“大声喊话”威廉:爸爸,我们爱你

父亲节,威尔士三小只“大声喊话”威廉:爸爸,我们爱你

DailyFlora
2024-06-16 20:20:30
小杨哥在海外疯狂搞钱

小杨哥在海外疯狂搞钱

电商报APP
2024-06-14 11:13:23
运20突降俄军重地,中俄核武要首次联合?关键时刻,美军已被牵制

运20突降俄军重地,中俄核武要首次联合?关键时刻,美军已被牵制

笔墨V
2024-06-16 21:30:53
欧洲杯场均3球,球迷看爽了,意大利却尬尴了

欧洲杯场均3球,球迷看爽了,意大利却尬尴了

周到上海
2024-06-16 09:22:16
随着许家印的没落,其女儿的生活也被曝光,奢侈程度令人咋舌

随着许家印的没落,其女儿的生活也被曝光,奢侈程度令人咋舌

天闻地知
2024-06-14 14:07:23
中科院已发表颠覆性研究:尼古丁可延缓衰老!吸烟或是长寿密码?

中科院已发表颠覆性研究:尼古丁可延缓衰老!吸烟或是长寿密码?

蜉蝣说
2024-06-15 21:38:43
江苏省长许昆林新身份曝光,江苏造船订单占全球近三分之一

江苏省长许昆林新身份曝光,江苏造船订单占全球近三分之一

匹夫来搞笑
2024-06-16 16:03:44
国足豪赌世界杯!足协锁定巴西外援 最快1月完成归化

国足豪赌世界杯!足协锁定巴西外援 最快1月完成归化

球事百科吖
2024-06-16 16:34:09
女排横扫波兰!王梦洁仰天怒吼,张常宁+教练狂笑,合影全员兴奋

女排横扫波兰!王梦洁仰天怒吼,张常宁+教练狂笑,合影全员兴奋

篮球资讯达人
2024-06-16 22:04:27
惊人消息!韦世豪或告别国家队,伊万、郑智的反应引发热议

惊人消息!韦世豪或告别国家队,伊万、郑智的反应引发热议

人生趣事悟语
2024-06-16 03:56:19
F16进场第一件事就是和宇内第一S500碰一下,会如何?

F16进场第一件事就是和宇内第一S500碰一下,会如何?

邵旭峰域
2024-06-15 14:00:02
女生“羞羞”私处痛,男生丁丁太长的过错?

女生“羞羞”私处痛,男生丁丁太长的过错?

水白头
2024-06-16 01:10:02
曝45岁伏明霞离婚,净身出户原因揭晓,71岁百亿丈夫只说6个字

曝45岁伏明霞离婚,净身出户原因揭晓,71岁百亿丈夫只说6个字

深度知局
2024-05-20 19:25:53
“复兴号”列车车厢转运过程中被货车撞上,交警:无人受伤

“复兴号”列车车厢转运过程中被货车撞上,交警:无人受伤

极目新闻
2024-06-15 22:36:25
美国一声令下,23国枪口对向中国,不到24小时,中方宣布双反调查

美国一声令下,23国枪口对向中国,不到24小时,中方宣布双反调查

花小猫的美食日常
2024-06-15 11:44:13
华科紧追中科大,西交不敌武大!2024中国大学百强排行榜出炉

华科紧追中科大,西交不敌武大!2024中国大学百强排行榜出炉

水又木二
2024-06-16 11:36:01
2024-06-16 22:56:49
大哥爱情人
大哥爱情人
因为大哥有钱,所以爱情。
1004文章数 155关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

理想车友聚会多车连环追尾 组织者:突遭大雨 车距较近

头条要闻

理想车友聚会多车连环追尾 组织者:突遭大雨 车距较近

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

售17.68万-21.68万元 极狐阿尔法S5正式上市

态度原创

旅游
本地
教育
房产
手机

旅游要闻

@毕业生,江苏这些景区可享免票或优惠

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

教育要闻

高考志愿怎么报?人民日报发布填报技巧→

房产要闻

万华对面!海口今年首宗超百亩宅地,重磅挂出!

手机要闻

消息称苹果计划为 iPhone 17 系列开发一款更薄的机型

无障碍浏览 进入关怀版