zlmediakit 新增可以使用硬件加速的转码http api接口方法

news2024/11/16 21:48:48

根据项目需求,我们需要使用硬件解码的方式进行网络摄像头数据帧的解析,给到算法模块使用

1、通过ffmpeg命令实验,ffmpeg -i IPC_URL -f rtsp rtsp://*/live

该命令默认是使用cpu进行解码的,我们需要使用GPU进行解码。

2、ffmpeg硬件加速,这个需要安装相关的驱动,并且在编译ffmpeg的时候,增加cuda编译,这样通过

ffmpeg -hwaccel cuvid -i IPC_URL -f rtsp rtsp://*/live,就可以使用gpu进行解码了。

3、以上两种方法只是直接使用 ffmpeg进行转码了,但是无法我们无法破坏ffmpeg指令过程,获取到解码得到的帧数据

4、查看zlmediakit里面提供的接口,默认的推流、拉流都是不通过ffmpeg的,无法通过ffmpeg相关方法得到数据帧。

5、查看zlmediakit api接口,发现有个ffmpegSource接口,验证这个接口的作用。

      发现这个就是在zlmediakit里面调用了ffmpeg命令,进行拉流转码的。也无法满足我们的需求

6、决定对mk_transcode.cpp模拟ffmpegSource进行封装。并提供http api接口。

     发现player_opencv.c测试代码里面,有提取fame的方法。

 //todo 此处转换为opencv对象
    cv::Mat *mat = new cv::Mat();
    mat->create(h, w, CV_8UC3);
    mk_swscale_input_frame(ctx->swscale, frame,  (uint8_t *) mat->data);

 7、http api接口增加方法

     因为http api是通过postman来发起的,需要修改postman里面的json collect 数据集,增加两个接口,一个是转码开始,一个是转码结束的接口。

  

这里需要注意的点,GET后面的api 参数一定要与webapi.cpp 里面api_regist注册的相同

8、http请求方法好了,需要提供对应的处理代码

    需要在webapi.cpp installWebApi里面增加相关处理代码。

 api_regist("/index/api/addTranscodeFFmpeg",[](API_ARGS_MAP_ASYNC)

这里需要增加自己封装的类FFmpegTranscode

通过在postman里面增加的ffmpeg转码接口,发起请求,处理的地方就会到webapi.cpp里面的api_regist("/index/api/addTranscodeFFmpeg" ,也就是HTTP Get/post方法 

代码到这里,我觉得完成了。进行测试,发现http只有 方法请求,但是一直没有response。

9、查看ffmpegsource方法

 //推流给自己成功
                cb(SockException());里面有这个回调,加上一切ok。

 

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

皮特测评:蓝牙耳机哪个品牌最好?300元内最好的蓝牙耳机

大家好,我是皮特,今天要发布的测评主题是:“蓝牙耳机哪个品牌最好?”粉丝们私信给我希望能分享一期平价好用的蓝牙耳机,我购入十多款蓝牙耳机进行了多角度的测评后,总结了五款表现最优秀的蓝牙耳机&#xf…

神仙级python入门教程(非常详细),从零基础入门到精通,从看这篇开始

一.初聊Python 1.为什么要学习Python? 在学习Python之前,你不要担心自己没基础或“脑子笨”,我始终认为,只要你想学并为之努力,就能学好,就能用Python去做很多事情。在这个喧嚣的时代,很多技术…

前端开发之Echarts 图表渐变两种实现方式和动态改变图表类型

前端开发之Echarts 图表渐变两种实现方式 前言效果图一、echarts中存在两种渐变方式1、color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{},{},{}])简单案例 2、{type: linear,x: 0,y: 0,x2: 0,y2: 1, [{},{},{}]}案例 二…

硬件通信之 从单片机到C/C++指针详解

一 单片机理论概述 1.1 单片微型计算机(Single Chip Microcomputer)简称单片机,是把组成微型计算机的主要功能部件(CPU、RAM、ROM、I/O口、定时/计数器、串行口等)集成在一块芯片中,构成一个完整的微型计…

centos7安装nginx

1.配置环境 1).gcc yum install -y gcc2).安装第三方库 pcre-devel yum install -y pcre pcre-devel3).安装第三方库 zlib yum install -y zlib zlib-devel2.下载安装包并解压 nginx官网下载:http://nginx.org/en/download.html 或者 使用wget命令进行下载 wg…

第一期 | ICASSP 2023 论文预讲会

