亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

未捕獲(承諾)DOM異常:無法將音頻數據從自解碼為 JavaScript

未捕獲(承諾)DOM異常:無法將音頻數據從自解碼為 JavaScript

藍山帝景 2022-09-16 21:53:45
我有一個python應用程序,它從麥克風獲取音頻,將其發送到服務器,服務器又將其發送到javascript應用程序。我已經檢查過,python應用程序發送的數據與javascript應用程序接收的數據相同。在控制臺的 java 腳本應用程序中,將顯示以下消息:。Uncaught (in promise) DOMException: Unable to decode audio data我認為問題是因為發送的數據是原始數據,沒有“.wav”標頭,但我也嘗試使用wave將數據寫入文件并讀取它,出現相同的錯誤。數據作為二進制數據發送/接收,使用網頁密碼。蟒蛇代碼:# self data in initself.sampleRate = 44100self.duration = 1 / 30self.channels = 2self.chunk = 1024self.format = pyaudio.paInt16# codepyAudio = pyaudio.PyAudio()frames = []stream = pyAudio.open(    format=self.format,    channels=self.channels,    rate=self.sampleRate,    input=True,    output=True,    frames_per_buffer=self.chunk)data = stream.read(int(44100 / self.chunk * self.duration))frames.append(data)recording = datastream.stop_stream()stream.close()pyAudio.terminate()記錄數據是發送到 java 腳本應用程序的數據。我知道我應該錄制多個幀,但我這樣做了,因為它更容易測試。腳本代碼:function playByteArray(byteArray) {    var arrayBuffer = new ArrayBuffer(byteArray.length);    var bufferView = new Uint8Array(arrayBuffer);    for (i = 0; i < byteArray.length; i++) {      bufferView[i] = byteArray[i];    }    context.decodeAudioData(arrayBuffer, function(buffer) {        buf = buffer;        play();    });}function play() {    var source = context.createBufferSource();    source.buffer = buf;    source.connect(context.destination);    source.start(0);}我也用聲音設備python模塊嘗試過它,但我得到了同樣的錯誤(正常方法,我無法讓Stream回調方法工作)。
查看完整描述

1 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

我解決了將 更改為以下函數的問題:playByteArray


function playByteArray(byteArray) {

    audio = new Audio();

    var blob = new Blob([byteArray], { type: 'audio/wav; codecs=0' });

    var url = window.URL.createObjectURL(blob);     

    audio.src = url;

    audio.oncanplaythrough = (event) => {

        var playedPromise = audio.play();

        if (playedPromise) {

            playedPromise.catch((e) => {

                console.log(e);

                if (e.name === 'NotAllowedError' || e.name === 'NotSupportedError') {

                    console.log(e.name);

                }

            }).then(() => {


            });

        }

    };

}


查看完整回答
反對 回復 2022-09-16
  • 1 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號