OpenHarmony 5.0 mpegts封装的H265视频播放失败的解决方案
问题现象
OpenHarmony 5.0版本使用AVPlayer播放mpegts封装格式的H.265(HEVC)编码格式的视频时出现报错导致播放失败
问题原因
OpenHarmony 5.0版本AVPlayer播放器使用histreamer引擎,因为 libav_codec_hevc_parser.z.so 动态库未开源导致H265编码格式视频解析不到正确的宽高,硬件解码器框架层初始化时因为分辨率不合理导致报错
解决方案
版本信息
OpenHarmony-v5.0.1-Release 和 OpenHarmony-v5.0.2-Release 标准系统
方案一:设置默认的分辨率
修改 foundation/multimedia/av_codec/services/media_engine/plugins/ffmpeg_adapter/demuxer/ffmpeg_format_helper.cpp 文件,"+"符号为新增的代码
void FFmpegFormatHelper::ParseVideoTrackInfo(const AVStream& avStream, Meta &format,const AVFormatContext& avFormatContext)
{format.Set<Tag::VIDEO_WIDTH>(static_cast<uint32_t>(avStream.codecpar->width));format.Set<Tag::VIDEO_HEIGHT>(static_cast<uint32_t>(avStream.codecpar->height));format.Set<Tag::VIDEO_DELAY>(static_cast<uint32_t>(avStream.codecpar->video_delay));+ if ((avStream.codecpar->width <=0 || avStream.codecpar->height <=0) && (avStream.codecpar->codec_id == AV_CODEC_ID_HEVC)) {
+ format.Set<Tag::VIDEO_WIDTH>(1920);
+ format.Set<Tag::VIDEO_HEIGHT>(1080);
+ }double frameRate = 0;...
}
如果demuxer未解析到H265视频的分辨率,设置默认值用于初始化解码器,分辨率的默认值需要在codec hcs配置文件的分辨率范围内(minWidth和maxWidth,minHeight和maxHeight之间)
方案二:打开ffmpeg hevc软解用于解析分辨率
1、third_party/ffmpeg/BUILD.gn 新增h265 parser和decoder源文件编译
ohos_source_set("ffmpeg_dynamic") {source = [..."//third_party/ffmpeg/libavcodec/dovi_rpu.c","//third_party/ffmpeg/libavcodec/dynamic_hdr10_plus.c","//third_party/ffmpeg/libavcodec/dynamic_hdr_vivid.c","//third_party/ffmpeg/libavcodec/hevc_cabac.c","//third_party/ffmpeg/libavcodec/hevc_data.c","//third_party/ffmpeg/libavcodec/hevc_filter.c","//third_party/ffmpeg/libavcodec/hevc_mvs.c","//third_party/ffmpeg/libavcodec/hevc_parse.c","//third_party/ffmpeg/libavcodec/hevc_parser.c","//third_party/ffmpeg/libavcodec/hevc_ps.c","//third_party/ffmpeg/libavcodec/hevc_refs.c","//third_party/ffmpeg/libavcodec/hevc_sei.c","//third_party/ffmpeg/libavcodec/hevcdec.c","//third_party/ffmpeg/libavcodec/hevcdsp.c","//third_party/ffmpeg/libavcodec/hevcpred.c","//third_party/ffmpeg/libavutil/hdr_dynamic_vivid_metadata.c",]...
}
注意:如果是64位平台,还需要添加//third_party/ffmpeg/libavcodec/aarch64 目录下的部分文件,
另外可能需要修改libavcodec/hevcdec.c的部分代码以通过编译
2、third_party/ffmpeg/ohos_config.sh 新增h265 parser和decoder配置
修改1有两处
- "--enable-parser=h263,h264,mpeg4video,vp8,vp9,mpegvideo"
+ "--enable-parser=h263,h264,mpeg4video,vp8,vp9,mpegvideo,hevc"
修改2有两处
- "--enable-decoder=h263,h264,mpeg2video,mpeg4,vp8,vp9"
+ "--enable-decoder=h263,h264,mpeg2video,mpeg4,vp8,vp9,hevc"
结语
修改后验证播放mpegts封装的H.265格式的视频走硬件解码可以正常播放。
下一篇文章更新mp4封装的H265视频播放失败的解决方案。
相关文章:
OpenHarmony 5.0 mpegts封装的H265视频播放失败的解决方案
问题现象 OpenHarmony 5.0版本使用AVPlayer播放mpegts封装格式的H.265(HEVC)编码格式的视频时出现报错导致播放失败 问题原因 OpenHarmony 5.0版本AVPlayer播放器使用histreamer引擎,因为 libav_codec_hevc_parser.z.so 动态库未开源导致H265编码格式视频解析不到…...
Qt从入门到入土(九) -model/view(模型/视图)框架
简介 Qt的模型/视图(Model/View)架构是一种用于分离数据处理和用户界面展示的设计模式。它允许开发者将数据存储和管理(模型)与数据的显示和交互(视图)解耦,从而提高代码的可维护性和可扩展性。…...
缓存之美:Guava Cache 相比于 Caffeine 差在哪里?
大家好,我是 方圆。本文将结合 Guava Cache 的源码来分析它的实现原理,并阐述它相比于 Caffeine Cache 在性能上的劣势。为了让大家对 Guava Cache 理解起来更容易,我们还是在开篇介绍它的原理: Guava Cache 通过分段(…...
[漏洞篇]XSS漏洞详解
[漏洞篇]XSS漏洞 一、 介绍 概念 XSS:通过JS达到攻击效果 XSS全称跨站脚本(Cross Site Scripting),为避免与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故缩写为XSS。这是一种将任意 Javascript 代码插入到其他Web用户页面里执行以…...
【Leetcode 每日一题】2269. 找到一个数字的 K 美丽值
问题背景 一个整数 n u m num num 的 k k k 美丽值定义为 n u m num num 中符合以下条件的 子字符串 数目: 子字符串长度为 k k k。子字符串能整除 n u m num num。 给你整数 n u m num num 和 k k k,请你返回 n u m num num 的 k k k 美丽值…...
IO进程线程(线程)
作业 1.创建两个线程,分支线程1拷贝文件的前一部分,分支线程2拷贝文件的后一部分 2.创建三个线程,实现线程A打印A,线程B打印B,线程C打印C;重复打印顺序ABC。 信号量实现: 条件变量实现&#x…...
1-002:MySQL InnoDB引擎中的聚簇索引和非聚簇索引有什么区别?
在 MySQL InnoDB 存储引擎 中,索引主要分为 聚簇索引(Clustered Index) 和 非聚簇索引(Secondary Index)。它们的主要区别如下: 1. 聚簇索引(Clustered Index) 定义 聚簇索引是表数…...
tomcat单机多实例部署
一、部署方法 多实例可以运行多个不同的应用,也可以运行相同的应用,类似于虚拟主机,但是他可以做负载均衡。 方式一: 把tomcat的主目录挨个复制,然后把每台主机的端口给改掉就行了。 优点是最简单最直接,…...
论文阅读分享——UMDF(AAAI-24)
概述 题目:A Unified Self-Distillation Framework for Multimodal Sentiment Analysis with Uncertain Missing Modalities 发表:The Thirty-Eighth AAAI Conference on Artificial Intelligence (AAAI-24) 年份:2024 Github:暂…...
解决asp.net mvc发布到iis下安全问题
解决asp.net mvc发布到iis下安全问题 环境信息1.The web/application server is leaking version information via the "Server" HTTP response2.确保您的Web服务器、应用程序服务器、负载均衡器等已配置为强制执行Strict-Transport-Security。3.在HTML提交表单中找不…...
概念|RabbitMQ 消息生命周期 待消费的消息和待应答的消息有什么区别
目录 消息生命周期 一、消息创建与发布阶段 二、消息路由与存储阶段 三、消息存活与过期阶段 四、消息投递与消费阶段 五、消息生命周期终止 关键配置建议 待消费的消息和待应答的消息 一、待消费的消息(Unconsumed Messages) 二、待应答的消息…...
springboot三层架构详细讲解
目录 springBoot三层架构 0.简介1.各层架构 1.1 Controller层1.2 Service层1.3 ServiceImpl1.4 Mapper1.5 Entity1.6 Mapper.xml 2.各层之间的联系 2.1 Controller 与 Service2.2 Service 与 ServiceImpl2.3 Service 与 Mapper2.4 Mapper 与 Mapper.xml2.5 Service 与 Entity2…...
2025最新群智能优化算法:云漂移优化(Cloud Drift Optimization,CDO)算法求解23个经典函数测试集,MATLAB
一、云漂移优化算法 云漂移优化(Cloud Drift Optimization,CDO)算法是2025年提出的一种受自然现象启发的元启发式算法,它模拟云在大气中漂移的动态行为来解决复杂的优化问题。云在大气中受到各种大气力的影响,其粒子的…...
2025年Draw.io最新版本下载安装教程,附详细图文
2025年Draw.io最新版本下载安装教程,附详细图文 大家好,今天给大家介绍一款非常实用的流程图绘制软件——Draw.io。不管你是平时需要设计流程图、绘制思维导图,还是制作架构图,甚至是简单的草图,它都能帮你轻松搞定。…...
记录--洛谷 P1451 求细胞数量
如果想查看完整题目,请前往洛谷 P1451 求细胞数量 P1451 求细胞数量 题目描述 一矩形阵列由数字 0 0 0 到 9 9 9 组成,数字 1 1 1 到 9 9 9 代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形…...
Android Studio 配置国内镜像源
Android Studio版本号:2022.1.1 Patch 2 1、配置gradle国内镜像,用腾讯云 镜像源地址:https\://mirrors.cloud.tencent.com/gradle 2、配置Android SDK国内镜像 地址:Index of /AndroidSDK/...
做到哪一步才算精通SQL
做到哪一步才算精通SQL-Structured Query Language 数据定义语言 DDL for StructCREATE:用来创建数据库、表、索引等对象ALTER:用来修改已存在的数据库对象DROP:用来删除整个数据库或者数据库中的表TRUNCATE:用来删除表中所有的行…...
Manus演示案例: 英伟达财务估值建模 解锁投资洞察的深度剖析
在当今瞬息万变的金融投资领域,精准剖析企业价值是投资者决胜市场的关键。英伟达(NVIDIA),作为科技行业的耀眼明星,其在人工智能和半导体领域的卓越表现备受瞩目。Manus 凭借专业的财务估值建模能力,深入挖…...
postman接口请求中的 Raw是什么
前言 在现代的网络开发中,API 的使用已经成为数据交换的核心方式之一。然而,在与 API 打交道时,关于如何发送请求体(body)内容类型的问题常常困扰着开发者们,尤其是“raw”和“json”这两个术语之间的区别…...
DeepSeek大语言模型下几个常用术语
昨天刷B站看到复旦赵斌老师说的一句话“科幻电影里在人脑中植入芯片或许在当下无法实现,但当下可以借助AI人工智能实现人类第二脑”(大概是这个意思) 💞更多内容,可关注公众号“ 一名程序媛 ”,我们一起从 …...
3步激活旧设备潜能:开源工具OpenCore Legacy Patcher全攻略
3步激活旧设备潜能:开源工具OpenCore Legacy Patcher全攻略 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 旧设备升级不再是难题,借助开源工具Ope…...
Sketchfab模型下载完整方案:3个核心技巧获取精美3D资源
Sketchfab模型下载完整方案:3个核心技巧获取精美3D资源 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 如果你经常在Sketchfab上发现惊艳的3D模型却无法…...
Android日志记录终极指南:如何用Timber提升开发效率
Android日志记录终极指南:如何用Timber提升开发效率 【免费下载链接】timber JakeWharton/timber: 是一个 Android Log 框架,提供简单易用的 API,适合用于 Android 开发中的日志记录和调试。 项目地址: https://gitcode.com/gh_mirrors/ti/…...
PyTorch模型元数据管理实战:用safetensors和safe_open记录训练信息
PyTorch模型元数据管理实战:用safetensors和safe_open记录训练信息 在机器学习项目的生命周期中,模型训练往往只是冰山一角。真正让一个项目具有长期价值的,是那些隐藏在模型权重背后的故事——超参数的选择、数据集的版本、训练过程中的关键…...
OpenClaw+GLM-4.7-Flash:自动化学术研究助手搭建
OpenClawGLM-4.7-Flash:自动化学术研究助手搭建 1. 为什么需要学术研究助手? 作为一名经常需要查阅大量文献的研究者,我发现自己每天要重复处理三类机械性工作:在十几个学术平台反复切换关键词检索、手动整理PDF文件与笔记、从冗…...
深度学习训练不再难:环境镜像帮你搞定所有依赖,专注代码开发
深度学习训练不再难:环境镜像帮你搞定所有依赖,专注代码开发 1. 镜像环境概述 深度学习项目开发中最令人头疼的问题之一就是环境配置。不同框架版本、CUDA版本、Python版本之间的兼容性问题常常让开发者陷入"依赖地狱"。本镜像正是为解决这一…...
视频换脸功能上线!AI黑科技助力内容创作降本90%
在电商圈摸爬滚打十几年,从国内淘宝京东到亚马逊TikTok,操盘过美妆、服饰、3C多个类目的百万级店铺。这十年最深的体会就是:流量越来越贵,内容越来越卷,成本越来越高。 尤其是短视频赛道。一条带货视频,模…...
记一次 uni-app开发微信小程序 textarea 的“伪遮挡”踩坑实录
文章目录1. 问题描述2. 出现原因3. 解决办法3.1. 给下单按钮添加z-index3.2. 调整textarea的z-index4. 问题解决1. 问题描述 在订单页面中,我使用了 textarea 作为备注输入框,底部有一个固定定位的“下单”按钮。当页面滚动时,textarea 会与…...
3分钟搞定Windows启动盘制作:WinDiskWriter让macOS用户告别复杂命令行
3分钟搞定Windows启动盘制作:WinDiskWriter让macOS用户告别复杂命令行 【免费下载链接】windiskwriter 🖥 A macOS app that creates bootable USB drives for Windows. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. …...
自己搭建永磁同步电机参数变动模块:为预测控制助力
永磁同步电机参数不确定/参数变化/参数失配/参数摄动模块 其中直交轴电感,电阻,磁链,转动惯量,粘滞摩擦系数可设置为自己所需的时变工况 适合做预测控制的同志们 由于MATLAB封装模块不可改动,于是自己搭建了这个模块,默认版本为2021b最近在研…...
