如何评估显卡的硬件解码能力

ops/2024/10/11 1:22:03/

拿到一张显卡之后,如何评估显卡的硬件解码能力,下面提供一种可以操作的方法供参考。
这里使用的操作系统是linux系统。
linux系统下面,通常用的硬件解码接口有VDPAU,VAAPI, OPENMAX。我们通过调用vaapi接口,来进行硬件解码能力判断。
使用的方法,就是通过调用播放器硬件解码显示视频,然后根据是否音视频同步,来进行解码能力的判断。如果音视频同步,说明解码能力是能够解码当前视频的,如果音视频不同步,说明解码能力不足。

软件环境准备

软件环境,需要如下2个:

  1. mpv播放器
  2. vaapi显卡驱动
    这里,我们打算使用mpv播放器,来播放视频。所以,需要先安装mpv播放器。
sudo apt install mpv

可以通过上述命令,在deb系列操作系统上安装mpv播放器。或者直接找操作系统厂商,让他们提供mpv安装包。
然后,显卡vaapi驱动,一般由显卡厂商来提供。

测试数据准备

测试数据,我们这里以h264为例,先下载一个h264的 3840x2160 60fps视频。下载地址如下:
https://download.blender.org/demo/movies/BBB/bbb_sunflower_2160p_60fps_normal.mp4.zip
下载之后,保存到本地。

进行测试

mpv --hwdec=vaapi --vo=vaapi ~/bbb_sunflower_2160p_60fps_normal.mp4 --window-scale=0.1

输入上述命令,播放视频。命令解析如下:

  1. mpv 是播放器本身的名字。
  2. –hwdec=vaapi,表示使用硬件解码接口为vaapi
  3. –vo=vaapi,表示使用视频输出接口为vaapi
  4. ~/bbb_sunflower_2160p_60fps_normal.mp4 为视频路径,如果你的视频放在另外一个路径,需要改成自己的本地文件路径。
  5. –window-scale=0.1,是把窗口缩小为正常的0.1倍。之所以把窗口缩小,是因为我们这里测试的是解码能力,只要满足解码需求就可以了。即使把窗口缩小,解码还是要解码 3840x2160 分辨率的。

解码能力判断

上述命令正常播放视频之后,我们可以通过终端的打印来判断。比如我们这里,最末尾的打印如下:
AV: 00:01:39 / 00:10:34 (15%) A-V: 0.000 Dropped: 7 Cache: 158s/150MB
下面分别讲解这里的内容:
AV: 00:01:39 / 00:10:34 (15%), 这里,说明视频里面有音频和视频, 当前播放到00:01:39,也就是1分30秒。视频总长00:10:34,也就是10分钟34秒,当前播放进度为15%。
A-V: 0.000, A-V表示的是音视频是否同步,A-V 为0,说明音视频是同步的, 如果A-V 值大于0,说明音频在前面,视频在后面,视频跟音频的差距, 假设这个值为1.00,说明音频超出视频1秒钟。这就是我们判断解码能力的依据。
Dropped: 7 , 表示丢了7帧。一般在视频播放开始处,丢几帧,后面不再丢,说明是能解码过来的,可能是初始化时间长,导致丢了几帧。
Cache: 158s/150MB, 这个是说播放器缓存了多少,这个不重要。

我们这里,播放了1路4k(3840x2160) 60fps视频,A-V:0.000,说明解码能力是超出了 3840x2160 60fps的,那假如我想测试显卡最高能解码3840x2160 视频,能达到多少帧,怎么做呢?可以通过播放多路来实现。
比如我们再开1路,

mpv --hwdec=vaapi --vo=vaapi ~/bbb_sunflower_2160p_60fps_normal.mp4 --window-scale=0.1

然后我们一直加,假设播放了 4路,A-V 还是0, 然后播放5路之后,A-V 大于0,然后持续增加,那么说明这个显卡的解码能力就是 4路4k 60fps,也就是解码能力是 4 * 60fps = 240fps,也就是解码能力是 4k 240fps能力。播放5路视频之后,开始音视频不同步,说明这个显卡,解码 5 x 60fps = 300fps, 解码 4k 300fps是达不到的,解码能力位于 4k 240~300fps 之间。按照保守估计,就是4k 240fps的解码能力。

另外,如果视频播放一段时间,就推出了,可以在后面加参数 --loop,来保证视频循环播放。具体命令如下:

mpv --hwdec=vaapi --vo=vaapi ~/bbb_sunflower_2160p_60fps_normal.mp4 --window-scale=0.1 --loop

http://www.ppmy.cn/ops/123744.html

相关文章

VR科技云展如何以沉浸式体验引领科技成果新展示

一、VR科技云展的展示方式 VR科技云展通过虚拟现实技术,将展厅移植到虚拟空间中,使观众可以通过互联网在线参观展览。这种展示方式打破了时间和空间的限制,观众只需通过电脑、平板、手机等设备,就能随时随地体验展览。 1、沉浸式漫…

博士找高校教职避坑指南:史上最全的避坑秘籍

在学术的海洋中遨游多年,博士们终于要踏上寻找高校教职的征程。这不仅是职业生涯的新起点,更是一场充满未知与挑战的冒险。今天,就让我们来聊聊那些在寻找高校教职时需要避开的坑,希望能为你的求职之路保驾护航。 1. 薪资结构&am…

【计算机网络】Tcp/IP五层协议,Udp报文组成,Udp与Tcp的区别

Tcp/IP五层协议 TCP/IP模型是计算机网络的核心协议之一,通常被分为五层,每一层都有其独特的功能和作用。以下是TCP/IP模型的五层协议的简要描述: 物理层:这一层涉及实际的物理连接,定义了硬件传输介质的特性&#xff…

Final Glory推出“荣耀勋章-神龙”,推动游戏叙事范式发展

GameFi赛道因基建设施的缺失而长期处于加密市场的边缘位置,该叙事在市场中的占有率正在下降。不过好的一面是,随着MetaArena引擎面向市场,正在推动区块链游戏市场的叙事向全新的范式发展。 MetaArena引擎是以零知识证明方案为基础的Web3游戏基…

vue 入门二

参考&#xff1a;丁丁的哔哩哔哩 11.组件基础 传递 props 父组件 <BlogPost title"My journey with Vue" />子组件 <script setup> defineProps([title]) </script><template><h4>{{ title }}</h4> </template>props第…

Django学习笔记九:RESTAPI添加用户认证和授权

在Django REST Framework中添加用户认证和授权&#xff0c;通常涉及以下几个步骤&#xff1a; 1. 认证&#xff08;Authentication&#xff09; 认证是指确定用户身份的过程。Django REST Framework提供了多种认证方式&#xff1a; Token Authentication&#xff1a;通过一个…

【uniapp】使用uniapp实现一个输入英文单词翻译组件

目录 1、组件代码 2、组件代码 3、调用页面 4、展示 前言&#xff1a;使用uniapp调用一个在线单词翻译功能 1、组件代码 2、组件代码 YouDaoWordTranslator <template><view class"translator"><input class"ipttext" type"te…

基于UDP协议的网络通信

和TCP协议不同的是&#xff0c;UDP协议不需要进行稳定的连接即可直接对数据进行收发&#xff0c;即面向非连接的。所以UDP的应用场景在音视频流传输、在线游戏以及网络聊天室等实时传输需求大的背景。因为不需要建立连接&#xff0c;UDP的网络编程模型就比TCP简单许多。 接收端…