firestorm viewer,麦克风是灰色的

firestorm viewer,麦克风是灰色的

Firestorm 已安装并运行,但麦克风仍为灰色。所有设置看起来都正常,除了麦克风呈灰色。

在此处输入图片描述

在此处输入图片描述

答案1

该线程指出语音通话功能需要一个名为“SLVoice”的静态32位二进制文​​件才能运行。 https://community.secondlife.com/forums/topic/475681-voice-problems/

在 firestorm 日志中我们可以看到这个可执行文件没有运行

WARNING #Voice# newview/llvoicevivox.cpp(962) LLVivoxVoiceClient::callbackEndDaemon : SLVoice terminated {'data':i-1,'desc':'SLVoice (20101)','id':i20101,'state':i0,'string':'SLVoice (20101) exited with code -1'}
WARNING #Voice# newview/llvoicevivox.cpp(2044) LLVivoxVoiceClient::terminateAudioSession : terminateAudioSession(0) with NULL mAudioSession

如何排除故障

从您的 firestorm 安装内部,验证 SLVoice 是否可以使用以下方式找到其所有依赖项ldd

例如,在这个系统上,缺少libidn.so.11。

$ cd ~/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/
$ ldd ./bin/SLVoice 
    linux-gate.so.1 (0xf7ede000)
    libortp.so => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/bin/../lib32/libortp.so (0xf7ea8000)
    libsndfile.so.1 => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/bin/../lib32/libsndfile.so.1 (0xf7e4f000)
    libvivoxsdk.so => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/bin/../lib32/libvivoxsdk.so (0xf7800000)
    libvivoxplatform.so => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/bin/../lib32/libvivoxplatform.so (0xf7702000)
    libvivoxoal.so.1 => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/bin/../lib32/libvivoxoal.so.1 (0xf76b4000)
    libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf7665000)
    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf7660000)
    libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xf764d000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7648000)
    libidn.so.11 => not found
    libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf763e000)
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7639000)
    libstdc++.so.6 => /lib/i386-linux-gnu/libstdc++.so.6 (0xf7400000)
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf72f8000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf72d1000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7000000)
    /lib/ld-linux.so.2 (0xf7ee0000)
    libidn.so.11 => not found
    libidn.so.11 => not found
    libidn.so.11 => not found

检查是否可以使用 apt-file 安装 $ apt-file search libidn.so.11- 没有结果,请再次检查$ apt-file search libidn.so

得出几个结果

$ apt-file search libidn.so
libidn-dev: /usr/lib/x86_64-linux-gnu/libidn.so
libidn12: /usr/lib/x86_64-linux-gnu/libidn.so.12
libidn12: /usr/lib/x86_64-linux-gnu/libidn.so.12.6.3

(ps:如果尚未启用 i386 架构,则需要运行 32 位可执行文件。

dpkg --add-architecture i386
apt-get update

在这个系统上,我不确定 libidn 的哪个源版本映射到“12”,所以我检查了 repology, https://repology.org/project/libidn/versions who 的记录显示各种系统将最新的 libidn 链接为“libidn12”,但重要的是,最新版本被链接为“libidn11”(由 Cygwin 链接)。这表明 ABI 在 11 和 12 之间可能没有发生太大变化以至于它们变得不兼容,通常这就是版本增加所暗示的。YMMV。我选择此时不从源代码重新编译此系统的 libidn,并尝试将 libidn.11 链接到 libidn.so.12。有多种方法可以做到这一点,但不建议这样做,并且可能会破坏您的系统,因此您可以从这里开始 DIY。

一个不完整的例子,我们可以使用 LD_LIBRARY_PATH 将 ./foo-i386-linux-gnu/ 添加到链接器路径LD_LIBRARY_PATH=$PWD/foo-i386-linux-gnu/,然后链接32 位libidn.so.12 版本为 ./foo-i386-linux-gnu/libidn.so.11,并在启动 firestorm 之前注入 LD_LIBRARY_PATH,例如LD_LIBRARY_PATH=$PWD/foo-i386-linux-gnu/ ./firestorm

在这个系统上似乎可以工作,但构建 SLVoice 期望的源代码版本并将其安装为 libidn.so.11 总是更合适的

https://repology.org/project/libidn/versions 还显示大多数系统使用 libidn 1.33 来提供 libidn.so.11,因此这里有一个编译并将其添加到 firestorm 的示例

$ cd Phoenix-Firestorm-Releasex64-6-6-17-70368
# prepare working directory
$ mkdir devel
$ cd devel

# acquite libidn 1.33
$ https://ftp.gnu.org/gnu/libidn/libidn-1.33.tar.gz
$ tar -xvzf libidn-1.33.tar.gz
$ cd libidn-1.33/

# prepare out of tree build (as subdirectory) for i386 lib
$ mkdir build32
$ cd build32

# (note, you may need a compiler first)
#sudo apt-get install build-essential

$ ../configure --build=i686-pc-linux-gnu CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32
$ make

# install build artifacts to staging directory ./prefix, you can `sudo make
# install` or replace DESTDIR with any other preffered system root, or
# configure the build with a different --prefix
# this is fine
$ make install DESTDIR=$PWD/prefix/
# locate the produced dll
$ fine ./prefix/ | grep -i libidn.so
# link (here symbolic but you could also hard link, or copy)
$ ln -sr ./prefix/usr/local/lib/libidn.so.11 ../../../lib32/
# verify firestorm picks up this new library, if not, you might have the wrong --build architecture
$ ldd ../../../bin/SLVoice
    linux-gate.so.1 (0xf7f12000)
    libortp.so => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/b/libidn-1.33/build32/../../../bin/../lib32/libortp.so (0xf7edc000)
    libsndfile.so.1 => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/b/libidn-1.33/build32/../../../bin/../lib32/libsndfile.so.1 (0xf7e83000)
    libvivoxsdk.so => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/b/libidn-1.33/build32/../../../bin/../lib32/libvivoxsdk.so (0xf7800000)
    libvivoxplatform.so => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/b/libidn-1.33/build32/../../../bin/../lib32/libvivoxplatform.so (0xf7702000)
    libvivoxoal.so.1 => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/b/libidn-1.33/build32/../../../bin/../lib32/libvivoxoal.so.1 (0xf76b4000)
    libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf7696000)
    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf7e4d000)
    libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xf7681000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf767c000)
    libidn.so.11 => /home/user/Applications/Phoenix-Firestorm-Releasex64-6-6-17-70368/b/libidn-1.33/build32/../../../bin/../lib32/libidn.so.11 (0xf7646000)
    libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf763c000)
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7637000)
    libstdc++.so.6 => /lib/i386-linux-gnu/libstdc++.so.6 (0xf7400000)
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf72f8000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf72d1000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7000000)
    /lib/ld-linux.so.2 (0xf7f14000)

最后要说的是,libidn 是一个非常良好且易于使用的库,可以从源代码安装。

相关内容