gpt4 book ai didi

java - 将 AudioStream 从 WebRTC 路由到应用层

转载 作者:行者123 更新时间:2023-11-30 10:31:49 65 4
gpt4 key购买 nike

  • 我有一个目标,即从 WebRTC 转换现有的 AudioStream。因此,我想将来自另一个应用程序的自定义噪音(仅用于示例)添加到已经工作的 PeerConnection 和本地流中。我的目标是为 Android 创建此更改,并构建 java 库。那么,是否有可能做到,甚至抛出改变 Native WebRTC?

  • 另一个问题,关于使用 WebRTC 构建自定义 native 更改。我想在 WebRTC 中添加我自己的功能。为此,我还应该更改构建脚本或类型吗?我该怎么做?你能就这件事提出建议吗,也许有一些文档,关于构建你自己的更改(以及在其他系统中的下一次使用,Android\iOS)?

更新

关于第一个问题,是否可以制作、抛出清晰的 WebRTC 版本(无需库定制)?例如,我们可以使用放在 PeerConnection 中的本地 AudioStream 对象进行操作吗?

以及 2 日的其他更新。我们可以更改一些 WebRTC native C 代码,并继续使用 depot 工具脚本进行构建吗?或者我们也应该创建自己的脚本,用于生成 .so 和 .jar 库? Android 的变化又如何。如果 native C 源代码发生某些变化,我们如何为新的 .jar 库构建 JNI 变化?

最佳答案

1) Webrtc libjingle 使用android 框架仅用于捕获音频/视频数据。在音频的情况下,它使用 android AudioRecord API 从电话麦克风录制音频并将其传递给 native ,后者以合适的格式对数据进行编码并将其传递给远程端。现在,将在代码中为您提供一些提示,例如您可以在哪里寻找引入自己的音频而不是使用电话麦克风。检查“WebRtcAudioRecord.java”,我们使用 AudioRecord 框架来捕获麦克风数据,如下所示:

  int bytesRead = audioRecord.read(byteBuffer, byteBuffer.capacity()); 

这个相同的 byteBuffer 被传递给 native 进行音频编码并将其发送到远程端:

nativeCacheDirectBufferAddress(byteBuffer, nativeAudioRecord);

因此,您需要做的就是在循环中将音频数据复制到 byteBuffer 中,而不是从麦克风中读取。

2) 您可以按照提到的方式构建 webrtc 源代码 here .只是将所有步骤总结在一起,您可以使用以下脚本:

#!/bin/sh
set -e
export GYP_DEFINES="OS=android"
if [ -f .gclient ];
then
echo "gclient exists so go ahead"
cd src
else
fetch --nohooks webrtc_android
cd src
git fetch --tags
git checkout branch-heads/55
gclient sync
./build/install-build-deps.sh
./build/install-build-deps-android.sh
gclient sync
gn gen out/x86 --args='target_os="android" target_cpu="x86" is_debug=false dcheck_always_on=true symbol_level=1 is_component_build=false'
gn gen out/x64 --args='target_os="android" target_cpu="x64" is_debug=false dcheck_always_on=true symbol_level=1 is_component_build=false'
gn gen out/arm64 --args='target_os="android" target_cpu="arm64" is_debug=false dcheck_always_on=true symbol_level=1 is_component_build=false'
gn gen out/armv7 --args='target_os="android" target_cpu="arm" is_debug=false dcheck_always_on=true symbol_level=1 is_component_build=false'
fi
ninja -C out/arm64
ninja -C out/armv7
ninja -C out/x86
ninja -C out/x64

此脚本将为所有架构构建 android libjingle v55,以便您可以在设备和模拟器上使用二进制文件。

关于java - 将 AudioStream 从 WebRTC 路由到应用层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42981629/

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