更新
关于1个问题,是否可以制作,抛出明确的WebRTC版本(没有库自定义)?例如,我们可以使用本地AudioStream对象进行操作吗?我们将它们放在PeerConnection中?
第二次更新。我们可以更改一些WebRTC本机C代码,并继续使用depot工具脚本构建吗?或者我们也应该创建自己的脚本,用于生成.so和.jar库? Android的变化怎么样?如果在本机C源中发生一些变化,我们如何为新的.jar库构建JNI更改?
答案 0 :(得分:1)
1)Webrtc libjingle仅使用android框架来捕获音频/视频数据。在音频的情况下,它使用Android AudioRecord API来记录来自手机麦克风的音频并将其传递给以适当格式编码数据的本机,并将其传递到远程端。现在,将为您提供一些代码指针,例如您可以寻找引入自己的音频而不是使用手机麦克风。检查" WebRtcAudioRecord.java",我们使用AudioRecord框架捕获麦克风数据,如下所示:
int bytesRead = audioRecord.read(byteBuffer, byteBuffer.capacity());
将相同的byteBuffer传递给本机进行音频编码并将其发送到远程端:
nativeCacheDirectBufferAddress(byteBuffer, nativeAudioRecord);
因此,您需要做的就是在循环中复制byteBuffer中的音频数据,而不是从麦克风中读取。
2)您可以按照here所述构建webrtc源代码。只是总结所有步骤,您可以使用beloow脚本:
#!/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,以便您可以在设备上以及在模拟器上使用二进制文件。