- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新
关于第一个问题,是否可以制作、抛出清晰的 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/
理论上,一般来说: 数据访问层保存数据库连接和查询。 业务层保存模型和逻辑。 服务层包含应用程序服务的主要服务。 表示层保存网站。 我说得对吗?我错过了什么吗? 什么是基础设施层? 最佳答案 是的,我
大家好,我是汤师爷~ 线上线下交易系统的应用架构包括终端、应用层、领域层和关联系统。 应用层能力 应用层定义软件的应用功能,负责接收用户请求、协调领域层执行任务并返回结果。主要包括以下模块:
我知道 Android 没有像 Activity 具有 onPause 那样的应用程序级 onPause,但看起来我需要类似的功能。我刚才问了一个(愚蠢的)问题(http://stackoverflo
2022-12-04 18:31:01 纪念一下博主的《漫谈计算机网络》连载博客 浏览量破500了. 今天更新完结篇. 面试答不上?计网很枯燥? 听说你学习 计网 每次记了都会忘? 不妨抽时间和我
大家好,我是汤师爷~ 大厂对候选人的要求较高,即使是20k薪资的岗位,也期望应聘者能够独立承担工作职责。 对于30-40k薪资的岗位,需要具备独立系统设计和小型架构设计的能力。 技术专家和架构师
我一直在尝试构建一个基于 DDD 的应用程序,但我有一些问题。 我有一些层:- 表示层 - MVC- 应用层- 域层... 首先,我想知道我是否可以在ApplicationLayer中执行此操作(获取
我想知道如果我创建一个 OkHttpClient 实例来服务我的“整个 android 应用程序”,是否会出现任何性能瓶颈或问题。即在我的 Application 类中,我创建了一个包含 OkHttp
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 3年前关闭。 Improve this qu
我是一名优秀的程序员,十分优秀!