【问题标题】:Convert MediaElementAudioSourceNode to AudioBufferSourceNode将 MediaElementAudioSourceNode 转换为 AudioBufferSourceNode
【发布时间】:2016-08-16 12:04:04
【问题描述】:

如果要解码音频数据,createMediaElementSource() 在移动设备上不起作用,但是 createBufferSource() 方法可以正常工作:

此代码在网络浏览器中正常工作,但在移动设备中不正常:

var audioSource = new Audio();
audioSource.src= "Test.mp3";
var audioCtx = new AudioContext();
var sourceT1 = audioCtx.createMediaElementSource(audioSource); //This is the source audio
//My Decoding...

此代码适用于 Web 和移动浏览器:

var audioSource = new Audio();
var audioCtx = new AudioContext();
var sourceT2 = audioCtx.createBufferSource(); //This is the source audio
request = new XMLHttpRequest();
request.open('GET', 'Test.mp3', true);
request.responseType = 'arraybuffer';
request.onload = function() {
 var audioData = request.response;
audioCtx.decodeAudioData(audioData, function(myBuffer) {
 sourceT2.buffer = myBuffer;
//My Decoding...
 },
function(e){"Error with decoding audio data" + e.err});
}

在我的情况下,我有一个来自要解码的视频播放器的音频源,即 MediaElementAudioSourceNode,我需要将其转换为 AudioBufferSourceNode 以使我的代码在移动设备上运行,换句话说,是否可以将 sourceT1 转换为 sourceT2

知道怎么做吗?

编辑: 基于这个answer,可惜我觉得是不可能做到的

【问题讨论】:

  • 我认为这是不可能的任务,因为它不受支持。
  • 您需要访问哪些视频文件?你可以使用file-api吗?之后你想对音频做什么?或许还有别的办法……
  • 我需要获取远程音频流的字节频率,问题是当我使用 createMediaElementSource() 创建媒体时,getByteFrequencyData() 在移动设备中不起作用。现在我正在尝试另一种方法,您知道任何可视化流音频 (.m3u8) 频率的解决方案吗?

标签: javascript html5-audio web-audio-api audiobuffer


【解决方案1】:

您没有说,但如果您使用的是 Chrome,那么 createMediaElementSource 现在应该可以工作了。不过,您必须先转到 chrome://flags 并启用统一媒体管道标志。

【讨论】:

  • 您的意思是移动设备中的 chrome 吗?
猜你喜欢
  • 2021-10-28
  • 1970-01-01
  • 2017-07-20
  • 2012-03-15
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
相关资源
最近更新 更多