Harmony OS原生端渲染RTMP流功能实现

news2024/10/22 19:26:19

前段时间公司收到鸿蒙的邀请,希望我们加入鸿蒙的生态应用。领导要求我们将原先安卓SDK实现的功能在鸿蒙生态上1:1还原。相信这也是当前很多公司在做的事情。

我们项目原先有获取硬件实时视频流展示的需求,这块功能也耗费了两周的时间才打通测试完毕,抽时间整理一下之鸿蒙上播放Rtmp流所经历的各个步骤及遇到的问题。

首先我们需要在建立一个native工程

原先在安卓项目中,我们渲染opengl的数据采用的是GLSurfaceView,依赖Render去逐帧渲染。在harmony os中,渲染这类数据只能依赖XComponent这个控件,或者直接采用三方播放器ijkplayer去播放。最终我们采用XComponent实现了rtmp流的播放。

首先准备工作:

我们要基于鸿蒙的交叉编译环境编译出我们所需要的ffmpeg库,我是基于ffmpeg4.2编译出来的库,对应链接地址:https://download.csdn.net/download/Crazy9599/89886706

下面是鸿蒙交叉编译的步骤,大家可参考自行编译:

按步骤从环境搭建到编译命令可按顺序操作

​​​​​​​https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/ohos_use_sdk/OHOS_SDK-Usage.md

https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/README.md#/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/template/HPKBUILD

https://gitee.com/openharmony-sig/tpc_c_cplusplus/tree/master/thirdparty/FFmpeg

这里注意集成的方式,编译出的.so文件并不是直接粘出来就能够使用的。在鸿蒙工程中需要有两处存放.so文件的地方,编译出的.so.1这样的文件需要通过命令判断使用的是哪个so文件

下面就是将XComponent控件与native侧的视图进行绑定即可渲染出相应的rtmp流,具体等后面一篇文档再详细说明XComponent与native侧的绑定及回调

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

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

相关文章

springboot 整合 快手 移动应用 授权 发布视频 小黄车

前言: 因快手文档混乱,官方社区技术交流仍有很多未解之谜,下面3种文档的定义先区分。 代码中的JSON相关工具均用hutool工具包 1.快手 移动双端 原生SDK 文档https://mp.kuaishou.com/platformDocs/develop/mobile-app/ios.html 2.快手 Api 开…

每日OJ题_牛客_chika和蜜柑_TopK_C++_Java

目录 牛客_chika和蜜柑_TopK 题目解析 C代码 Java代码 牛客_chika和蜜柑_TopK chika和蜜柑 (nowcoder.com) 描述: chika很喜欢吃蜜柑。每个蜜柑有一定的酸度和甜度,chika喜欢吃甜的,但不喜欢吃酸的。 一共有n个蜜柑&am…

万物皆可浮雕,comfyui一键图片转浮雕

一键生成图片浮雕效果:ComfyUI工作流指南 在图像处理和艺术创作领域,生成浮雕效果的图片是一种既独特又吸引人的表现手法。使用ComfyUI工作流,可以一键生成灰度图、深度图和浮雕图,大大简化了复杂的图像处理过程。本文将详细介绍…

嵌入式C语言之结构体封装函数

嵌入式C语言之结构体封装函数 Chapter1 嵌入式C语言之结构体封装函数结构体封装函数的作用结构体封装函数的应用结构体封装函数的好处举例1举例2举例3 Chapter1 嵌入式C语言之结构体封装函数 原文链接:https://blog.csdn.net/qq_43416206/article/details/13140531…

spring:Springboot3使用模版引擎thymeleaf

文章目录 介绍语法1、文本替换2、属性替换3、条件判断4. 列表循环5. 表单处理 基本示例视图解析机制视图解析器的默认配置为什么用Controller可以,用RestController就只是返回字符串 介绍 Thymeleaf 是一个现代的服务器端 Java 模板引擎,用于在服务器端…

掌握这几款在线音频剪辑工具,轻松成为音频处理达人!

在数字时代,音频剪辑已经成为一项必备技能。无论是制作短视频、播客,还是进行音乐创作,一款好用的音频剪辑工具都能助你事半功倍。今天,我们就来为大家推荐几款实用的在线音频剪辑工具,让你轻松成为音频处理达人&#…

救命!后悔没早点读,自学Python,这本书永远的神,经典又好懂!

这是一本对新手来说很友好的入门书,这本是今年才出的新版,之前的两个版本在某瓣都是9分以上了。专为初学者设计,同时也适合有编程经验的读者。该书由Eric Matthes编写,内容涵盖Python基础语法、编程概念以及丰富的实践项目。 全书…

【工具变量】文明城市评选DID(2000-2023年)

