首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在HTML/JavaScript游戏中,我应该为Internet使用什么音频?

在HTML/JavaScript游戏中,我应该为Internet使用什么音频?
EN

Game Development用户
提问于 2016-12-22 21:41:43
回答 2查看 943关注 0票数 1

我正在计划一些HTML5 5/Javascript游戏。他们将是休闲游戏的大部分,但仍将受益于音乐和音响效果。我真的很想使用<canvas><audio>特性。我预计不需要播放任何电影文件,如.avi或.mp4。

但我遇到了一个问题。根据这张图表,不支持.wav或.ogg!而Safari不支持.ogg。

所以,现在我正在为应该使用什么浏览器的音频文件制作我自己的图表。到目前为止:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                     SFX        Music

Desktop Chrome      .wav        .ogg
Desktop Firefox     .wav        .ogg
Desktop IE          ???         ???
Desktop Safari      .wav        .m4a (alac)
Desktop Opera       .wav        .ogg

Mobile Chrome       .wav        .ogg
Mobile Firefox      .wav        .ogg
Mobile IE            ???        ???
Mobile Safari       .wav        .m4a (alac)
Mobile Opera        .wav        .ogg

(我无法为Microsoft找到任何关于.wav或.ogg是否将在<audio>标记中工作的信息。)

正如您所看到的,最大的问题在于。我应该使用什么音频格式的声音效果和音乐?

看来HTML5只支持3种类型: mp3、wav和ogg。所以对于Safari,如果可能的话,我需要一个插件或者某种方式来本地播放.m4a音乐。mp3是不可能的,因为荒谬的许可费。闪光灯/冲击波也是不可能的。

我读过一些叫做bgsound的东西可以在IE中使用,但是它是“不标准的”。我以前从未用过它,也不知道它是什么。

那么我应该为IE使用什么样的音频格式呢?IE播放声音和音乐的“正常”方式是什么?我真的希望我不需要像Silverlight这样的插件,因为这对用户来说是一种痛苦,特别是休闲游戏用户。

EN

回答 2

Game Development用户

发布于 2016-12-23 01:27:09

Mozilla开发程序网站上,您可以找到以下信息:

  1. IE支持MP4
  2. OGG不受IE支持
  3. IE支持WebM,并增加了插件

无论如何,你需要知道让你的音频文件在所有浏览器上工作是一个真正的痛苦。首先要做的是链接3种格式,以便让浏览器选择它喜欢的一种,但即使这样,由于浏览器、版本等的高度多样性,您可能会遇到许多难以理解的问题。

注意:

尽管它没有回答这个问题,但我认为值得注意的是,一个简单的解决方案是不支持您的游戏的。大多数仍然使用IE的人要么是公司,要么是老年人。无论哪种方式,这些人不太可能玩你的游戏,所以,如果你没有陷入无用的麻烦试图使IE支持,你应该强调。

票数 1
EN

Game Development用户

发布于 2017-01-27 20:21:04

首先问自己这个问题:为什么我要在游戏项目中使用网络技术?

如果答案与此类似:“因为我喜欢/更有效率地使用JavaScript编码”或"HTML+CSS节省了很多时间做GUI“等等。那么,今天有一些方法可以使用这些技术来开发桌面/移动应用程序。

对于桌面,您有电子NW.js。在他们提供的所有优势中,对于你的具体问题,你只需要担心他们所支持的音频/视频格式。在玩游戏时,所有用户都将运行相同的运行时(相同的“浏览器”),不存在由不兼容的浏览器加载游戏页面的风险。

开发的处理方式与任何浏览器游戏几乎相同。兼容的html/css/JavaScript将只起作用,您甚至可以使用js库(如JQuery ),它们只会工作。另外,您可以使用浏览器中不可用的apis来使用文件系统。

现在,如果它必须是一个浏览器游戏,不管出于什么原因,那么您将不得不以通常的方式处理不同的浏览器,即提供每个媒体文件的多个版本。这篇文章浮现在脑海中:http://diveintohtml5.info/video.html

