常见几种视频渲染模式介绍

简介:

1、.视频覆盖:
  大概在1995年,当mpeg1(VCD)回放在PC上开始流行的时候,pc的处理能力还么有强大到实时播放的地步。显卡制造厂商适时的推出了"video overlay(视频覆盖)"的技术。它就是种在显卡上用硬件完成同时显示几个视频的功能(拉伸,颜色空间变换,等等...)的技术,这样就可以在pc上流畅的播放动画而不占用cpu。视频覆盖的画面质量事实上取决于显卡硬件。我发现市面上的绝大部分的显卡显示视频覆盖质量都很不行。在视频覆盖上用视频渲染技术的一个最大的关键就是在每个显卡上只有一个视频覆盖 unit(单元). 这样就迫切的需要多显示器系统了。

2、Direct3D:
  Direct3D是微软提供给程序员使用一个不断进化的功能集合的DirectX库的一部分。在新发布的direct9 中,微软给出了一套新的功能,性能接近于覆盖 surface(接口),但是没那么多限制。视频渲染技术基于direct3d比视频覆盖提供了更好的图像质量,还没有视频覆盖单显示器的麻烦。但是,不是所有的显卡都支持这个技术,还有一些根本不支持,很多不支持整套功能集。作为一个一般的参考。

3、系统默认渲染器:
  当播放器用默认回放模式播放媒体文件的时候,在低于windows xp的所有windows系统上或者windowsxp的"vmr7", 用系统默认渲染器就意味着"标准覆盖" 。

4、标准覆盖渲染器:
  这是最老的视频渲染技术了。在可用的时候它用到视频覆盖,当视频不可用的时候就退回到纯cpu控制视频。纯cpu控制就是说cpu替代了视频覆盖来干这些事情。这对回放是个沉重的打击(cpu更辛苦了),这个渲染的缺点是它不支持固定屏幕高宽比控制,硬件颜色控制(色调/饱和度/亮度/对比度/gamma(灰度))不可操作,而且抓图结果会很很奇怪。

5、覆盖混合渲染:
  同样是运用视频覆盖技术,这个渲染器允许在那些支持颜色控制的硬件上进行颜色控制(色调/饱和度/亮度/对比度/gamma)。有些卡可能只支持颜色控制的一个子集(比如只有亮度)。这个渲染器也支持固定宽高比控制,只要媒体文件支持这个渲染器,缺点就是它返回到纯cpu控制。当视频覆盖不可操作时,它就罢工了。在媒体模式的这个情况时候,就会回到标准覆盖渲染。在dvd模式时,会报错说视频解码器不能连接到覆盖混合器。最后,这个渲染技术还是抓图的效果不够好。

6、视频混合渲染器7(vmr7):
  这个渲染器是视频覆盖技术和direct3d技术的结合,它只在windows xp上有效,后来被vmr9取代了。windows media player 7-10使用这个技术.这个渲染技术默认使用视频覆盖。然而,如果它不可用了,它可以有限的使用direct3d。它的缺点是不可进行颜色控制,截屏还是不够好。

7、视频混合渲染器9(vmr9):
  这是最新的视频渲染技术。它完全建筑在direct3d上,需要direct9和最新的硬件。它可以提供最好的画质(取决于渲染模式和显卡)。vmr9支持硬件颜色操作(如果卡支持),但是没有gamma控制,因为ms没有提供。 vmr9也有宽高比控制。

8、EVR增强渲染模式(vista系统):
  Vista新引入了全新的EVR渲染器,微软的技术文档倒是把这个东东吹得很强劲,但是就目前来说问题还是不少。第一个就是字幕的问题,目前用EVR是无法在高速或者急速模式下把字幕显示出来。那个EVR C/A 倒是能够显示字幕,不过dxva2.0就会失效,换句话说就无法开启geforce8显卡的硬件解码功能。还有一个问题就是色阶或者黑位问题,这个问题在VMR9下可以通过shader得到完美的解决方案,现在到了EVR,色阶问题目前可以说几乎毫无办法,最多能用一下coreavc的fix color功能解决一下,但是还是有相当大的局限性。

