如何在Golang中使用字节保存opus文件?

如何在Golang中使用字节保存opus文件?,go,webrtc,opus,Go,Webrtc,Opus,我们正在使用pion/webrtc库,我们从 RTPEERCONNECTION 我们需要从RTCPacket.Raw(字节列表)保存opus音频文件。我们尝试使用他们的OpusWriter,但没有成功,音频已编写但无法播放 所以问题是我们如何从字节中保存Opus音频文件 守则: for { rtpPacket, err := remoteTrack.ReadRTP() b := rtpPacket.Raw if ivf

我们正在使用pion/webrtc库,我们从 RTPEERCONNECTION

我们需要从RTCPacket.Raw(字节列表)保存opus音频文件。我们尝试使用他们的
OpusWriter
,但没有成功,音频已编写但无法播放

所以问题是我们如何从字节中保存Opus音频文件

守则:

        for {
          rtpPacket, err := remoteTrack.ReadRTP()
          b := rtpPacket.Raw

          if ivfFile != nil {
            if err := ivfFile.WriteRTP(rtpPacket); err != nil {
              log.Println(err)
            }
          }

          checkError(err)
          videoTrackLock.RLock()
          _, err = videoTrack.Write(b)
          videoTrackLock.RUnlock()

          if err != io.ErrClosedPipe {
            checkError(err)
          }
        }
这个例子对你不适用吗?这演示了如何将VP8/Opus保存到磁盘

如果您确实希望音频直接来自,则应使用
有效负载
字段而不是
原始
Raw
包含RTP头,而
Payload
仅包含介质


谢谢你使用π介子!我很乐意在这里或上提供帮助-
os.File
是一个
io.Writer
,您可以将字节写入其中。*代码片段提到
ivfFile
您是否可以确保您只编写Opus数据包(而不是意外地制作视频)*还要再次检查您是否有每个音轨的opus文件。*还有一个已知的错误,Opus文件不能被所有玩家播放,我尝试使用有效载荷而不是Raw,但它不起作用。结果是一样的。客户端可以通过浏览器中的WebRTC听到声音,但当我们保存音频文件时,它无法播放。您是否使用
OpusWriter
?您能否共享正在创建的Opus文件之一。你能试着设置不同的采样器和通道吗?你能试着创建一个简单的例子吗。