首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP判断上传文件类型

PHP判断上传文件类型

作者头像
用户7657330
发布于 2020-08-14 07:18:52
发布于 2020-08-14 07:18:52
2.1K00
代码可运行
举报
文章被收录于专栏:程序生涯程序生涯
运行总次数:0
代码可运行

导语

游戏多媒体引擎(Game Multimedia Engine,GME)作为游戏语音的PaaS服务,致力于提升游戏语音的质量,简化语音接入的流程,创造更多的语音玩法。GME基于Wwise引擎推出了独有的解决方案,目前是Wwise官方支持的唯一语音合作伙伴,本文将对Wwise + GME方案做简单的介绍,看一看那些被解锁的游戏语音新玩法。

"如果你的团队正在使用Wwise音频组件,一定要使用GME for Wwise这套解决方案,它非常完美地解决了我们在即时语音功能上遇到的所有问题。"

—— from 《香肠派对》项目团队

当你玩吃鸡时,右侧突然出现窸窸窣窣的脚步声,伴随一声枪响在右耳边炸开,身旁的队友瞬间倒地,队友的惊呼中还带着被击中后痛苦的颤音....

当你进入狼人杀房间,映入眼帘的是夜晚的草原篝火背景,玩家围绕着篝火席地而坐,耳机里隐约传来左边玩家的窃窃私语,主持人的讲述里还夹杂着远处的狼嚎,闭眼,睁眼,今晚又有人被毒...

这些游戏里语音与游戏场景完美融合的效果,能为游戏玩家提供身临其境的沉浸式游戏体验。上一篇《来了!GME沉浸式方案助力游戏实现Metaverse的无限可能》文章中,我们提到Metaverse游戏核心在于真实而沉浸的互动体验。

而在实际操作中,游戏语音如何深度融合游戏场景,为玩家最大程度“还原临场感”却面临诸多困难。为了解决这些行业难题,提升游戏语音体验,作为顶级互动音频引擎Wwise唯一官方授权的语音插件,GME和Wwise的研发团队联合推出了独家语音解决方案。

Game Multimedia Engine(GME)游戏多媒体引擎是针对游戏场景定制的一站式语音解决方案,提供了包括多人实时语音、语音消息、语音转文本以及语音内容审核等功能,开发者需要通过API调用接入GME SDK,从而在游戏中实现语音功能。

传统的独立语音SDK方案接入过程是独立于游戏音效设计的,而基于Wwise音频引擎开发的游戏,GME提供了专门的解决方案,通过使用相应的GME语音插件,游戏开发者可以将语音的接入融入到游戏音效的设计过程,Wwise强大的音频处理能力和音频控制能力都可以运用到语音上,在提升语音音质的同时,为游戏音效提供了更加丰富的语音玩法设计空间。其基本流程框架如下:

由上图可以看出,GME的几个插件把本地的待发送语音(麦克风录制的本地玩家语音)和从网络接收到的语音(待本地播放的其它队友语音)全部送到了Wwise的处理管线中,GME语音流被抽象成了Wwise的基本声音源进行处理,正是基于这样的新颖设计,Wwise-GME相比于传统的独立语音SDK具有独有的优势。

语音与游戏音效统一设计

在Wwise工程中,GME语音音频流无缝接入Wwise音频管线,接入语音的过程和Wwise的音效设计过程深度融合,避免了单独接入一套语音SDK可能引起的音频冲突。在游戏程序端,对GME语音发送和接收的操作抽象成一个个Wwise事件的触发,这些操作和Wwise的标准开发流程体验一致,比以前的API调用的接入方式更直接,更形象。

完美解决行业内痛点

对于传统的独立语音SDK方案,语音开麦以后的游戏音效质量下降、音量跳变以及声音发干都曾是行业痛点,开麦后整个游戏的音效音质都进入“电话音质”级别(低采样率的单声道信号),极大的影响了玩家的游戏体验。Wwise-GME有效解决了手游开麦以后音量类型切换导致的游戏音效质量下降的问题,大幅提升了开麦后语音的音质,在畅快聊天的同时仍然可以保持原有音效做到听声辩位。

强大的设计能力,带来无限的玩法创意

Wwise-GME方案给游戏语音玩法带来非常大的设计空间,由于语音流全部送入Wwise总线,可将Wwise上丰富的音效处理和控制运用到语音,并且能定制化处理每一路语音流,从而增加游戏过程中语音的沉浸感和趣味感,让玩家交流“不出戏”。

