gpt4 book ai didi

javascript - 获取 AudioTrack 的音频 channel 数

转载 作者:行者123 更新时间:2023-12-03 01:42:20 27 4
gpt4 key购买 nike

我有一个视频元素,通过 MSE 添加数据。我正在尝试确定每个轨道中有多少个音频 channel 。

AudioTrack 对象本身没有包含此信息的属性。我知道的唯一方法是使用 Web Audio API:

const v = document.querySelector('video');
const ctx = new OfflineAudioContext(32, 48000, 48000);
console.log(Array.from(v.audioTracks).map((track) => {
return ctx.createBufferSource(track.sourceBuffer).channelCount;
}));

对于具有单个单声道的视频,我希望得到 [1] .对于具有单个立体声轨道的视频,我希望得到 [2] .然而,每次我得到 [2]无论原始源中的 channel 数是多少。

问题:
  • 是否有正确的直接方法来获取 AudioTrack 中的 channel 数?
  • 我还可以使用 Web Audio API 做些什么来获得正确数量的 channel 吗?
  • 最佳答案

    我偶然发现了一个似乎有效的答案。它看起来像使用 decodeAudioData我们可以获取一些关于文件的缓冲区数据。我构建了一个小函数,它返回一个带有缓冲区数据的 Promise,该缓冲区数据应该返回音频文件的正确 channel 数:

    function loadBuffer(path) {
    return fetch(path)
    .then(response => response.arrayBuffer())
    .then(
    buffer =>
    new Promise((resolve, reject) =>
    audioContext.decodeAudioData(
    buffer,
    data => resolve(data),
    err => reject(err)
    )
    )
    )
    }

    然后你可以像这样使用它:
    loadBuffer(audioSource).then(data => console.log(data.numberOfChannels))

    如果可以多次调用数据,最好存储和重用数据。

    关于javascript - 获取 AudioTrack 的音频 channel 数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46245594/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com