遇到问题

我们线上手游要给港澳台用户增加cg视频,在我之前文章中已经讲到了我们是怎么在unity中播放cg的——》《使用AVPro Video在Unity中播放开场视频(CG)笔记》,这篇就写一下cg在我们实际项目中遇到的问题。

在某位同事的电脑上(win7)视频无法播放,在win10电脑上播放正常,报如下错误:

"[AVProVideo] If video fails to play then it may be due to the resolution being higher than 1920x1080 which is the limitation of the Microsoft DirectShow H.264 decoder.\nTo resolve this you can either use Windows 8 or above (and disable 'Force DirectShow' option), resize your video, use a different codec (such as Hap or DivX), or install a 3rd party H.264 decoder such as LAV Filters.")

上述错误出自:WindowsMediaPlayer.OnTextureSizeChanged,插件在代码中硬编码写死了DirectShow分辨率上限

尝试借用友组的几个cg视频在她的机器上都可以播放,然后尝试把cg从72MB压缩到22MB还是一样的出错提示。

插件官网大致有提到高分辨率视频的限制情况,但写的不算详细,而且限制是跟随操作系统的

https://www.renderheads.com/content/docs/AVProVideo/articles/feature-highres.html

两个组的cg视频差异(diff)

PS.我们游戏是坚屏,开发分辨率为:720x1280。

问题总结:win7 上不支持高度超过1080分辨率的视频,win10是支持的。

出问题的cg 正常的cg
General这一栏的数据
CodecId isom(isom/iso2/avc1/mp41) isom(isom)
Video这一栏的数据
Video format profile: main@L3.1 format profile: high@L4
分辨率 1080x1920 1920x1080

低配机对视频尺寸或容量的限制?(容错)

通过上面的故障,我们认识到一个问题,在安卓低配机上是否能播放高分辨率的cg?如果不能,那对视频的尺寸限制是多大,或者说视频容量编码格式等等有那些限制?

当然了,如果视频无法播放,比如播放失败,我肯定会保证它不影响正常的游戏流程,通过后台上传错误信息。

通过插件的官方文档查阅到在安卓上使用google的开源视频播放库,所以在安卓系统上对视频的限制,就可以直接看google的文档了

https://developer.android.com/guide/topics/media/media-formats#video-encoding

google提到720x1280高分辨率并不是在所有设备都是可用的。

解决我们的问题

通过真机验证后,我们是这样解决的:限制发行给的视频尺寸为608x1080,在高分辨率设备上视频按比例拉伸。

这个分辨率的视频在安卓、IOS,win7+win10视频播放正常。

我们测试过720x1280的视频在安卓6,10,11真机和模拟器上均可正常播放,但考虑到win7 pc及更低端的东南亚用户,为保险起见我们采用对视频尺寸做限制,比如我们有用户的安卓机器是3+32的vivo y12s,你没看错,2021年了还有3+32的玩家,而且在东南亚还有不少低端机用户。

PS.此解决办法是针对于avpro video1.x,2.x未验证是否有此限制。也可以给win7用户安装第三方解码器来解决。

UE4问题

UE4中h265编码的视频在安卓上播放很暗,单独使用安卓播放这个视频是正常的,你知道怎么解决吗?这是我一个朋友遇到的问题

解决UE4的问题

排查出来是因为渲染设置为gamma就出问题了,改成linear就ok了。

这个问题我在上个项目中也遇到了,我们使用Unity的ongui绘制游戏启动后第一个界面的bg image,图片发白发灰,就是很暗淡,查出来的问题也是gamma的问题。

基础知识科普

编码方式:H.264 ,MPEG4,QuickTime,aac

封装格式:mp4,avi,mov,mpeg

https://github.com/ZHOURUIH/MyFramework 中包含了AVProVideo

视频文件的容器格式和编码格式

编码容器

AVProVideo在Winddows上的编码 NotchLC

同样是H.264+AAC,.mov .mp4 等等不同容器间有什么区别吗?

H.264+AAC是编解码格式,.mov .mp4 是装载前者数据的容器。

视频数据不是像图片那样图片内容是一个整体。视频内容分frame,几个frame一段,一段相当于一个节点,类似xml那样保存在mov中。

mov最早由苹果支持,我刚测了下chrome暂不支持播放mov,mov后缀改成mp4后,chrome就能直接播放了,而HTML5是推支持H.264的,所以你的mp4一定要H.264编码。

所以我的结论是,你要是想用HTML5,那就得用mp4。

查看视频文件编码

在potplayer的信息中可以查看视频文件的编码格式和视频尺寸等信息