ICASSP 2023 论文预讲会是由CCF语音对话与听觉专委会、语音之家主办,旨在为学者们提供更多的交流机会,更方便、快捷地了解领域前沿。活动将邀请 ICASSP 2023 录用论文的作者进行报告交流。 ICASSP (International Conference on Acoustics, …

GraphHopper调研笔记

一、 GraphHopper GraphHopper是一种快速且内存有效的Java导航引擎,默认使用OSM和GTFS数据,也可导入其他的数据源。支持CH(Contraction Hierarchies)、A*、Dijkstra算法。 1、应用介绍 graphhopper有以下几种常见的地图应用&am…

AI 不会取代打工人,使用 AI 的人才会

一、被AI端掉饭碗之前,提升自己的硬核实力 AI工具带来了工业革命级别的效率提升,除了强大,更多的引发了打工人的集体焦虑:“我的活ai都能干了,那我做什么呢?” 当然,还有另一种更积极的解答&a…

C语言中变量的默认初始值

在对数组元素求和时,竟然离奇的发现错了,冲了一会儿浪之后才现在问题在这里 main函数代码: int main(void){int arr[5] {1,2,3,4,5};int res sum(arr,arr5);printf("%d",res); }求和函数(利用双指针求的数组元素之和…

第8章 虚拟主机

第8章 虚拟主机 虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。 Nginx提供虚拟主机的功能,就是为了让我们不需要安装多个Nginx&#xf…

2023年8月24-25日|2023中国绿色数据中心峰会

2023中国绿色数据中心峰会 会议背景 应对气候变化已经成为21世纪人类社会面临的紧迫挑战,推进绿色发展成为全球共识。2021年12月,国家发改委等四部门印发的《贯彻落实碳达峰碳中和目标要求推动数据中心和5G等新型基础设施绿色高质量发展实施方案》提出…

QT MD4 MD5 Sha1等几种加密方式

QT MD4 MD5 Sha1等几种加密方式 [1] QT MD4 MD5 Sha1等几种加密方式[2] qt MD5 和AES 加密一 、MD5 加密二、AES 加密和解密 [3] QT中sqlite数据库数据加密/混淆---MD5/SHA1/SHA2/SHA3(1)创建一个加密对象(2)放入要加密的数据&…

嘉立创EDA PDF文件的输出教程

在PCB生产调试期间,为了方便查看文件或者查询相关元件信息,会把PCB设计文件转换成PDF文件。下面介绍常规PDF文件的输出方式。 前期工作是需要在电脑上安装PDF阅读器,准备充足后按照以下步骤进行操作。 1)执行菜单命令“导出-PDF…

企业财务管理为何需要数字化转型?

为什么企业财务管理需要数字化转型? 许多企业在推动各大业务部门进行数字化转型时,往往会忽略财务部门。然而,作为掌握公司核心资源与数据和推动企业数字化建设的部门,财务也应成为企业数字化转型的重要突破口。 这篇就用几个案…

用Leangoo领歌Scrum敏捷开发工具管理产品路线图?

那我们来看下,如何利用Leangoo管理产品路线图? 首先什么是产品路线图? 产品路线图是一个高层次的战略计划,它描述了产品在未来一段时间可能会如何发展和壮大。 产品路线图确保整个产品团队持续关注产品的目标,帮助产…

07-微服务部署2023系列-centos+docker部署nacos

1、创建nacos的数据库配置 1.1、创建数据库 1.2、创建用户nacos并授权数据库 参考 06 mysql 创建账户部分内容 1.3、执行数据库脚本 导入官方nacos sql语句。如果是历史有历史数据, 从历史数据sql导入 2、创建 bridge 网络并指定 IP 区间 2.1、创建自定义网络…

第十章 使用Samba或NFS实现共享文件

文章目录 第十章 使用Samba或NFS实现共享文件一、SAMBA文件共享服务1、SAMBA简介2、相关配置(1)、安装软件(2)、删除多余配置文件(3)、Samba服务验证方式 3、配置共享资源(1)、用于设…

认识 AbortController控制器对象 及其应用

参考文章1 参考文章2 一、什么是AbortController (abort 意为 中止/废弃) AbortController是一个控制器对象(DOM API),可通过new构造函数的方式,生成控制器实例对象,根据需要终止/取消一个或多个Web请求/监听事件 通…

微信开发者工具突然打不开问题解决

今天微信小程序开发者工具 好好的在电脑里 突然就打不开了 这个问题已经上百度了 想必并不是很少遇到 可能是版本太旧 或者 其中依赖文件丢失 这个基本不用抱什么幻想 还是得重新装 先将快捷打开方式删掉 然后找到工具所在目录 把它删了 然后访问如下地址 https://mp.weixi…

日期时间选择器el-date-picker,限制可选范围,以后端接口某个时间字段为时间节点

哈喽 大家好啊 今天需要做一个时间选择器的限制,不然用户选择某个时间节点之前的时间 比如用户选择发货时间不允许早于收货时间(来自后端接口) picker-options当前时间日期选择器特有的选项参考下表object 首先申明一个时间可选对象 因为我…