标签: opus

解码Opus音频数据

我正在尝试将Opus文件解码回原始的48 kHz.但是,我无法找到任何示例代码来执行此操作.

我目前的代码是这样的:

void COpusCodec::Decode(unsigned char* encoded, short* decoded, unsigned int len)
{
     int max_size=960*6;//not sure about this one

     int error;
     dec = opus_decoder_create(48000, 1, &error);//decode to 48kHz mono

     int frame_size=opus_decode(dec, encoded, len, decoded, max_size, 0);
}
Run Code Online (Sandbox Code Playgroud)

"编码"这个参数可能是更大量的数据,所以我认为我必须把它分成帧.我不知道怎么能这样做.

作为Opus的初学者,我真的害怕搞砸了.

有人可能会帮忙吗?

c++ windows audio codec opus

18
推荐指数
2
解决办法
2万
查看次数

编译Android的Opus Codec需要Makefile

我正在尝试编译opus音频编解码器(http://www.opus-codec.org/downloads/)以用于Android应用程序.我正在使用Android NDK(第6版)来编译我的库.到目前为止,我必须为我的应用程序编译的本机C库非常简单,我已经能够将我的Android.mk文件基于jni主要基于教程或其他示例.但是,Opus的编辑看起来有点复杂.tar.gz存档包含一个用于编译Windows库的解决方案文件,它还包含一些用于标准Unix实现的Makefile,但是将这些文件转换为Android NDK使用的Android.mk makefile是一个挑战.

我已经搜索过,但一直无法找到Android makefile的在线版本来编译libopus.有人可能会将我链接到这样的makefile吗?或者,我可能会遗漏一些更简单的东西?是否有可能使用Automake或某种转换器为我生成Android.mk文件来自已包含在tar.gz中的unix makefile?

arm android-ndk opus

14
推荐指数
2
解决办法
1万
查看次数

Safari 中的 WebM 和 Opus

由于 Safari 的支持不佳,在网络上使用无专利的音频和视频编解码器一直存在问题。不过,根据Safari 15 发行说明,这种情况可能会开始改变。iPadOS 15 上的 MSE 显然现在支持 WebM 视频,WebM 容器也支持 Opus 音频编解码器。

\n

不过,根据Can I UseWebMOpus)的说法,i(Pad)OS 15 的情况并没有改变。在移动设备上,WebM 仅支持 WebRTC,而 Opus 仅在使用 CAF 容器时才有效。 xe2\x80\x94,其他浏览器不支持。

\n

不幸的是,我的实验表明“我可以使用吗”是正确的。不过,我想知道是否有人可以解开这个谜团。发行说明是否像看起来的情况那样是错误的?我是否误解了发行说明?是否有一些技巧可以让您使用这些编解码器?

\n

safari mobile-safari webm ios opus

14
推荐指数
0
解决办法
2661
查看次数

如何使用JavaScript中的Opus Codec

我想看看是否可以直接访问Opus使用getUserMedia或与最新浏览器类似的东西.

我一直在研究它,但没有很好的结果.

我知道Opus或Speex实际上都是在webkitSpeechRecognitionAPI中使用的.我想做语音识别,但使用我自己的服务器而不是谷歌.

javascript html5 speech-recognition getusermedia opus

12
推荐指数
2
解决办法
7562
查看次数

有没有一种方法可以比 DTX 更好地优化 Opus 中的静音期?

我正在对 Opus 中的 DTX 选项进行一些研究:

不连续传输 (DTX) 可在静音或背景噪音期间降低比特率。启用 DTX 后,每 400 毫秒仅编码一帧。

我想知道是否有一种简单的方法可以让 Opus 在整个静音期间只对一帧进行编码,而不是每 400 毫秒编码一次无用的静音帧?

我想在无声或非语音活动期间产生“绝对”静音并最小化标题的开销,因此基本上安静的录音将产生一个几乎空的文件。

如果有其他编解码器可以做到这一点,我很高兴听到他们的消息。

compression audio codec voice-recording opus

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

将opus音频rtp流式传输到Android设备

我想用ffmpeg直接将音频(opus编解码器)流式传输到android设备.

在PC上我开始流:

  ./ffmpeg -re -stream_loop -1 -i akgld-c8mxm.opus -acodec libopus -ac 1 -ab 96k -vn -f rtp rtp://192.168.0.100:6000
Run Code Online (Sandbox Code Playgroud)

其中192.168.0.100 - 我手机的本地wifi地址.

