![Webex 音频无法与 11.10 配合使用](https://linux22.com/image/1094913/Webex%20%E9%9F%B3%E9%A2%91%E6%97%A0%E6%B3%95%E4%B8%8E%2011.10%20%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8.png)
我可以在 Webex 会议中看到演示文稿、聊天、屏幕共享等所有内容,但无法使音频正常工作,我总是得到:
“音频设备现在无法访问”
有人知道发生了什么事吗?
谢谢。
答案1
我刚刚在http://ubuntuforums.org/showthread.php?p=11757928
WebEx 小程序使用专有的本机模块来访问声音软件。它是一个 32 位 .so,因此无法由 64 位 JVM 加载。通常的解决方案似乎是在使用 WebEx 时运行 32 位浏览器。作为替代方案,我修补了 nspluginwrapper 实用程序,以便您可以从 64 位浏览器运行 32 位 Java 插件(我已经使用 Firefox 进行了测试,它也应该适用于 Chrome)。
从以下网址下载 nspluginwrapper 的最新源代码http://nspluginwrapper.org/download/
在方便的位置展开文件(tar -xvzf)
将以下补丁应用到文件 npw-viewer.c:
--- npw-viewer.c 2011-06-30 23:18:57.000000000 -0400
+++ nspluginwrapper-1.4.4/src/npw-viewer.c 2012-03-11 14:09:35.104158681 -0400
@@ -5128,6 +5128,17 @@
}
handles[n_handles++] = handle;
dlerror();
+#else
+ /* Install libstdc++ for java */
+ const char libstcpp[] = "libstdc++.so.6";
+ D(bug(" trying to open standard C++ runtime '%s'\n", libstcpp ));
+ if ((handle = dlopen(libstcpp, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
+ npw_printf("ERROR: %s\n", dlerror());
+ return 1;
+ }
+ handles[n_handles++] = handle;
+ dlerror();
+
#endif
D(bug(" %s\n", plugin_path));
if ((handle = dlopen(plugin_path, RTLD_LAZY)) == NULL) {
您可能需要获取一些额外的库才能使其正常工作。特别是,我安装了:
sudo apt-get install libcurl4-nss-dev libxt-dev libgtk2.0-dev g++-multilib
因人而异。
获取依赖项后,其:
./configure
make
sudo make install
然后你需要一个 32 位的 jre。可以从 Oracle 网站下载并安装。
最后,在32 位 Java 安装目录libnpjp2.so
中找到该文件。我在 中找到它。lib
/usr/lib/jvm/ia32-java-6-sun/jre/lib/i386/
执行
sudo nspluginwrapper -i /usr/lib/jvm/ia32-java-6-sun/jre/lib/i386/libnpjp2.so
(或者安装 Java 的任何地方。)
然后(重新)启动 Firefox。在地址栏中输入“aboutlugins”。您应该会看到新安装的 32 位 Java 插件。
尝试加入带声音的 WebEx 会议
答案2
我知道这个帖子已经过时了,但我花了两天时间才让 Dan Menes 提供的解决方案发挥作用(而且 Dan 的方法确实有效),但我想分享一些额外的步骤,以便其他人不会像我一样在调整时浪费 12 个小时的工作时间。所以,我们开始吧:
首先,我无法以通常的方式使用“patch”命令应用 Dan 的补丁。当我尝试这样做时,我得到了以下错误(与发帖人“NW Tech”得到的错误相同,即:
帅哥 #1 5128 失败
在修复该问题之前,我删除了所有现有的 Java - 全部!我遇到一个问题,当我运行 webex 时,我不确定它使用的是 5 或 6 个已安装的 Java(6 和 7)中的哪一个,而且由于我不知道如何确定,我只删除了除用于 webex 的 Java 之外的所有 Java,这样我就可以确定了。您可以这样做,或者如果您知道如何操作,请确保 Firefox 正在使用您包装的 Java,如下所述。如果您选择像我一样先删除所有 Java,那么对于可能对您造成的任何损害,我概不负责 - 我只是专注于修复这个 Webex 问题,即 Ubuntu Linux 上的计算机没有音频,我想确保我肯定使用的是包装的 32 位 Java,所以我删除了所有其他 Java 替代品以确保万无一失。
那么,继续...
另外,我使用的是 JDK 1.6 的最新版本(1.6.0_45),而不是 JDK 1.7(它可能可以工作,我还没有测试过,不过没关系,我已经解决了这个恼人的问题,1.6 64 位包装的 java 适用于 webex 声音,所以,很好!我完成了!)。
在安装 Oracle Sun Java 1.6.0_45 之前,我彻底删除了 Ubuntu 12.04 上所有现有的 Java。为此,我使用了以下步骤:
sudo apt-get update
apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove
sudo apt-get -y autoremove
运行这些步骤后,我安装了 JDK 1.6.0_45,然后在替代方案中安装了它,然后检查替代方案是否只有 1.6.0_45,以确保我肯定选择了我想要的为 64 位浏览器包装的 java-32。
然而,在这样做之前,我必须将其放入替代方案中,我是这样做的:
sudo 更新替代方案 --install “/usr/bin/java” “java” “/usr/lib/jvm/java-6-oracle/bin/java” 1050
(您的 java32 jdk6 的位置可能会有所不同 - 这就是我将它放在那里的位置)。
我不知道 1050 这个数字是什么意思 - 它是“优先级”,我不知道这是否重要。我的替代方案现在如下所示:
gstanden@Ubuntu1204:/usr/lib/mozilla/plugins$ sudo update-alternatives --config java
[sudo] password for gstanden:
There is 1 choice for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-6-oracle/bin/java 1050 auto mode
* 1 /usr/lib/jvm/java-6-oracle/bin/java 1050 manual mode
Press enter to keep the current choice[*], or type selection number:
gstanden@Ubuntu1204:/usr/lib/mozilla/plugins$
因此,在睡了一觉之后,星期六早上我查看了第 5128 行的代码,并将补丁手动粘贴到文件中,因为补丁在自动应用时遇到了问题。
/home/gstanden/Downloads/nspluginwrapper-1.4.4/src/npw-viewer.c
以下是之前和之后的片段,显示了如何放置修补代码:
以下是修补后的 npw-viewer.c 与未修补的 npw-viewer.c 之间的区别:
gstanden@Ubuntu1204:~/Downloads/nspluginwrapper-1.4.4/src$ diff npw-viewer.c npw-viewer.c.bak
5129,5138c5129,5130
< #else
< /* Install libstdc++ for java */
< const char libstcpp[] = "libstdc++.so.6";
< D(bug(" trying to open standard C++ runtime '%s'\n", libstcpp ));
< if ((handle = dlopen(libstcpp, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
< npw_printf("ERROR: %s\n", dlerror());
< return 1;
< }
< handles[n_handles++] = handle;
< dlerror();
---
> handles[n_handles++] = handle;
> dlerror();
如果你想直奔主题,那么这里是受影响的行,为方便起见,显示行号。我只是手动应用了 Dan 的补丁,因为“补丁”给出了错误,但它起作用了。
从第 5128 行开始,应用补丁后的样子如下:
5128 }
5129 #else
5130 /* Install libstdc++ for java */
5131 const char libstcpp[] = "libstdc++.so.6";
5132 D(bug(" trying to open standard C++ runtime '%s'\n", libstcpp ));
5133 if ((handle = dlopen(libstcpp, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
5134 npw_printf("ERROR: %s\n", dlerror());
5135 return 1;
5136 }
5137 handles[n_handles++] = handle;
5138 dlerror();
5139 #endif
5140 D(bug(" %s\n", plugin_path));
5141 if ((handle = dlopen(plugin_path, RTLD_LAZY)) == NULL) {
请注意,第 5139 行和第 5129 行的“#”字符应该在那里,不要删除它们,将 # 保留在代码中。当然,行号不会出现在最终编辑的文件中,它们只是为了方便您找到此修补代码的位置而显示在这里。
现在您可以继续从命令行运行 make:
cd /home/gstanden/Downloads/nspluginwrapper-1.4.4
make
好吧,make 会出错。发帖人“910Radar”解决了这个问题。您必须在 make 命令后附加一小段代码并手动运行它。您可以在此处查看“910Radar”的帖子: http://ubuntuforums.org/showthread.php?t=1858097
他所做的(也是我所做的)是手动运行 make 命令,如下所示(并且有效)。该命令在这里,只需将其粘贴到命令行中即可:
gcc -std=c99 -o npplayer npplayer-npw-player.o npplayer-debug.o npplayer-rpc.o npplayer-utils.o npplayer-glibcurl.o npplayer-gtk2xtbin.o -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 -lglib-2.0 -lcurl -lXt -lX11 -lpthread -lgthread-2.0
并且它工作正常。现在您可以为“nspluginwrapper”运行“make install”,然后您可以运行它来包装您已安装的 32 位 java,以便 64 位 Firefox 可以使用它,该命令是:
sudo nspluginwrapper -i /usr/lib/jvm/java-6-oracle/jre/lib/i386/libnpjp2.so
它应该返回一个没有错误和消息的命令提示符。注意,如果您的 libnpjp2.so 位于不同的目录中,那么当然使用您的路径。
我还发现,虽然 pulseaudio 在我的 Ubuntu 12.04 上可以正常工作(youtube、视频等),但 Ubuntu 设置中的“声音”面板上的“测试音频”无法正常工作。我认为修复我在 Ubuntu 上发现的任何声音问题是个好主意,所以我也修复了这个问题。我发现修复该问题需要执行以下步骤:
sudo apt-get install libcanberra-pulse
然后,一旦完成,“测试”左右扬声器就会工作得很好(一个柔和的女声对你说话,真好听,告诉你你的扬声器在每一侧都在工作,多可爱啊)。
此外,如果你已经访问过关于删除 pulseaudio 的页面,并且像我一样发现删除 pulse audio 无法解决 webex 没有电脑声音的问题(至少对我来说是这样),那么你可以在 Ubuntu 12.04 上使用以下命令重新安装 pulse audio 以及 pulseaudio 的工具栏小部件:
sudo apt-get install pulseaudio
sudo apt-get install indicator-sound
(将脉冲音频放回并将指示器放回顶部的小部件上)。执行此操作后,您可能需要重新启动。
现在尝试一下,如果我记住了所有步骤,您将能够在 Ubuntu 12.04 64 位上的 64 位 Mozilla Firefox 浏览器上运行 Webex 声音,并且可以通过计算机正常运行内置的 Webex 声音!当您在 Webex 中单击“使用我的电脑”以播放声音时,会打开一个小程序。
尽情享受吧,非常感谢 Dan Menes 和“910Radar”以及许多其他“未知的海报”,他们发布了一些关于基本内容的帖子,例如如何修补 src 代码、如何向 java 替代方案添加条目等,所有这些最终使得我能够在 Ubuntu 笔记本电脑上解决这个问题!