数据简介: 随着城市化的不断推进和全球城际竞争的日益激烈,城市品牌成为争夺优质资源、推动城市可持续发展的重要战略工具。通过关注城市品牌建设,不仅可以刺激本地企业家更多地进行创新活动,为企业家创新活动提供更好的营商环境…

自回溯天线:实现波束自动跟踪的智能天线系统

自回溯天线:实现波束自动跟踪的智能天线系统 1. 引言 自回溯天线是一种能够自动将接收到的信号发射回信号源方向的智能天线系统。它基于相位共轭原理,无需复杂的信号处理和控制系统,就能实现波束的自动跟踪。 自回溯天线技术依靠纯模拟方式实现,通过共轭模块对入射…

vue3中如何更改当前类的文件名称

首先&#xff0c;使用script指定文件名称 <template><div class"person"><h2>姓名&#xff1a;{{ name }}</h2><h2>年龄&#xff1a;{{ age }}</h2><button click"showTel">查看联系方式</button><bu…

【含文档】基于Springboot+Vue的招投标管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

如何恢复误删除的照片?能恢复多少?

最近在旅行时不小心删除了相机里之前拍摄的照片&#xff0c;我尝试在相机上恢复&#xff0c;但是没有找到恢复选项。我还能恢复这些照片吗&#xff1f;求助&#xff01; 一、照片恢复的可能性 照片恢复的可能性取决于多个因素&#xff0c;包括数据是否被覆盖、存储介质的类型、…

C语言笔记 10

求前n项之和 程序设计 f(n)1… 起点终点数字已知&#xff0c;用for循环最合适 #include <stdio.h>int main() {int n;int i;double sum 0.0;scanf("%d", &n);for ( i1; i<n; i ) {sum 1.0/i;}pritnf("f(%d)%f\n", n, sum);return 0; } i…

宿舍离人自动断电控制系统的功能要求是什么?

宿舍离人自动断电系统&#xff0c;由石家庄光大远通电气有限公司匠心打造&#xff0c;专为集体公寓、学生宿舍等密集型居住空间量身定制的智能用电管理解决方案&#xff0c;其卓越性能与广泛适应性&#xff0c;如同智慧之网&#xff0c;精准覆盖并优化每一份用电需求。该系统不…

八卦GPT-5的一切

这篇超长文章——既是评论&#xff0c;也是探索——关于GPT-5 对最受期待的下一代 AI 模型的深入分析 但它不仅仅是关于GPT-5。 • 它涉及我们对下一代AI模型的期望。 • 它关于即将出现的令人兴奋的新功能&#xff08;如推理和代理&#xff09;。它不仅讨论GPT-5技术本身&…

人工智能领域科学问题

科学问题 目前中国在人工智能领域亟待解决的问题包括但不限于以下几个方面&#xff1a; 数据隐私和安全&#xff1a;随着人工智能技术的发展&#xff0c;个人数据的收集和使用越来越广泛&#xff0c;如何保护个人隐私和数据安全成为一个重要问题。 伦理和道德问题&#xff1…

初试PostgreSQL数据库

文章目录 一、PostgreSQL数据库概述1.1 PostgreSQL的历史1.2 PostgreSQL安装1.3 安装PostgreSQL二、PostgreSQL起步2.1 连接数据库2.1.1 SQL Shell2.1.2 执行SQL语句2.2 pgAdmin 42.2.1 打开pgAdmin 42.2.2 查找数据库2.2.3 打开查询工具2.2.4 执行SQL语句三、实战小结文章目录…

LLM-生成器判别器的实现

总结 首先&#xff0c;使用GPT模型获取每个词的生成概率 pLLMp_{LLM}pLLM​。然后&#xff0c;使用训练好的生成判别器&#xff0c;对每个可能的生成结果进行打分&#xff0c;得到 pθ(c∣x1:t)p_\theta(c|x_{1:t})pθ​(c∣x1:t​)。最后&#xff0c;结合两者的输出&#xff…

JAVA就业笔记6——第二阶段(3)

课程须知 A类知识&#xff1a;工作和面试常用&#xff0c;代码必须要手敲&#xff0c;需要掌握。 B类知识&#xff1a;面试会问道&#xff0c;工作不常用&#xff0c;代码不需要手敲&#xff0c;理解能正确表达即可。 C类知识&#xff1a;工作和面试不常用&#xff0c;代码不…

中科星图GVE(案例)——AI实现道路提取分析

目录 简介 函数 gve.Services.AI.roadExtraction(fromGridRes) 代码 结果 中科星图GVE&#xff08;案例&#xff09;——AI实现道路提取分析 简介 AI实现道路提取分析是指利用人工智能技术&#xff0c;通过对图像或地理数据的处理和分析&#xff0c;自动识别和提取道路信…