Webex 音频无法与 11.10 配合使用

Webex 音频无法与 11.10 配合使用

我可以在 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 笔记本电脑上解决这个问题!

答案3

看一看这里最初的帖子在这里

他们建议使用另一个使用 32 位 Java 插件的浏览器(例如 swiftfox)的安装。

相关内容