当前位置: 首页 > news >正文

播放器系列1——总概述

播放器核心架构

在这里插入图片描述

模块解释

文件读取

读取视频文件、读取网络文件、读取音频文件,大概分为这三种,目前代码中仅实现了读取视频文件播放,也就是当没有video数据的时候播放器不可使用。

解复用

容器指的是多媒体文件中的封装格式,常见的封装格式有mp4、flv、ts等,其作用就是将不同的流数据进行封装,便于传输和存储。
这一步就是解析多媒体文件中容器,将容器中的视频流、音频流、字母等数据分离出来。从而输入到视频解码器、音频解码器。
编码的视频数据格式有H264、H265等,编码的音频数据格式有AAC、AC3等。

视频解码器

视频解码器是可以是一种硬件或者软件,它的作用是将视频压缩数据解码成原始的视频数据,以便于后续的渲染和显示。
在本项目中,使用的是ffmpeg库中的解码器,如果在商业项目中,可能会使用硬件解码器,目的是释放CPU资源,提高性能。
解码后的数据可能是RGB、YUV等,具体看输出要求来配置解码器即可。

图像处理

目前比较好用的图像处理开源库有ffmpeg、opencv等。可以使用这些库来完成视频的缩放、旋转、裁剪、特效等操作。

音频解码器

音频解码器与视频解码器类似,也可以在软件或者硬件来实现其功能。
解码后的音频数据为PCM数据,不过需要区分音频的通道数、采样率、采样精度。

音频重采样

音频数据参数有sample_rate、sample_fmt、channel_layout等。sample_rate是指每秒采样的次数,sample_fmt是指采样的精度,channel_layout是指声道布局。在不同的平台上由于硬件的差异,可能会出现音频格式不支持的情况,这时候就需要对音频数据进行重采样,来生成符合硬件输入的音频数据。

音效

音效添加可以使用开源的Sox库来实现。它支持的音效种类很多包括drc、peq、compand、echo等。

视频渲染

视频渲染是将解码后的视频数据渲染到屏幕上,以实现视频播放的功能。
本项目中会介绍两种视频数据渲染的方法分别为SDL与qml。由于最后需要画UI,所以使用了qml。

音频播放

本项目使用SDL库来实现音频播放。****

AvSync

AvSync其实就是音视频同步,如果音视频不同步,会严重影响观影体验,这一项也是区分播放器好坏的关键参数。本项目实现逻辑是使视频的pts与音频的pts保持一致,从而实现音视频同步。

相关文章:

  • uni-app(位置1)
  • 设计模式教程:解释器模式(Interpreter Pattern)
  • 高斯积分的证明
  • Grok 3.0 Beta 版大语言模型评测
  • 理解 logits_to_keep = logits_to_keep + 1 在 _get_per_token_logps 中的作用
  • 么是静态住宅IP,跨境电商为什么需要静态住宅IP
  • 杨校老师课堂之信息学奥赛结构体操作使用经典题集锦汇总
  • 力扣LeetCode: 2209 用地毯覆盖后的最少白色砖块
  • Linux C 静态库如何生成并使用
  • Javascript使用Sodium库实现 aead_xchacha20poly1305_ietf加密解密,以及与后端的密文交互
  • Web 自动化测试提速利器:Aqua 的 Web Inspector (检查器)使用详解
  • MySQL 选择数据库
  • SQL Server 创建用户并授权
  • 【算法基础】--前缀和
  • Spring全面讲解(无比详细)
  • [Android]DialogLifeCycle禁止点击背景关闭弹窗
  • 0099__Visual Studio 引入外部静态库与动态库
  • MySQL 插入更新语句(insert…on duplicate key update语句 )
  • VMware安装Centos 9虚拟机+设置共享文件夹+远程登录
  • 跳跃游戏(力扣55)
  • 南京艺术学院博导、雕塑家尹悟铭病逝,年仅45岁
  • 信俗与共:清代新疆回疆儒释道庙宇的中华政教
  • 流失79载,国宝文物“子弹库帛书”(二、三卷)回归祖国
  • 英国6月初将公布对华关系的审计报告,外交部:望英方树立正确政策导向
  • 自然资源部:不动产登记累计化解遗留问题房屋2000多万套
  • 北方产粮大省遭遇气象干旱,夏粮用水如何解决?