草庐IT

实时音频编解码之十六 Opus解码

全部标签

JavaScript 播放上传的音频

如何才能在上传音频时播放?我使用了这段代码,但没有用。functionplayFile(obj){varurl=document.getElementById("audio").url;document.getElementById("sound").src=url;document.getElementById("sound").play()} 最佳答案 [编辑]不应使用FileReaderAPI将用户选择的文件加载到其页面中。相反,人们应该更喜欢URL.createObjectURL(File)方法。这将返回一个blobURI,

javascript - headless (headless) JavaScript 测试 HTML5 音频/视频

我知道还有很多其他类似的问题,但是答案并没有提供解决这个问题的方法。我的网站上使用了一个使用HTML5网络音频的JavaScript文件,我想对其进行单元测试。我研究过将QUnit与PhantomJS结合使用,在你说什么之前我知道Phantom不支持它(http://phantomjs.org/supported-web-standards.html),但是我想知道是否有办法解决这个问题?在浏览器中使用QUnit测试它会像您预期的那样工作,但我不想每次都使用浏览器测试它,我希望它在服务器上自动进行。其中一个测试失败的示例:QUnit.test("isPlaying",function(

javascript - 音频文件在线时,如何在HTML5音频对象中设置currentTime?

我有一个带有向前/向后跳过10秒按钮的JavaScript音频播放器。我通过设置音频元素的currentTime来做到这一点:functionPlayer(skipTime){this.skipTime=skipTime;this.waitLoad=false;//initialisemainnarrationaudiothis.narration=newAudio(getFileName(dynamicNarration));this.narration.preload="auto";this.narration.addEventListener('canplaythrough',(

javascript - 在浏览器中压缩音频的解决方案?

我正在努力将音频直接记录在浏览器中并发布到网络服务器。我目前依靠flash访问用户麦克风(使用从https://code.google.com/p/wami-recorder/派生的代码)并将记录的Wav/pcmblob从flash传递到JS以进行上传(使用XHRpost)。这工作正常,但我试图避免发送未压缩的WAV数据(我可以在服务器上压缩音频,但我试图限制那里的CPU密集型工作)。到目前为止,我发现在客户端压缩到ogg的选项包括:利用flash的lab特性将音频压缩成ogg(labs.byhook.com/2011/02/15/ogg-vorbis-encoder-for-flas

javascript - 从音频元素获取音频样本

我想使用网络浏览器从麦克风获取实时音频,并通过网络套接字将其发送到Node.js服务器。我正在使用BinaryJS库将二进制数据发送到服务器。我在从麦克风获取音频样本时遇到问题。这是我所拥有的:window.AudioContext=window.AudioContext||window.webkitAudioContext;varcontext=newAudioContext();varaudio=document.querySelector('audio');navigator.webkitGetUserMedia({audio:true},function(micstream){

javascript - 如何从 Speech Synthesis API 访问音频结果?

SpeechSynthesisAPI允许在ChromeBeta中使用文本转语音功能。但是,浏览器会自动播放TTS请求的结果。如何访问用于后处理的音频结果并禁用API的默认行为? 最佳答案 TTS系统没有标准音频输出,这似乎是故意的,所以不太可能很快改变。要了解原因,您可以查看此界面的另一侧,其中浏览器扩展可以充当TTS引擎并提供客户端可以使用的语音:成为validTTSEngine在chrome中可通过此API访问是关于支持开始/暂停/取消和恢复TTS请求以及将进度更新作为以下类型的事件发送:https://developer.ch

javascript - 我可以使用 JavaScript 进行某种实时媒体解码吗?

我已经实现了一个MJPEG/AVI1解析器,它可以从MJPEG文件中提取JPEG格式的帧。我可以使用元素在DOM上绘制带有提取的JPEG文件的图像,我还可以使用context.getImageData从中导出图像像素数据。我可以制作某种视频流并实时附加那些提取的数据,以便用户可以立即播放吗?我知道我可以使用元素手动制作类似的UI,但我发现MediaSourceExtensions目前允许原生标签接收编码字节流格式。我很好奇我是否可以使用原始像素数据做到这一点。 最佳答案 这是一个有趣的想法。所以首先,您需要创建mp4初始化段。从那里

javascript - 将 Google 身份验证添加到 Firebase 实时数据库

我正在使用Firebase实时数据库,我需要为其添加用户身份验证。用户只能以提供商身份登录Google。当前数据库模式:{"rules":{".read":true,".write":true}}新的模式应该是这样的://Theserulesgrantaccesstoanodematchingtheauthenticated//user'sIDfromtheFirebaseauthtoken{"rules":{"users":{"$uid":{".read":"$uid===auth.uid",".write":"$uid===auth.uid"}}}}在我的案例中,我应该使用什么来进

javascript - 我的 JS 实时应用程序中的垃圾收集时间太长

所以我正在开发这个相当复杂的实时应用程序。我有一个音频引擎,每100毫秒触发一次大量的音频处理功能,以填充立即播放的缓冲区。如果这些音频功能运行得有点晚,即使运行一次,您也会听到声音断断续续。大部分时间一切正常。然而,当垃圾收集器被V8触发时,大约需要150ms才能完成一轮,从而触发上述裂缝。所以问题来了:我怎样才能缩短垃圾回收时间?几点说明:我们可以尝试分配更少的变量,让堆增长得更慢,但我想这不会解决问题:即使GC触发频率减半,我也看不出有任何理由让收集运行快点。我宁愿让它运行的频率加倍,持续时间减半。我读过一些关于V8GC的文章。我知道我无法直接控制GC。我知道它有一个短期过程和一

javascript - 如何查询和过滤 Firebase 实时数据库

这个问题在这里已经有了答案:QuerybasedonmultiplewhereclausesinFirebase(8个答案)关闭5年前。我想从数据库中获取名字和姓氏由用户输入给出的所有人。到目前为止,这是我的代码:admin.database().ref('persons').orderByChild('Firstname').equalTo(firstName).limitToLast(1).once("value").then(function(snapshot){}这段代码只过滤名字,但我找不到任何方法为姓氏添加另一个Where子句。我试图添加另一个orderBy,但它似乎不起作