这篇文章是关于视频的,但是音频的策略是一样的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<audio id="electric_discharge_audio">
    <source src="snd/electric_discharge.ogg" type="audio/ogg" />
    <source src="snd/electric_discharge.aac" type="audio/mp4" /> <!--MSIE-->
</audio>

或者使用JavaScript:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var audio = document.createElement("audio");
var source = document.createElement("source");
source.type = "audio/ogg";
source.src = "snd/electric_discharge.ogg";
audio.appendChild(source);
source = document.createElement("source");
source.type = "audio/mp4";
source.src = "snd/electric_discharge.aac";
audio.appendChild(source);

Game.Resources.Audio.ElectricDischarge = audio;

关于"wav“文件。在本地游戏中使用这种格式用于短音效的原因是,在将其编码为mp3/ogg/your_业余格式时,存储空间没有任何增益,对重要游戏音频效果中的音频伪影(子弹、魔法等)的恐惧,在较慢的机器中防止延迟解码(在某种程度上,背景音乐更容易容忍)。

“如果没人玩你的游戏,那就太可惜了,因为不是在10秒内下载,而是花了2分钟,其中1分50秒是下载WAV文件。这就像你的网站上所有的图片都是BMP格式的。没人会这么做!所以我们真的需要压缩格式。”(出发地:https://www.scirra.com/blog/44/on-html5-audio-formats-aac-and-ogg)

在使用web技术时,防止使用错误的声音效果的诀窍不是使用WAV格式。只要您没有检测到编码工件(如果您检测到编码工件,然后使用更高的比特率/质量设置),您就可以使用ogg (或它对每个浏览器的替代)。

诀窍是让音频资源在游戏/级别/区域/地图加载屏幕中预加载,并准备好在需要声音效果时播放。

这个问题将出现在真正的浏览器中,就像电子和NW.js这样的平台。根据设计,当您设置音频元素的src属性时,控制“浏览器”何时开始缓冲它是很棘手的。也许现在存在的一个JavaScript游戏引擎/媒体库可能会在这里有所帮助。

根据我自己的经验,不要相信本地存储将比网络更快。这不是一个本地存储读取速度问题,浏览器将需要缓冲一定数量的数据才能开始播放,您可能不需要关心这个背景音乐,但快速音频效果可能会使您的游戏感到尴尬和不专业,至少在第一次播放每个音频元素。而且已经缓存了它并不能使您免于这种情况,对于当前场景中将要使用的所有音频效果,您都需要有足够的缓冲数据,这样浏览器就可以在调用audio_element.play()时立即开始播放。对于简短的音频资源,预期它们将被全部缓冲,但当使用web技术时,我们对此的控制是有限的。

在这里,一个人正在使用一种技术,包括第一次播放音频,音量设置为0.00000001 (可能也只有0)。https://stackoverflow.com/questions/8375903/problems-preloading-audio-in-javascript

我认为这是可以接受的小音效。就像我说的,让背景音乐在任何时候开始。如果您想在没有奇怪的时间安排的情况下快速更改背景音乐,但同时防止一个非常大的音频文件在后台无声播放,那么您就可以使用canplay身事件来在有足够数据缓冲的情况下立即停止它。

关于非常老的IE版本(在11版之前):像大多数游戏开发人员使用非NVidia/AMD/英特尔 GPU一样(至少在桌面上是如此)。假装他们不存在。

因此,如果要支持多浏览器,您只需要关心Microsoft和11,而我对IE11并不十分确定。

我认为边缘不会给我们带来麻烦:https://blogs.windows.com/msedgedev/2016/04/18/webm-vp9-and-opus-support-in-microsoft-edge/#0SgrdYfAKrdXOpaY.97

Web :如果您决定完全忽略IE,您可以安全地使用它。我仍然需要在Edge中进行测试(如果您已经做了,可以随时编辑这个答案),但是我想它不会给我们带来麻烦。

票数 0
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/134792

复制
相关文章
Python 按分类权重(区间)随机获取分类样本
活动抽奖,参与抽奖产品有iphone, 华为,小米,魅族,vivo,三星手机,要求为这些不同品牌的手机设置被抽奖的概率(基准概率,非绝对概率,即允许存在一定偏差),iphone为0,华为0.35,小米为0.25, 魅族0.1,vivo和三星为0.15
授客
2020/11/24
9510
Python 按分类权重(区间)随机获取分类样本
如何在Redhat中配置R环境
R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。本文档主要讲述如何在Redhat中使用源码方式编译安装及配置R的环境。
Fayson
2018/03/29
3K0
如何在Redhat中配置R环境
如何在R中绘制热力地图
本文介绍了如何利用R语言中的maps包和mapdata包绘制地图,并通过热力地图展示数据分布情况。首先,通过map()函数创建地图对象,并获取每个区域的名字以及顺序。然后,在每个区域的名字和顺序后面,加上需要展示的数据以及经纬度。接着,根据数据的大小设置每个区域的颜色深浅,以区分不同的区域。最后,给地图加上地名标记,并添加热力地图元素。
Erin
2018/01/09
3.2K0
如何在R中绘制热力地图
如何在R中创建日历热图
首先,我们运行Paul Bleicher创建的calendarHeat函数以显示日历热图。 其次,我们创建一些随机的时间序列数据。 最后,我们在两个调色板中绘制时间序列。
用户1359560
2020/04/01
4.5K0
如何在R中创建日历热图
如何在R中绘制树图(TreeMap)
本文介绍了如何利用R语言中的Treemap函数绘制树图,并给出了一个实例,包括使用安装包、设定颜色范围、边框颜色、节点大小、填充颜色等参数。同时还介绍了两种方法,一是通过aggregate函数对数据进行分组,二是通过手动设置index和vSize、vColor、type等参数来绘制树图。
Erin
2018/01/09
5.3K0
如何在R中绘制树图(TreeMap)
如何在30天内,快速累积权重!
我们知道当一个新站建立的时候,快速累积权重很重要,它有利于提高搜索引擎的信任评级,最重要的一点就是有利于友情链接交换,快速的积累相关行业资源。
蝙蝠侠IT
2019/07/12
6110
如何在30天内,快速累积权重!
如何在CDSW中使用R绘制直方图
Cloudera的新产品CDSW(Cloudera Data Science Workbench)集成了R、Scala、Python2、Python3等语言进行统计和数据分析。本文档主要讲述如何在CDSW中使用R语言绘制直方图和饼图,并使用Hive数仓作为数据源。
Fayson
2018/03/29
3.4K0
如何在CDSW中使用R绘制直方图
【R语言】heatmap显示样本类型
今天我们接着讲绘制热图时候的一个小技巧,如何显示样本的类型。我们经常还在文章中看到类似下面这样的热图。会在列的上方用颜色标注样本的类型。这样可以一目了然的看出找到的差异表达基因能否很好的将不同类型的样本区分开。今天我们就来用R代码来实现。
生信交流平台
2022/09/21
6780
【R语言】heatmap显示样本类型
如何用R获取GEO样本信息
以GSE111229为例 方法一 1 下载并保存GEO数据 下载有error可以:设置镜像、访问外国网站、rm(list=ls())一下重试… library(GEOquery) GSE_name = 'GSE111229' options( 'download.file.method.GEOquery' = 'libcurl' ) #windows系统 gset <- getGEO( GSE_name, getGPL = F ) save( gset, file = 'gset.R
生信技能树
2019/05/08
1.8K0
如何用R获取GEO样本信息
SIGIR'23 清华 | 会话推荐中的兴趣趋势挖掘与样本权重自适应分配
标题:Mining Interest Trends and Adaptively Assigning Sample Weight for Session-based Recommendation 地址:https://arxiv.53yu.com/pdf/2306.11610.pdf 会议:SIGIR 2023 学校:清华
秋枫学习笔记
2023/08/18
4920
SIGIR'23 清华 | 会话推荐中的兴趣趋势挖掘与样本权重自适应分配
R语言系列第四期:①R语言单样本双样本差异性检验
之前详细介绍了利用R语言进行统计描述,详情点击:R语言系列第三期:③R语言表格及其图形展示、R语言系列第三期:①R语言单组汇总及图形展示、R语言系列第三期:②R语言多组汇总及图形展示
微点
2019/05/11
2.1K0
R语言参数检验 :需要多少样本?如何选择样本数量
参数检验受制于数据属性的假设。例如,t检验是众所周知的参数检验,假设样本均值具有正态分布。由于中心极限定理,如果样本量足够,测试也可以应用于非正态分布的测量。在这里,我们将研究t检验有效所需的大致样本数。
拓端
2020/11/11
7320
R语言参数检验 :需要多少样本?如何选择样本数量
R语言系列第四期:①R语言单样本双样本差异性检验
之前详细介绍了利用R语言进行统计描述,详情点击:R语言系列第三期:③R语言表格及其图形展示、R语言系列第三期:①R语言单组汇总及图形展示、R语言系列第三期:②R语言多组汇总及图形展示
百味科研芝士
2019/05/23
1.8K0
如何在R中操作非结构化数据?
本文由CDA作者库成员HarryZhu原创,并授权发布。 CDA作者库凝聚原创力量,只做更有价值的分享。 介绍 现代化数据科学中的 DataFrame 概念源起R语言,而 Python Pandas
CDA数据分析师
2018/02/24
3.3K0
如何在R中操作非结构化数据?
如何在Redhat中安装R的包及搭建R的私有源
继上一章如何在Redhat中配置R环境后,我们知道对于多数企业来说是没有外网环境的,在离线环境下如何安装R的包,能否搭建R的私有源对R的包进行管理。
Fayson
2018/03/29
4.2K0
如何在Redhat中安装R的包及搭建R的私有源
工具 | 如何在Python中调用R语言包?
R语言是非常强大的做统计分析和建模方面的开源软件,它有非常丰富的统计软件包,做统计可以说只有你想不到的,没有R办不到的。Python又是当下最流行的编程软件之一,Python也是开源的,包含了非常丰富的第三方库(如机器学习算法),那么如何让Python和R共同工作呢?利用Python中的rpy2包就可以实现这一想法。 如何安装rpy2? 首先需要安装Python的科学计算环境Anaconda和R软件(最好再安装个Rstudio,好用到爆的R软件IDE,安装和管理R包太方便了),安装好Anaconda和R软件
小莹莹
2018/04/24
12K0
工具 | 如何在Python中调用R语言包?
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
AiDBA宝典
2019/09/30
28.8K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
如何在 Pycharm 中高效使用 R 语言 (图文详解)
最新的 Pycharm 大量更新了对 R 的功能支持,在 IntelliJ 的大名加持下,拥有自动补全代码(最新加入了机器学习的新特性),自动格式化代码,版本控制,以及大量的插件支持。
白墨石
2021/01/13
1.4K0
如何在 Pycharm 中高效使用 R 语言 (图文详解)
「R」TCGA barcode(样本ID)以及重名过滤
接触和分析过TCGA数据的朋友肯定会经常处理TCGA barcode的前15位(有时12位),实际从上图可以看出TCGA的barcode设计总共有28位之多。
王诗翔呀
2020/07/03
2.3K0
「R」TCGA barcode(样本ID)以及重名过滤
点击加载更多

相似问题

R:如何在样本权重中使用describe()

14

如何分配R中样本的权重

27

LightFM:权重和样本权重

12

如何在R中应用与NIS (国家住院患者样本)相关的权重

1227

如何在Keras中使用样本权重和数据增强?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文