在游戏中播放cg视频遇到的问题的更多相关文章

  1. 使用AVPro Video在Unity中播放开场视频(CG)笔记

    游戏中的开场CG(播放视频),采用的插件为AVPro Video1.x(和W的版本一致),Unity版本为2018.4.0f1 Asset Store:AVPro Video - Core Andro ...

  2. [转] Android 4.4中播放HTML5视频<video>的Bug

    近期Nexus 4手机自动升级到Android4.4,本来挺好的一件事儿,结果发现自己的应用中出现一个Bug,应用中使用了Webview播放HTML5视频,代码如下: <video width= ...

  3. 【转】Android 4.4中播放HTML5视频<video>的Bug

    近期Nexus 4手机自动升级到Android4.4,本来挺好的一件事儿,结果发现自己的应用中出现一个Bug,应用中使用了Webview播放HTML5视频,代码如下: <video width= ...

  4. Unity3D中播放视频的方法

    播放视频其实和贴图非常相像,因为播放视频用到的 MovieTexture 属于贴图 Texture 的子类.Unity3D 支持的视频格式有很多,但是还是建议使用 ogv 格式的视频,使用其他格式依然 ...

  5. 在Winform中播放视频等【DotNet,C#】

    在项目中遇到过这样的问题,就是如何在Winform中播放视频.当时考察了几种方式,第一种是直接使用Windows Media Player组件,这种最简单:第二种是利用DirectX直接在窗体或者控件 ...

  6. Unity3d:使用uWebKit插件嵌入网页,网页中的flv视频无法播放

    问题描述:unity3d程序,使用uWebKit插件嵌入网页,用来播放FLV视频,有的电脑可以正常播放,有的电脑在网页中播放不了ps:网页中的播放器用的是player.swf解决方案:是由于网页中的播 ...

  7. IIS中asp网站播放flv视频技术

    播放flv视频文件需要使用flvplayer.swf程序(32K). HTML嵌入代码: <div id="FlashFile"> <object type=&q ...

  8. 用flvplayer.swf在网页中播放视频(网页中flash视频播放的实现)

    原:http://blog.csdn.net/ricciozhang/article/details/46868201 由于公司项目的需求,需要在展示一些信息的时候能够播放视频,拿到这个要求,我就从最 ...

  9. 微信 vue中使用video.js播放m3u8视频,解决安卓自动全屏的问题。

    最近一个项目中需要在微信中播放m3u8格式的视频,刚开始用了 vue-video-player 这个插件,在IOS手机体验良好,本以为完事了, 结果安卓手机一点播放就自动全屏,心态略崩.查了资料说是安 ...

随机推荐

  1. C++ nullptr 和 NULL 的使用区别

    1. 为什么会有nullptr的出现 目的:nullptr的出现主要是为了替代NULL. 那么,为什么要替代NULL呢? 在NULL的定义中存在会有2种方式,有的编译器会将NULL定义成0,有的编译器 ...

  2. 利用C语言将混乱数字排序(即冒泡排序法)(含思路)

    大一C语言 你没学过吗 这篇可以称的上入门级别的c语言了 当然还有水仙花数,冒泡排序等经典的C语言程序 后面也会逐一更新 尽情期待喔~~~ 冒泡排序法的基本思路为:每次将相邻的两个数比较,将小的调在前 ...

  3. powerpoint2013去掉图片背景,转存png

    1.打开powerpoint,点击菜单栏的[插入],如图: 2.点击『图像』,如图: 3.上传图片,如图: 4.上传的图片不是png的,现在需要去掉白色背景,保存成png,选中图片,点击菜单栏的『格式 ...

  4. 所有的Java虚拟机必须实现在每个类或接口被Java程序 “ 首次主动使用 ” 时才初始化他们

    原文:https://www.cnblogs.com/fanjie/p/6916784.html Java程序对类的使用方式可分为两种– 主动使用– 被动使用 被动使用以后再讲,这里说说什么是主动使用 ...

  5. Codeforces Round #139 (Div. 2) 题解

    vp上古场次ing CF225A Dice Tower 1.题目简述: 有 \(n\) 个骰子被叠在了一起.对于每个骰子上的一个数,与它对面的数的和始终为 \(7\) . 你是小明,你只能从正面看这个 ...

  6. libzip开发笔记(二):libzip库介绍、ubuntu平台编译和工程模板

    前言   Qt使用一些压缩解压功能,选择libzip库,libzip库比较原始,也是很多其他库的基础支撑库,编译过了windows版本,有需求编译一个ubuntu版本的,交叉编译需求的同样可参照本文章 ...

  7. ssh服务两句话

    ssh服务采用"非对称密钥系统":主要通过两把不一样的公钥和密钥来进行加密与解密的过程 公钥(Public Key):提供给远程主机进行数据加密 私钥(Private Key):远 ...

  8. 备战- Java虚拟机

    备战- Java虚拟机 试问岭南应不好,却道,此心安处是吾乡. 简介:备战- Java虚拟机 一.运行时数据区域 程序计算器.Java 虚拟机栈.本地方法栈.堆.方法区 在Java 运行环境参考链接: ...

  9. js表单插件

    参考:https://www.html5tricks.com/category/jquery-plugin/jquery-form

  10. Requests 方法 -- post请求操作实践

    1.登录Jenkins抓包 ,小编的Jenkins部署在Tomcat上,把Jenkins.war 包放置到webapps目录. 本次用浏览器自带抓包,按下F12操作,主要看post就可以,登录是向服务 ...