标签: audio-streaming

音频流未添加到 html 画布

我有一个在 p5 中创建的 html 画布,我想向其中添加一个音轨,以便我可以通过 webrtc 连接对其进行流式传输。我目前可以流式传输视频,但不能流式传输音频。

我将音频流添加到画布中,如下所示:

let canvasSource = document.getElementById('canvas-viz');

navigator.mediaDevices.getUserMedia({
      audio: true
    }).then(audioStream => {
      audioStream.getAudioTracks().forEach(
        track => { 
          canvasSource.captureStream().addTrack(track) 
        })
      console.log("canv source: ",canvasSource.captureStream().getAudioTracks()); // prints  []
    })
Run Code Online (Sandbox Code Playgroud)

所以我的主要问题是,当我打电话时,canvasSource.captureStream().getAudioTracks()我得到了[]. 所以看来这addTrack不能正常工作。我尝试调用canvasSource.captureStream().getAudioTracks()开发工具,以防发生一些异步愚蠢的事情,并且还 go []。我还在开发工具中尝试了以下操作:

audioTracks = audioStream.getAudioTracks();
canvasSource.captureStream().addTrack(audioTracks[0]);
Run Code Online (Sandbox Code Playgroud)

但这也不起作用,[]在查看时返回getAudioTracks()。当调用 时audioStream.getAudioTracks(),我得到一个大小为 1 的数组以及我的麦克风输入流。

我正在遵循以下所示的方法: how to add aaudiostreamoncanvasstreaminwebrtc

我正在 Chrome 中开发这个。就我的目的而言,目前它不需要在 Firefox 中交叉兼容。

javascript audio canvas audio-streaming

1
推荐指数
1
解决办法
794
查看次数

我正在iOS学习"音频文件流服务参考"

我无法理解这句话"要使用解析器,您将数据从流式音频文件传递到解析器.当解析器具有完整的音频数据包或完整属性时,它会调用回调函数.然后你的回调处理解析后的数据 - 比如播放或写入磁盘." 我不知道什么是"完整包"和"完整属性".我需要你的帮助,谢谢.

audio core-audio audio-streaming audiotoolbox ios

0
推荐指数
1
解决办法
796
查看次数

将 MP4 转换为 WAV

我正在用 Java 创建一个小型音频播放器,可以很好地播放某些格式(例如 WAV)。我发现这是因为javax.sound不支持MP4。但根据我所读到的内容,从 MP4 转换为 WAV 是无损的,所以我相信这应该不会那么困难。我知道有很多第三方库可以做到这一点,但我对下载一个应该相当简单的东西不感兴趣。我研究了每个 ISO 的具体情况,试图了解数据是如何存储的,以便能够创建一个 ISO BufferedReader,并BufferedWritter查看是否可以手动转换它,但我无法找到我正在寻找的信息。在纯 Java 1.7.0 中执行此操作的方法是什么(我知道 JavaFX 有一个 MediaPlayer,但不幸的是我无法使用 1.8.0)。

或者如果有人知道我可以在哪里找到组成 MP4 和 WAV 的每个特定容器信息(例如标头大小/信息、数据、ACK/NACK 等)。

java audio audio-streaming audio-converter

0
推荐指数
1
解决办法
2538
查看次数

通过 WebSocket 传输音频 - Web Audio

我非常接近通过 Websockets 进行音频聊天。我正在构建的这个应用程序的想法是在浏览器中进行群组语音聊天。

我正在使用 socket.io 服务器来转发此信息。

音频传输良好。这段代码的用途是:

let hasHeader = false 
export function emitAudioStream(mic, sock, room) {
    console.log('beginning record')
    const recorder = new MediaRecorder(mic)
    recorder.ondataavailable = (evt) => {
        // fetch the header
        if (!hasHeader) {
            console.log('header:', evt.data)
            sock.emit('header:audio', evt.data)
            hasHeader = true
        }
        // console.log(evt.data.size)
        sock.emit('stream:audio', ({room, streamData: evt.data}))
    }
    recorder.start()
    console.log(`Recording begin. (State: "${recorder.state}")`)

    setInterval(() => {
        recorder.requestData()
    }, 1e3/60)
}
Run Code Online (Sandbox Code Playgroud)

有一些“参与者”的房间——相互联系的个人。服务器处理这样的请求:

    sock.on('header:audio', (packet) => {
        console.log(`setting audio header for ${sock.id}`)
        sock.__audioHeader = packet
    })

    sock.on('stream:audio', ({room, streamData}) …
Run Code Online (Sandbox Code Playgroud)

audio audio-streaming websocket socket.io web-audio-api

0
推荐指数
1
解决办法
6666
查看次数