对于每一名玩家来说,语音聊天主要涉及两条音频流链路,一条是上行链路,即本地麦克风采集自己的说话声,通过服务器分发到远端队友,另一条是下行链路,即从服务器接收所有队友的语音,混音后经过本地的播放设备播放出来。

上行链路

玩家本地的聊天语音流会经过GME采集插件发送给Wwise引擎,基于Wwise提供的丰富的音效处理能力,游戏端可以根据玩家所处的实际环境和需求来对语音流进行处理,比如质地,混响和变声处理等,试想现在玩家的角色是在教堂中,则处理后的带有教堂混响的语音流会通过GME发送插件发送到服务器中,进而发送到远端的玩家。同样,如果游戏设计了变声玩法,经过实时变声算法处理的语音流会发送到远端的玩家。

上行链路处理流程
上行链路处理流程

下行链路

相比上行链路的单路本地语音流,下行链路通常会收到所有队友的N路语音流,这些语音流会通过GME接收插件传给Wwise引擎,同样游戏端可以根据每一路接收语音对应的玩家在游戏中的实际场景,比如相对本地玩家的位置,距离和有无障碍物阻挡等进行对应的音效处理,处理后的数据经过Wwise混音后在本地设备播放。

具体的游戏场景中,比如队友A站在本地玩家的左前方,那么他听到队友A的声音就是在左前方发出来,队友B跳到一个岩石后边,那么他听到队友B的声音就是经过岩石阻挡并折射出来的声音,同时随着队友接近或者远离听者,对应的声音也会被增强或者衰减。

下行链路处理流程
下行链路处理流程

这种基于游戏场景处理过的语音不再像传统独立语音SDK那样只能提供“语音会议”般的游戏体验,而是把语音体验提升到了更高的层次,即与游戏场景融合的沉浸式语音体验。下面这个视频就展示了Wwise-GME方案的一些基本用法,如果用手机观看Demo视频,需要戴耳机观看,因为这里边运用了双耳虚拟声场技术。

视频中你是第一人称视角,对面灰色机器人是其他队友和你通过GME讲话,3D,变声和混响等都运用到语音聊天处理当中,视频中的所有语音都是实时录屏远端玩家发送的语音,而并非后期合成制作。

Wwise-GME方案这种独特的设计使语音作为游戏音效设计的一部分成为可能,这里列出笔者想到的一些可能的语音处理,更多的玩法期待音频设计师的创作。

发送环境声音或伴奏音

GME提供的不单单是发送玩家语音的能力,还具备发送其它音频流到语音服务器的能力。这个能力最显而易见的应用场景就是卡拉OK了。对于游戏来说,试想这样的游戏场景,玩家在游戏中的角色处在雨中或者风中,当玩家和队友通话的时候,沉浸式的体验就需要把雨声或者风声适当的混音到语音当中。当然还有一些其它的应用场景,比如根据玩家在游戏中的进程发送一些声音Emoji增加语音的趣味性。

模拟语音的反射衍射等处理

沉浸式的语音体验一定要把语音的渲染和游戏的实际场景结合起来考虑。本文之前提到的质地、衰减、变声、混响以及3D定位处理只能算是初阶的处理,为了更好的模拟游戏场景中说话人与听者的语音传输路径,Wwise提供的反射、衍射、声笼和阻挡模型同样可以用来处理队友之间的语音,这些处理的效果正是元宇宙(Metaverse)对语音的终极体验。

人物性格和状态处理

为了增加游戏语音的趣味性,根据玩家在游戏场景中的一些性格和状态变化也可对其语音做一些特定设计的DSP处理。比如在游戏中的玩家被对手击打掉血,那么语音上做一些失真,延迟或者颤音处理表明玩家的痛苦状态,再比如玩家PK掉了对手或者拾到了宝贝,就对语音做一些高通滤波或者语音加速处理,从而体现玩家的兴奋程度等等。

侧链的处理

侧链是混音制作过程中必不可少的处理手段,其基本原理就是用一路信号控制另一路信号。游戏中加入语音功能是为增加游戏的社交属性,语音必须要清晰地传递到听者,当有玩家说话时候,游戏声音混音的焦点就应该落到语音上而不是游戏本身的音效,这就类似收音机电台的做法,DJ要讲话时会让播放的音乐音量降低些,等讲完了话就把音量恢复。

Wwise-GME方案把语音流全部送入了Wwise总线使这种处理在游戏场景下也成为可能,比如在接收的语音处设置一个Wwise Meter,然后根据这个Meter的值动态的控制其它音效的音量大小。