另:VMR9支持3种特别的渲染模式:
A.vmr9:窗口:
  这种是最基本的模式,它向后兼容,但不支持帧抓屏,要提醒一点,这个模式在windows sp1和directx9b下有bug,在dvd菜单导航时只能用这个模式了。在windowsxp sp2和direct9c下这个bug没了。
B.wmr9:窗口无转换:
  这个模式比窗口模式高级点,用来截图是最好的。
C.wmr9:渲染无转换:
  这个可是vmr9中最复杂的渲染模式,它可以工作在direct3d独占模式,那就是整个机器被设定为全屏,其他运行的程序不可以操作视频硬件,在这个独占模式下,所耗cpu更少,分辨率越高,回放就更平滑。缺点是在独占模式下,整个机器都献身给视频回放了,你不能干其他任何事情了。

目录
相关文章
|
4天前
|
前端开发
在有状态组件中使用forceUpdate()方法重新渲染
在React类组件中使用`forceUpdate()`重新渲染的步骤包括:继承`React.Component`,定义`updateComponent`方法调用`forceUpdate`,并在模块热替换回调中调用此方法。示例代码展示了如何实现。注意,这种方式需要手动创建和管理组件实例,不适合React Hooks,应优先考虑使用`useState`或`useReducer`来更新状态并触发渲染。
|
4天前
|
数据采集 资源调度 前端开发
React的服务器端渲染:使用ReactDOMServer进行高效页面预渲染
【4月更文挑战第25天】使用ReactDOMServer,React支持服务器端渲染以实现高效预渲染。通过在Node.js环境中将React组件转化为HTML字符串,减少客户端JavaScript负载和渲染时间。优点包括更快首屏加载、改善SEO和兼容无JavaScript环境,但也会增加服务器负载、复杂性和状态管理挑战。开发者需根据项目需求平衡SSR和CSR。
|
6月前
|
JSON 数据格式
uniapp根据不同的状态渲染不同的标签
uniapp根据不同的状态渲染不同的标签
43 0
|
7月前
|
存储 前端开发 容器
uniapp瀑布流:他的数据是纵向渲染,怎么实现动态上拉加载数据?
uniapp瀑布流:他的数据是纵向渲染,怎么实现动态上拉加载数据?
42 0
|
8月前
|
数据可视化 5G 云计算
干货:实时渲染和离线渲染的区别?实时云渲染又是什么?
常见的渲染类型有以下几种:实时渲染、离线渲染、实时云渲染、混合渲染。那么什么是实时渲染?实时渲染和离线渲染有哪些区别?各自有哪些典型应用场景...... 有没有人感觉知道了,但又没完全知道? 今天小编就尽量为大家用简单易懂的方式先解释下实时渲染、离线渲染、实时云渲染这3个概念。
干货:实时渲染和离线渲染的区别?实时云渲染又是什么?
|
9月前
函数方式渲染页面
函数方式渲染页面
35 0
|
9月前
|
数据处理
|
10月前
|
前端开发 JavaScript
【Render】如何将数据渲染到页面?渲染数据的流程
【Render】如何将数据渲染到页面?渲染数据的流程
139 0
|
缓存 JavaScript 前端开发
vue3预渲染和服务端渲染(同构)示例讲解
vue3预渲染和服务端渲染(同构)示例讲解
472 0
vue3预渲染和服务端渲染(同构)示例讲解
|
存储 运维 并行计算
实时渲染和预渲染有什么区别
实时渲染用于交互式渲染场景,如在3D电脑游戏中,通常每帧必须在几毫秒内渲染。它的意思是计算机在计算屏幕的同时输出和显示屏幕。典型代表是Unreal和Unity。像《黑色神话:悟空》这样的游戏便是使用虚幻引擎4创造出来的。实时绘制的特点是可以实时控制,交互非常方便。