Qt编写手机版本视频播放器和Onvif工具(可云台和录像)

news2025/1/16 17:48:36

一、前言

用Qt+ffmpeg写播放器很多人有疑问,为何不用Qt自己的多媒体框架来写,最重要的原因是Qt自带的目前都依赖具体的本地解码器,如果解码器不支持,那就是歇菜的,最多支持个MP4格式,而且在手机上也都是支持本地少部分格式的文件,对于各种视频流完全无能无力。而ffmpeg就不一样了,本身就是自带各种解码器,解码能力绝对超一流杠杠的,本身在桌面端就已经用Qt+ffmpeg写好了对应的播放器,手机版本只需要对应的ffmpeg的库替换成对应安卓版本(一堆.so库文件)就行。

手机版本的布局肯定不能和桌面端一样,所以重新新建了app的布局ui文件,代码完全公用以前的,只需要ui文件调整布局就行,一般会采用竖屏的形式,比如上面显示视频画面,下面对应功能按钮。在视频播放器编译成功手机版本以后,于是顺带也把onvif工具也编译了手机版本,Qt编译对应手机版本最大难点就在环境的搭建,只要环境正常了,原有的程序基本的都可以编译成安卓版本。

二、效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、体验地址

  1. 国内站点:https://gitee.com/feiyangqingyun
  2. 国际站点:https://github.com/feiyangqingyun
  3. 个人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652
  4. 体验地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_video_demo/bin_video_onvif。

四、功能特点