在Android设备上我尝试播放流:

 public void tryPlayStream() {
        String ip = Utils.wifiIpAddress(this);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
        StrictMode.setThreadPolicy(policy);
        AudioManager audio = (AudioManager) getSystemService(AUDIO_SERVICE);
        audio.setMode(AudioManager.MODE_IN_COMMUNICATION);
        audioGroup = new AudioGroup();
        audioGroup.setMode(AudioGroup.MODE_ECHO_SUPPRESSION);
        InetAddress inetAddress;
        try {
            inetAddress = InetAddress.getByName(ip);
            audioStream = new AudioStream(inetAddress);
            audioStream.setCodec(AudioCodec.PCMA);
            audioStream.setMode(RtpStream.MODE_RECEIVE_ONLY);
            InetAddress inetAddressRemote = InetAddress.getByName(ip);
            audioStream.associate(inetAddressRemote, 6000);
            audioStream.join(audioGroup);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

在logcat中我看到下一行:

E/AudioRecord: AudioFlinger could not …
Run Code Online (Sandbox Code Playgroud)

audio android ffmpeg audio-streaming opus

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

如何在Java中播放Opus编码音频?

在播放解码后的音频时,我设法制作了各种各样的声音,从潺潺到尖锐的恶魔吟唱.最接近的声音类似于在快进和播放中播放仅持续约15秒.我已尝试使用解码和AudioSystem API方法的大量参数组合,似乎没有任何工作.

那么,导致这种音频失真的原因是什么?

此文件的Opusinfo显示以下内容:

Processing file "test.opus"...

New logical stream (#1, serial: 00002c88): type opus
Encoded with libopus 1.1
User comments section follows...
     ENCODER=opusenc from opus-tools 0.1.9
Opus stream 1:
    Pre-skip: 356
    Playback gain: 0 dB
    Channels: 1
    Original sample rate: 44100Hz
    Packet duration:   20.0ms (max),   20.0ms (avg),   20.0ms (min)
    Page duration:   1000.0ms (max),  996.8ms (avg),  200.0ms (min)
    Total data length: 1930655 bytes (overhead: 1.04%)
    Playback length: 4m:09.173s
    Average bitrate: 61.99 kb/s, w/o overhead: 61.34 kb/s
Logical stream 1 ended …
Run Code Online (Sandbox Code Playgroud)

java audio ogg opus jitsi

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

使用 Discord.js/opus 将 Wav 转换为 Opus 无声无息地失败

我正在尝试将 WAV 文件转换为 Opus,使用 Nodefs.readFile并将该缓冲区传递给@Discord/opus转换器。我既没有得到结果,也没有得到错误的解释以及错误的解释。这基本上是你在文档中的例子......对吗?

漏洞?按设计?还是我错过了什么?我希望会try/catch被调用,但不知何故错误被“吸收”,脚本只是默默退出。

在线示例:https : //codesandbox.io/s/funny-jones-d7sls?file=/src/index.js

const audioBuffer = await fs
    .readFile(file)
    .catch(err => console.log("Error reading input file:", err));

  console.log("LENGTH:", audioBuffer.length); // all good so far...
  const encoder = new OpusEncoder(41000, 2);

  let encoded = null;
  try {
    console.log("Trying to encode..."); // log runs
    encoded = encoder.encode(audioBuffer);
    console.log("Encoded!"); // log doesn't run :(
  } catch (err) {
    console.log("Encoding failed:", err); // no error thrown... :'(
  }
  return encoded;
Run Code Online (Sandbox Code Playgroud)

更多细节:

  • @discordjs/opus …

javascript node.js opus discord.js

9
推荐指数
0
解决办法
581
查看次数

webRTC真的有可能在没有噪音的情况下传输高质量的音频吗?

我已经用最高质量的设置和多个 STUN/TURN 服务器进行了测试,但没有找到真正高质量的流。

根据我的经验,webRTC 总是具有波动且有限的带宽和高水平的背景噪音,无法达到 mp3/Shoutcast/Icecast 无线电流的质量。

有没有人找到一种通过 webRTC 提供真正高带宽音频流的方法,或者目前实际上不可能?

javascript streaming voip webrtc opus

8
推荐指数
2
解决办法
6479
查看次数

如何从 WebM 文件中提取音频

我只想获取仅在 webm 文件中的音频文件(使用 opus 编解码器)。我尝试搜索什么是 webm 格式,如何解析,但我无法很好地获取信息。我检查webm格式来自mkv,那么我应该先检查mkv吗?

只有一个 github 代码,但我找不到如何解析 webm 音频的方法。 https://github.com/webmproject/libwebm/tree/master/webm_parser

parsing mkv webm opus

8
推荐指数
2
解决办法
1万
查看次数