下面这段视频是Wwise的开发商Audiokinetic联合GME制作的Demo视频,其中展示了比如声音反射,阻挡和侧链对GME语音的处理。视频中展示了第一人称第三人称和俯视图视角,绿色机器人是队友和你通过GME讲话,随着机器人所处的位置和环境变化,对应的处理就会施加到语音上(处理细节字幕有描述),这样处理过的语音聊天会让人有身临其境的感觉。同样,视频中的所有语音都是实时录屏远端玩家发送的语音,而并非后期合成制作。

游戏语音解决方案GME和音频引擎中间件Wwise,两个产品各自可以从不同的角度提升游戏的品质,GME增强了游戏的社交属性,从而增加游戏对玩家的粘性。

Wwise音频引擎大幅提高了游戏中互动音效的开发效率,并且提高了游戏中的声音体验。当游戏语音解决方案GME遇到音频引擎Wwise时,GME填补了Wwise生态在语音方面的空白,两者在一起必然会产生出一加一大于二的效果,相信它们的融合方案Wwise-GME会成为游戏音效设计师的强有力工具,为游戏中创造最好最真实最富有创意的声音。

目前,Wwise+GME语音插件已上架Wwise官网并对全行业开放。

01

Wwise+GME方案后续还有操作详解和创意征集活动,

福利多多,大佬云集,欢迎持续关注我们!

02

对Wwise+GME方案感兴趣,