4.1 ffmpeg组件

  1. 支持各种音视频文件、本地摄像头设备,各种视频流网络流。
  2. 支持开始播放、暂停播放、继续播放、停止播放、设置播放进度、倍速播放。
  3. 可设置音量、静音切换、抓拍图片、录像存储。
  4. 自动提取专辑信息比如标题、艺术家、专辑、专辑封面,自动显示专辑封面。
  5. 完美支持音视频同步和倍速播放。
  6. 解码策略支持速度优先、质量优先、均衡处理、最快速度。
  7. 支持手机视频旋转角度显示,比如一般手机拍摄的视频是旋转了90度的,解码显示的时候需要重新旋转90度才是正的。
  8. 自动转换yuv420格式,比如本地摄像头是yuyv422格式,有些视频文件是xx格式,统一将非yuv420格式转换,然后再进行处理。
  9. 支持硬解码dxva2、d3d11va等,性能极高尤其是大分辨率比如4K视频。
  10. 视频响应极低延迟0.2s左右,极速响应打开视频流0.5s左右,专门做了优化处理。
  11. 硬解码和GPU绘制组合,极低CPU占用,比海康大华等客户端更优。
  12. 支持视频流中的各种音频格式,AAC、PCM、G.726、G.711A、G.711Mu、G.711ulaw、G.711alaw、MP2L2等都支持,推荐选择AAC兼容性跨平台性最好。
  13. 视频存储支持yuv、h264、mp4多种格式,音频存储支持pcm、wav、aac多种格式。默认视频mp4格式、音频aac格式。
  14. 支持分开存储音频视频文件,也支持合并到一个mp4文件,默认策略是无论何种音视频文件格式存储,最终都转成mp4及aac格式,然后合并成音视频一起的mp4文件。
  15. 支持本地摄像头实时视频显示带音频输入输出,音视频录制合并到一个mp4文件。
  16. 支持H264/H265编码(现在越来越多的监控摄像头是H265视频流格式)生成视频文件,内部自动识别切换编码格式。
  17. 自动识别视频流动态分辨率改动,重新打开视频流。
  18. 支持用户信息中包含特殊字符(比如用户信息中包含+#@等字符)的视频流播放,内置解析转义处理。
  19. 纯qt+ffmpeg解码,非sdl等第三方绘制播放依赖,gpu绘制采用qopenglwidget,音频播放采用qaudiooutput。
  20. 同时支持ffmpeg2、ffmpeg3、ffmpeg4、ffmpeg5、ffmpeg6以及后续版本,全部做了兼容处理。如果需要支持xp需要选用ffmpeg3或ffmpeg2。
  21. 支持滤镜,源头带各种水印及图形效果,可以将OSD标签信息和各种图形信息写入到MP4文件。

4.2 onvif组件

  1. 广播搜索设备,支持IPC和NVR,依次返回。
  2. 可选择不同的网卡IP进行对应网段设备的搜索。
  3. 依次获取Onvif地址、Media地址、Profile文件、Rtsp地址。
  4. 可对指定的Profile获取视频流Rtsp地址,比如主码流地址、子码流地址。
  5. 可对每个设备设置Onvif用户信息,用于认证获取详细信息。
  6. 可实时预览摄像机图像。
  7. 支持云台控制,可上下左右调节云台,支持绝对移动、相对移动、连续移动三种方式,可对图像拉近拉远。
  8. 支持获取预置位集合、调用预置位、添加预置位、删除预置位等。
  9. 支持图片参数设置,包括亮度、对比度、饱和度、锐度等。
  10. 支持Qt4和Qt6任意Qt版本以及后续Qt版本,亲测Qt4.7到Qt6.5。
  11. 支持任意编译器,亲测mingw、msvc、gcc、clang。
  12. 支持任意操作系统,亲测xp、win7、win10、android、linux、嵌入式linux、树莓派全志H3等。
  13. 支持任意Onvif摄像机和NVR,亲测海康、大华、宇视、天地伟业、华为、海思芯片内核等,可定制开发。
  14. 支持对指定IP地址及onvif地址进行单播搜索,比如跨网段情况下非常有用。
  15. 支持指定过滤条件过滤搜索设备,比如只搜索某个网段的设备或者针对某个地址的设备。
  16. 支持搜索间隔和搜索策略设置,保证所有设备搜索回来,在大量设备现场很有用(亲测上千个摄像机现场,搜索回来的设备数量比摄像机厂家自带搜索工具还要准确)。
  17. 可对设备进行重启、网络参数获取等。
  18. 支持各种事件订阅(入侵报警、越界报警、遮挡报警等)、Onvif抓图等操作。
  19. 支持NTP校时和时间同步设置。
  20. 支持OSD相关操作,可以增删改查OSD信息。
  21. 内置了线程实时执行Onvif指令队列,排队最大速度的执行对应的指令,执行结果信号发出。
  22. 采用的最底层的TCP+UDP通信机制,原创最底层协议解析,纯QtWidget编写。
  23. 超级小巧轻量,总共约3000行代码,不依赖任何第三方的库和组件,跨平台。
  24. 封装好了通用的数据发送和接收解析的函数,可以非常方便的自行拓展其他Onvif处理。
  25. 工具上提供了收发数据文本框,显示收发的数据,方便查看和分析。
  26. 支持所有Onvif设备,代码工整,接口友好,直接引入pri即可使用。

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

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

相关文章

有效的括号

数据结构与算法应用往往隐藏在我们看不到的地方 20. 有效的括号 力扣题目链接 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括…

【Python 随练】打印楼梯与笑脸

题目: 打印楼梯,并在楼梯上方打印两个笑脸 简介: 在本篇博客中,我们将使用 Python 代码打印一个楼梯,并在楼梯上方打印两个笑脸。我们将给出问题的解析,并提供一个完整的代码示例来实现这个效果。 问题…

多目标优化算法:多目标浣熊优化算法(multi-objective Coati Optimization Algorithm,MOCOA)

一、浣熊优化算法COA 浣熊优化算法(Coati Optimization Algorithm,COA)由Dehghani Mohammad等人于2022年提出的模拟浣熊狩猎行为的优化算法,该算法具有进化能力强,收敛速度快,收敛精度高等特点。 COA具体…

【算法与数据结构】454、LeetCode 四数相加 II

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:这道题不仅要计算元素的和为0,还要计算元素和为零出现的次数,说明这道题map比较…

【Python 随练】输出国际象棋棋盘

题目: 输出国际象棋棋盘 简介: 在本篇博客中,我们将使用 Python 代码输出国际象棋棋盘。国际象棋棋盘是一个8x8的方格矩阵,交替使用黑色和白色方格。我们将给出问题的解析,并提供一个完整的代码示例来生成这个棋盘。…

C语言之指针详解(1)

目录 本章重点 1. 字符指针 2. 数组指针 3. 指针数组 4. 数组传参和指针传参 5. 函数指针 6. 函数指针数组 7. 指向函数指针数组的指针 8. 回调函数 9. 指针和数组面试题的解析 大家对比前面C语言之指针初阶来看,指针进阶明显看起来难度大了很多&#xff…

TLS协议详解,一文带你了解TLS协议

前言 TLS(Transport Layer Security)是一种安全协议,用于保护网络通信的安全性和隐私性。它是SSL(Secure Sockets Layer)的后继者,用于在互联网上建立安全的通信连接。本文将介绍TLS的概论、工作原理、发展…

计算机网络——物理层-数据通信的基础知识

物理层的基本概念 在计算机网络中,物理层是网络协议栈中的第一层,负责处理网络中传输数据的物理介质和信号传输的细节。它定义了传输数据的电气、光学和机械特性,以及物理连接的规范和接口标准。 物理层的主要任务是将比特流(0和…

C++之AVL树

目录 一.介绍二.简单实现AVL树1. 基本框架2. 插入结点(Insert)a. 更新平衡因子b. 左单旋c. 右单旋d. 左右双旋e. 右左双旋 3. 删除节点(Erase)a. 更新平衡因子b. 旋转c. 代码 4. 测试 一.介绍 作为对二叉搜索树的优化版本。AVL树是由俄罗斯的两位数学家G.M.Adelson-Velskii和E.…

Python 3 基本语法与基本数据类型 | 菜鸟教程(二)

目录 一、Python3 基础语法 (一)编码 (二)标识符 (三)python保留字 (四)注释 ​(五)行与缩进 (六)多行语句 (七&am…

操作系统复习笔记3

1、条件变量和互斥锁 条件变量一般和互斥锁一起使用,来弥补互斥锁的不足。总得来说,互斥锁用来规范线程对共享数据的竞争使用,条件变量用来协调各个线程合作完成任务。 2、enum枚举类型 enum typeName { valueName1, valueName2, valueName3…

Workerman在线客服系统源码 附搭建文档

Workerman在线客服系统源码 模块化开发 强大的一键生成功能极速简化你的开发流程,加快你的项目开发 响应式布局 自动适配,无需要担心兼容性问题 完善的权限管理 自由分配子级权限、一个管理员司同时属于多个组别 通用的会员和API模块 共用同一账…

【MySQL多表查询】:让你的数据检索更高效

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL中多表查询相关知识的讲解 目录 前言一、多表关系二、多表查询1、交叉连接2、内连接3、外连接 三、集合运算四、七种JOINS实现五、多表查询练习六、总结 一、多表关系 ✨项目开发中,在进行数据库表结…

6月人工智能论文推荐

Prompt Space Optimizing Few-shot Reasoning Success with Large Language Models https://arxiv.org/abs/2306.03799 Prompt engineering 是通过提供明确和具体的指令来增强大型语言模型(llm)能力的基本技术。它使LLM能够在各种任务中脱颖而出,例如算术推理、问…

列表、表格、表单

day02:列表、表格、表单 目标:掌握嵌套关系标签的写法,使用列表标签布局网页 01-列表 作用:布局内容排列整齐的区域。 列表分类:无序列表、有序列表、定义列表。 无序列表 作用:布局排列整齐的不需要规…

Bean 的生命周期

观前提示:本篇博客演示使用的 IDEA 版本为2021.3.3版本,使用的是Java8(又名jdk1.8) 电脑使用的操作系统版本为 Windows 10 目录 Spring 的执行流程 1. 启动容器 2. 根据配置完成 Bean 的初始化 3. 注册 Bean 对象到容器中 4. 装配 Bean 的属性 Bean 的生命周期 Bean 的…

掌握Python的X篇_2_Python的安装

掌握Python的X篇_2_Python的安装 1. 软件安装包下载1.1 Python版本的区别1.2 同一版本不同安装包的区别 2. 安装过程3. 验证是否安装成功 1. 软件安装包下载 下载地址:https://www.python.org/downloads/ 可以看到最新版本和历史版本 1.1 Python版本的区别 就像…

express的使用(五) 简单的使用mongodb

原文链接 express的使用(五) 简单的使用mongodb 不要脸的求关注,希望能让大家批评我的不足点,一键三连最好了 看前提示 本篇主要描述关于express中使用mongodb以及mongodb的简单介绍还有初步使用,不涉及任何常用的语法,不建议有…

算法刷题-双指针-反转链表

反转链表的写法很简单,一些同学甚至可以背下来但过一阵就忘了该咋写,主要是因为没有理解真正的反转过程。 206.反转链表 力扣题目链接 题意:反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2-…

AMD CPU微架构分析

一、SoC架构 1.1 整体架构 Zeppelin 参考链接:wikichip: Zeppelin 通过infinity fabric总线将单die分成多die的SoC架构,每个Die包含两个CPU核(CCX)、2各DDR通道、USB、低功耗IO以及多个IFOP和IFIS serdes接口。 如下所述中&…