gpt4 book ai didi

c++ - 如何使用Opus编解码器从webm文件中获取原始音频pcm数据

转载 作者:行者123 更新时间:2023-12-03 00:26:50 26 4
gpt4 key购买 nike

我正在将ASR服务器uisng开源。
客户端通过websocket以webm文件格式发送语音数据。
在服务器端,首先接收8位消息。
它由libwebsocket完成。

那么我想使用opus编解码器获取原始的pcm数据。
我听说webm的音频编解码器很麻烦。

我该怎么做?
请从概念上详尽地告诉我。

这是代码。 (来自互联网)

// libopus audio decoder init
{
int err = 0;
my_opus_decoder = opus_decoder_create(16000, 1, &err);
if (err<0)
{
fprintf(stderr, "failed to set bitrate: %s\n", opus_strerror(err));
return EXIT_FAILURE;
}
}

....................................
这是libwebsocket的回调函数。
    //* If receive a data from client*/
case LWS_CALLBACK_RECEIVE:
printf(KCYN_L"[Main Service] Server recvived: size %d %s\n"RESET, strlen((char *)in), (char *)in);
frame_size = opus_decode(my_opus_decoder, (const unsigned char *)in, nbBytes, out , MAX_FRAME_SIZE, 0);

这里的char * in是流,我将其发送给opus解码器。
但是在opus解码器中发生了无效的数据包错误(返回值为-4)

nbbytes:输入长度,4096。

out:解码的输出,数组,int16 out [2 * 960]。

MAX_FRAME_SIZE:我感到困惑。

(对于16khz采样率,我将其设置为960 * 2)。

frame_size:返回,已解码样本或错误代码的数量。

最佳答案

您可以使用FFMPEG库(https://ffmpeg.org/)将webm转换为原始pcm。

Webm是文件格式或容器。它可以包含音频或/和视频编码的数据。 (OPUS,VP8 / 9等)

媒体管道:Webm文件格式-> Opus解码器->原始PCM数据

我发现这个git repo对ffmpeg教程很有用:

https://github.com/leandromoreira/ffmpeg-libav-tutorial

其他链接:

Decoding opus using libavcodec from FFmpeg

有关更多详细信息,请谷歌ffmpeg libavcodec webm

关于c++ - 如何使用Opus编解码器从webm文件中获取原始音频pcm数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57686018/

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