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

视频播放器的技术组成

Qt视频播放器实现(目录)

什么是视频

我们这里讲的视频,通常也包括了音频。因为没有声音的画面播放几乎是不可接受的。

这样暗含了一个事实,那就是视频总是包括视频数据和音频数据两部分。

Video 表示视频;

Audio 表示音频;

视频播放器播放什么

如同本专栏介绍描述的一样,一个视频播放器通常可以播放本地的mp4等视频文件。

这些视频文件里都包括了视频数据和音频数据混在一起,但是结构化的混在一起。

而不是杂乱无章的混在一起。

早期的本地视频播放器

这是最早的视频播放器,比如 realplayer , 超级解霸。

这些播放器只能播放本地文件,主打一个格式适配的多。

rmvb, mp4, avi , mov , 等等。

现在的播放器

现在随着网络视频的普及,播放网络视频已经非常普遍。

播放网络视频通常是使用 rtmp webrtc 等视频传输协议,把服务器端的视频流拉拉取到电脑内存里,解码播放。比如抖音的客户端,YouTube网页客户端。

这些播放器不管是在浏览器里的插件,还是PC客户端的软件,都是一样的。

都是拉流解码渲染:

和早期的本地视频文件播放器一样,网络上传回来的数据包也是视频包根音频包交叉在一起的。

就像传送带上又又萝卜,又有白菜一样。

上图中,有的包里是视频数据,有的包里是音频数据。只有拿到包,拆开才知道里面到底是音频还是视频数据。

显卡GPU

将YUV数据送给GPU显卡去计算,按照对应的色彩空间解码转换为RGB数据才可以被显示器显示。

如果你的电脑没有独立显卡,那么你的电脑也一定有集成显卡。

Windows电脑,打开任务管理器,可以看到GPU利用率。这就是你电脑的显卡。

如上图所示,我的笔记本是Intel处理器,内置集成显卡有两个计算单元。

声卡

声卡不是我们的重点,因为计算量几乎都在视频数据部分。

解码器 FFmpeg

由于音视频格式五花八门,在压缩解压缩各个阶段格式又不一样。所以工作量庞大二繁琐。

这样的格式又是标准的,所以早就被大名鼎鼎的FFmpeg搞定了。

FFmpeg既可以编码也可以解码。

我们使用FFmpeg主要是用来从文件或者网络流中提取出Video 包和 Audio 包。

再利用FFmpeg将视频包解码得到H264格式,以及音频包解码得到 AAC 格式。

FFmpeg在视频播放器中的工作主要是下图中绿色部分:

播放器实现的主要工作

播放器主要的工作就是多线程处理上述各个模块的数据:

http://www.lryc.cn/news/174854.html

相关文章:

  • Stable Diffusion 系统教程 | 强大的ControlNet 控制网
  • Hadoop-sqoop
  • [论文阅读]YOLOV1:You Only Look Once:Unified, Real-Time Object Detection
  • Ubuntu 20.04 安装MySQL 8.0.34
  • MySQL 高级语句 Part1(进阶查询语句+MySQL数据库函数+连接查询)
  • Rust免杀 Shellcode加载与混淆2
  • 牛客java训练题 day1
  • 接口测试练习步骤
  • Qt/C++音视频开发56-udp推流和拉流/组播和单播推流
  • 人工智能轨道交通行业周刊-第61期(2023.9.18-9.24)
  • for...in 和 for...of 的区别
  • 高并发系统 - 接口幂等技术方案,高可用系统架构与技术选型
  • 简单的手机电脑无线传输方案@固定android生成ftp的IP地址(android@windows)
  • Unity3D 检测鼠标位置的Sprite像素颜色
  • layui input 监听事件
  • 一致性思维链(SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS)
  • 腾讯云16核服务器配置大全_16核CPU型号性能测评
  • HTML中Input elements should have autocomplete attributes的解决方案
  • 2808. 使循环数组所有元素相等的最少秒数;1015. 可被 K 整除的最小整数;1001. 网格照明
  • Python爬虫在Web应用自动化测试中的应用
  • 苹果手机短信删除了怎么恢复?3种有效方法介绍
  • 前端JavaScript中的 == 和 ===区别,以及他们的应用场景,快来看看吧,积累一点知识。
  • 文献阅读:LIMA: Less Is More for Alignment
  • 机器学习第十四课--神经网络
  • React(react18)中组件通信04——redux入门
  • 最新AI创作系统+ChatGPT网站源码+支持GPT4.0+支持ai绘画+支持国内全AI模型
  • react+umi项目中引入antd组件报错:“Button”不能用作 JSX 组件解决方案
  • 常用算法模板
  • 最全跨境独立站建站详细步骤解析
  • 提升群辉AudioStation音乐体验,实现公网音乐播放