可关注公众号回复「联合方案」加入交流群

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
php判断文件上传图片格式的实例详解
$type = $_FILES'image';//文件名 //$type = $this->getImagetype( $type ); $filetype = ['jpg', 'jpeg', 'gif', 'bmp', 'png']; if (! in_array($type, $filetype)) { return "不是图片类型"; }
用户2323866
2021/07/09
1.9K0
Upload-labs通关笔记(三)
Upload-labs是一个帮你总结所有类型的上传漏洞的靶场 项目地址:https://github.com/Tj1ngwe1/upload-labs 环境要求 若要自己亲自搭建环境,请按照以下配置环境,方可正常运行每个Pass。 配置项 配置 描述 操作系统 Window or Linux 推荐使用Windows,除了Pass-19必须在linux下,其余Pass都可以在Windows上运行 PHP版本 推荐5.2.17 其他版本可能会导致部分Pass无法突破 PHP组件 php_gd2,php_exif
网络安全自修室
2020/07/22
8730
上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?
今天群里有人聊图片上传,简单说下自己的经验(大牛勿喷) 0.如果你的方法里面是有指定路径的,记得一定要过滤../,比如你把 aa文件夹设置了权限,一些类似于exe,asp,php之类的文件不能执行,那么如果我在传路径的时候,前面加了一个../呢,这样这种服务器端的限制就跳过了。(DJ音乐站基本上都有这个问题,以及用某编辑器的同志) 1.常用方法:这种就是根据后缀判断是否是图片文件,需要注意的是这种格式:文件:1.asp;.jpg 1.asp%01.jpg 目录: 1.jpg/1.asp 1.jpg/1.
逸鹏
2018/04/10
1.3K0
上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?
10个 ThinkPHP 开发常用代码片段
在编写代码的时候有个神奇的汇总是好的!下面这里收集了 10+ PHP 代码片段,可以帮助你开发 PHP 项目。这些 PHP 片段对于 PHP 初学者也非常有帮助,非常容易学习,让我们开始学习吧~
php007
2019/11/18
8430
上传靶机实战之upload-labs解题
我们知道对靶机的渗透可以提高自己对知识的掌握能力,这篇文章就对上传靶机upload-labs做一个全面的思路分析,一共21个关卡。让我们开始吧,之前也写过关于上传的专题,分别为浅谈文件上传漏洞(客户端JS检测绕过) 浅谈文件上传漏洞(其他方式绕过总结)
雪痕@
2021/06/10
1.9K0
Upload-labs(1-15)详解
想到这也就知道是绕过方法中的黑名单绕过了,上面的不让上传,想到了可以上传.php5的文件,除了这个还有.phtml.phps .pht 但是要想上传后能执行,要在自己的apache的httpd.conf文件写入
ly0n
2020/11/04
7.6K0
Upload-labs(1-15)详解
PHP 文件上传代码审计
只验证MIME类型: 代码中验证了上传的MIME类型,绕过方式使用Burp抓包,将上传的一句话小马*.php中的Content-Type:application/php,修改成Content-Type: image/png然后上传.
王 瑞
2022/12/28
1.2K0
Upload-labs 通关学习笔记
使用障眼法,将PHP文件修改图像格式后直接上传;使用burp拦截该数据包,修改文件格式(后缀名)
Mirror王宇阳
2020/11/13
4.5K0
Upload-labs 通关学习笔记
Email系列(QQ邮箱 + 含附件的邮箱案例 + 项目实战)上
平台之大势何人能挡? 带着你的Net飞奔吧! http://www.cnblogs.com/dunitian/p/4822808.html 邮箱系列:https://github.com/duniti
逸鹏
2018/04/10
1.1K0
Email系列(QQ邮箱 + 含附件的邮箱案例 + 项目实战)上
[红日安全]Web安全Day5 - 任意文件上传实战攻防
大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式(sec-redclub@qq.com)联系我们。
红日安全
2020/02/20
2.2K0
PHP 常见漏洞代码总结
只验证MIME类型: 代码中验证了上传的MIME类型,绕过方式使用Burp抓包,将上传的一句话小马*.php中的Content-Type:application/php,修改成Content-Type: image/png然后上传.
王 瑞
2022/12/28
1.4K0
实战 | 文件上传漏洞之最全代码检测绕过总结
文件上传漏洞是指攻击者上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。该漏洞在业务应用系统中出现概率较高,究其原因是业务场景中上传附件、头像等功能非常常见,若在系统设计中忽略了相关的安全检查,则容易导致文件上传漏洞。
HACK学习
2022/02/17
15.5K1
实战 | 文件上传漏洞之最全代码检测绕过总结
基于纯真本地数据库的 IP 地址查询 PHP 源码
很多第三方的 IP 地址查询 API 接口,直接调用第三方的接口很方便,但也容易失效导致无法使用。因此今天来分享一个基于本地数据库的 IP 地址查询源码(亲测可行)!
码农编程进阶笔记
2022/09/27
2.7K0
基于纯真本地数据库的 IP 地址查询 PHP 源码
Flask 实现文件上传下载
Flask 针对文件的上传下载相关代码片段,多种方法,包括限制文件格式,大小等。 实现图片文件上传 # name: 简单的实现文件上传任务. import os from flask import Flask, request, url_for, send_from_directory from werkzeug import secure_filename ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif']) app = Flask(__nam
王 瑞
2022/12/28
1.2K0
PHP 字符串与文件操作
字符串比较(字节序): 字节序比较可以使用strcmp/strcasecmp两个函数,只需传入两个字符串即可.
王 瑞
2022/12/28
8850
php实现文件上传
存档: upload1.html(单文件上传) 1 <html> 2 <head> 3 <title>单个文件上传</title> 4 </head> 5 <body> 6 <form action="upload.php" method="post" enctype="multipart/form-data"> 7 <input type="hidden" name="MAX_FILE_SIZE" value="
Angel_Kitty
2018/04/08
4.2K0
php实现文件上传
php通过文件头检测文件类型通用类(zip,rar…)
首先说明下,上面文件头与文件类型映射关系来自网上,如果你有新的文件需要检查,只需要将映射加入即可。 如果你需要知道文件头信息,可以通过工具:winhex打开标准文件查找。如:
IT工作者
2023/07/21
4090
phpstudy后门文件分析以及检测脚本
2019.9.20得知非官网的一些下载站中的phpstudy版本存在后门文件,基于研究的目的,于是有了以下这文。
ChaMd5安全团队
2019/09/25
1K0
phpstudy后门文件分析以及检测脚本
类库封装-PHP图片处理工具
Base64生成图片文件,自动解析格式 /** * @desc Base64生成图片文件,自动解析格式 * @param $base64 可以转成图片的base64字符串 * @param $path 绝对路径 * @param $filename 生成的文件名 * @return array 返回的数据,当返回status==1时,代表base64生成图片成功,其他则表示失败 */ public function base64ToImag
程序猿的栖息地
2022/04/29
7650
PHP使用curl上传文件到远程服务器接口
笔者个人博客 https://qiucode.cn 欢迎大伙围观哦! 当然你的php.ini开启了curl扩展功能 1、文件上传 /** * 以文件上传 第二种方法 */ public function upload(){ $result = array('code' => 0, 'message' => 'ok'); ini_set('upload_max_filesize', '20M'); ini_set('po
游离于山间之上的Java爱好者
2022/12/18
1.8K0
推荐阅读
相关推荐
php判断文件上传图片格式的实例详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验