使用Linux时如何播放Soundux? -- audio 领域 和 linux 领域 和 termux 领域 和 vnc 领域 android 相关 的问题

How to Play Sound from Termux when using Linux?


简体版||繁體版
2
vote

问题

中文

我有一个问题,音频流,我不能在使用VNC使用Linux桌面环境时从pulseaudio侦听音频。

但是,如果我将音频导出为XSDL,它就可以了。但问题是,在退出应用程序后,声音在后台不起作用。

我知道Pulseaudio只支持Xorg服务器,所以如何将音频传输到VNC或Android上的任何其他应用程序,并在后台运行它。

我知道有一个应用程序简单协议播放器< / a>从xorg服务器侦听pulseaudio sound,但它对我不起作用,我不知道原因。
english

I have a problem with audio streaming that I can not listen audio from Pulseaudio when using VNC with a Linux Desktop Environment.

However it works if I export the audio to XSDL. But the problem is that after I exit the application the sound does not work in the background.

I know that Pulseaudio only supports Xorg servers, so how to stream audio to VNC or any other application on Android and to run it in the background.

I know that there is an application Simple Protocol Player that listens to pulseaudio sound from Xorg Server, but it does not work for me and I do not know the reason.

           

回答列表

2
 
vote
vote
最佳答案
 

我知道有两种可能性,可以在Android设备上从Linux环境中播放声音:

  • 通过原生Alsa库播放
  • 通过pulseaudio流
    • 向前转到X服务器(在UNIX或TCP套接字上)
    • 通过IP流(TCP或UDP)例如。使用VNC

第一个方法通过ALSA内核模块/驱动程序自然工作,而第二和第三个工作通过 PulseAudio 图书馆,即不同模块和协议( pulseaudio 包应该安装在termux / linux发行版上)。

主要是Android OEM在Alsa上基于他们的声音架构,虽然未必需:

"您可以使用高级Linux声音架构(ALSA),打开声音系统(OSS)或自定义驱动程序"

如果是alsa内核列出 /dev/snd/ 中的设备,可以操纵到声卡的声音。可以找到完整的教程这里。它有效,但不适用于所有声音格式。这是因为无法控制Android设备上的Alsa驱动程序(至少我无法通过标准的Linux用户佩纳工具以直接的方式控制,因为它们不兼容(请参阅Google / OEM的Linux内核中的更改/添加,关闭来自用户源的源版权,以及 alsa与tinalsa ) 。也无法访问 /proc/asound/ 没有root,请参阅此答案。 Alsa项目是这里。

还有更多自定义解决方案,可以与Alsa和Pulseaudio一起使用,例如音乐播放器守护程序。< / p>

使用x服务器时:
XSDL Server 是我知道的唯一发达的x服务器Android应用程序,不幸的是不幸的。它具有带有 module-cli-protocol-tcp 已加载的内置pulseaudio服务器,默认情况下侦听标准端口 WiFi off0 。一旦X会话在Linux上启动,我们可以通过在Linux上设置以下环境变量来将Linux PulseAudio客户端库的声音直接指向xdsl pulseaudio服务器:

  WiFi off1  

* 127.0.0.1表示Linux和XDSL在同一设备上运行

或永久设置,编辑文件:

  WiFi off2  

现在在此环境中运行的任何媒体播放器都使用pulseaudio客户端库将其音频传输到xdsl应用程序。您也可以将x会话显示和声音转发到PC上运行的X服务器,但需要一个更复杂的设置。

使用VNC时


VNC协议默认情况下不支持声音。但是,PulseAudio服务器可以使用不同的协议将TCP / UDP流流。有可用于Android的应用程序可以播放 WiFi off3 (例如简单协议播放器)和 WiFi off4 (例如 VLC )。为此,我们需要加载相关的pulseaudio模块。
要设置本地pulseaudio守护程序,首先排名缩小以下行:

  WiFi off5  
否则守护程序将无法启动,如果 WiFi off6 存在但 WiFi off7 包未安装(被弃用,由 WiFi off8 替换为包更多存在于许多Linux Repos上)。

确保 WiFi off9 设置为 WiFi disconnect0 ,因此我们不需要手动启动守护程序,它是桌面环境启动的自动启动。 如果我们手动启动守护程序,则不必要。

  WiFi disconnect  

现在开始pulseaudio守护程序并记下源的价值,对我来说是 WiFi disconnect2

  WiFi disconnect3  

加载简单协议模块:

  WiFi disconnect4  

或永久设置,编辑文件:

  WiFi disconnect5  

以下应在de启动设置中启用,因为某些程序(如 abcdefghijklmn26)(如 abcdefghijklmn26 WiFi disconnect7 桌面环境)仅适用于本地X服务器中的PulseAudio服务器(

  WiFi disconnect8  

启动简单播放器应用程序和匹配 WiFi disconnect9 WiFi off0 在上面的命令中设置,即 WiFi off1 WiFi off2 在我的案子。不要使用 WiFi off3 如果您也想听PC。

我已经测试了基于pulseaudio的解决方案 WiFi off4 WiFi off5 ,他们没有root访问权限。 但是 WiFi off6 如果在非根上下文中运行,可以限制对某些资源的访问。 此外,为了获得网络访问和创建套接字,您必须是 INET(3003)组必然。 所有应用程序与 android.permission.internet 授予的是该组的成员。

 

There are two possibilities I know of, to play sound from a Linux environment on Android device:

  • Play through native ALSA libraries
  • Stream through PulseAudio
    • Forward to X Server (on UNIX or TCP socket)
    • Stream over IP (TCP or UDP) e.g. when using VNC

First method works natively through ALSA kernel module/drivers while second and third work through PulseAudio libraries i.e. different modules and protocols (pulseaudio package should be installed on Termux / Linux distro).

Mostly Android OEMs base their sound architecture on ALSA, though not necessary:

"You can use Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS), or a custom driver"

In case of ALSA kernel lists devices in /dev/snd/ which can be manipulated to direct sound towards sound card. Complete tutorial can be found here. It works, but not for all sound formats. It's because ALSA drivers loaded on Android devices can't be controlled (at least I could not) through standard Linux userspace tools in straightforward manner because they aren't compatible (refer to changes/additions in Linux kernel by Google/OEMs, the closed source proprietary HALs in userspace, and differences in ALSA vs. TinyALSA). Also access to /proc/asound/ is not possible without root, see details in this answer. ALSA project is here.

Also there are more customized solutions that work with ALSA and PulseAudio both such as Music Player Daemon.

When using X Server:
XSDL Server is the only well developed X server Android app I know of, no more developed unfortunately. It has a built-in PulseAudio server with module-cli-protocol-tcp already loaded, listening on standard port 4712 by default. Once the X Session is started on Linux, we can direct sound from Linux PulseAudio client libraries to XDSL PulseAudio server by setting the following environment variable on Linux:

$ export PULSE_SERVER=tcp:127.0.0.1:4712 

* 127.0.0.1 indicates that Linux and XDSL are running on same device

Or to set permanently, edit file:

# /etc/pulse/client.conf or ~/.config/pulse/client.conf  default-server = tcp:127.0.0.1:4712 

Now any media player running in this environment that makes use of PulseAudio client libraries, will stream its audio to XDSL app. You can forward X session display and sound to X server running on a PC as well but that needs a more complicated setup.

When using VNC:
VNC protocol by default doesn't support sound. However, PulseAudio server can stream over TCP/UDP using different protocols. There are apps available for Android that can play simple protocol (e.g. Simple Protocol Player) and real-time transport protocol (e.g. VLC). For this we need to load the related PulseAudio module.
To setup local PulseAudio daemon, first of all comment out following lines:

# /etc/pulse/default.pa  #ifexists module-console-kit.so #load-module module-console-kit #.endif 

Otherwise daemon will fail to start if /usr/lib/pulse*/modules/module-console-kit.so exists but consolekit package isn't installed (which is deprecated, replaced by systemd-login and no more present on many Linux repos).

Ensure that autospawn is set to yes so that we don't need to start daemon manually and it is auto started by Desktop Environment. Not necessary if we start daemon manually.

# /etc/pulse/client.conf  # Autospawn a PulseAudio server/daemon when needed autospawn = yes 

Now start pulseaudio daemon and note the value of source, for me it's auto_null.monitor:

$ pulseaudio --start && pactl list | grep -A2 -i RUNNING $ DISPLAY=:0 pulseaudio --start 

Load simple-protocol module:

$ DISPLAY=:0 pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=auto_null.monitor record=true port=8000 listen=127.0.0.1 

Or to set permanently, edit file:

$ echo 'load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=auto_null.monitor record=true port=8000 listen=127.0.0.1' >> /etc/pulse/default.pa 

Following should be enabled in DE startup settings, necessary because some programs such as emixer on Enlightenment Desktop Environment works only if PulseAudio server in local X server is published:

$ DISPLAY=:0 start-pulseaudio-x11 

Start Simple Player app and match bitrate and port set in above command i.e. 48000 and 8000 in my case. Don't use listen=127.0.0.1 if you want to listen on PC too.

I have tested both of PulseAudio based solutions on ArchLinuxARM and Ubuntu, and they work without root access. However SELinux may restrict access to certain resources if running in non-root context. Also, in order to get network access and create sockets, you have to be member of inet (3003) group necessarily. All apps with android.permission.INTERNET granted are member of this group.

 
 
         
         
1
 
vote

很好的消息,我可以使用TERMEX上的脉冲延伸,在TERMEX上使用PULSEAUDIO将音频提取到简单的协议播放器,但问题是此方法在offical pulseaudio上不起作用,因为它没有仅具有root的访问权限如果您的系统上有root,您可以提取简单协议播放器的音频

警告:如果音频不起作用,请检查下面的链接,因为有一些注释我没有提到

在Termux中

执行此命令:

pactl list sources short

  • 访问下面的链接,在完成阅读之前找出此命令的有用性

和:


下载应用程序

  • 简单协议播放器

和:


  echo -e " # Simple Protocol Player  load-module module-simple-protocol-tcp source=OpenSL_ES_sink.monitor record=true port=12345 rate=44100" >> $PREFIX/etc/pulse/default.pa   

并重新启动termux:


关闭Termux中的所有窗口

和:


pulseaudio -k

pulseaudio --start

或仅限:


pulseaudio --start

现在安装sox:


apt install sox

和播放声音:


play [file.mp3]

获取更多信息访问 link

 

Good news, I've been able to extract audio to Simple Protocol Player using the pulseaudio for Android on Termex but the problem is that this method does not work on the offical pulseaudio because it does not have access privileges for have root only if you have root on your system can you extract audio of Simple Protocol player

WARNING: If the audio does not work, check the link below because there are some notes I did not mention

on Termux


Do this command :

pactl list sources short

  • Visit the link below to find out the usefulness of this command before you complete reading

And :


Download application

  • Simple Protocol Player

And :


echo -e "\n# Simple Protocol Player\n\nload-module module-simple-protocol-tcp source=OpenSL_ES_sink.monitor record=true port=12345 rate=44100" >> $PREFIX/etc/pulse/default.pa 

And Restart Termux :


close all windows in termux

And :


pulseaudio -k

pulseaudio --start

or only :


pulseaudio --start

now install sox :


apt install sox

And Play sound :


play [file.mp3]

For more information visit Link

 
 
   
   

相关问题

8  破碎的屏幕+使用adb shell运行VNC服务器  ( Broken screen using adb shell to run vnc server ) 
我有一个完全破坏的屏幕的HTC HD2,我尝试用替换屏幕修理,但将带状电缆打破到屏幕(oops)悲伤的一天, 我有两个,我一直在运行它们作为服务器和IPCAM相机。 我开始使用 qtadb ,尽管屏幕破碎,但仍然在手机上工作。我安装了 droid vnc server beta 使用文件管理器QTADB。 我抓住了这...

5  基于Android的远程软件登录OSX桌面?  ( Android based remote software to log in to osx desktop ) 
我有一个Android手机,我想用来控制一个IMac运行的雪豹。就像他们所做的一切一样,苹果似乎有自己的追求VNC服务器应该如何工作,所以他们的"远程桌面" 似乎没有很好地玩得很好。 androidvnc。 我已经尝试了一些像GPAD和Gmote这样的其他东西,两者都有专用的服务器端软件。他们工作正常,但我不能在启动...

10  远程登录PC中的电话  ( Remote login into the phone from a pc ) 
可能的重复: 一个左右设备的VNC解决方案? 可以远程控制来自PC的Android手机。是否有类似于在手机上运行的VNC 服务器的程序,客户端在PC上显示手机的UI? 当我在我的桌子时,可以从PC管理手机(读/键入短信,安装应用程序等),而不是戳tiny触摸屏。 搜索在另一个方向上带来了许多解决方案(PC上...

9  如何通过USB使用Droid VNC服务器远程控制?  ( How to remote control using droid vnc server via usb ) 
我已安装 Droid VNC Server 在我的Android Phone 2.2(CyanogenMod)上,但不是清楚如何通过USB控制我的手机。 当我在手机上启动服务器时,它给了我一个IP,但我不能对此。我无法在指定地址使用浏览器并通过VNC客户端连接。 我有root访问权限。 有人可以解释我的步骤? ...

8  如何设置商务会议的屏幕共享?  ( How to setup screen sharing for business meetings ) 
我想知道是否有可能在商务会议中使用基于Android的平板电脑(或iPad)。 这个想法是让每个人在会议中,有了一个单位的平板电脑,看看是一个"会议领导者" 在他自己的平板电脑上看到了什么,通过网络或使用应用程序导航。 我看到一些似乎主要被引导到遥控器中的一些解决方案,但我想要的是私下实时扫描到多个接收器。让其他人控...

1  如何使用另一个Android设备控制一个Android设备?  ( How can i control one android device with another android device ) 
如何使用Android设备A查看和与Android设备B进行互动?我希望总控制不​​仅仅是访问文件系统我们的某些功能。 VNC也许? ...

5  优化Android带宽消耗的TeamViewer  ( Optimize teamviewer for android bandwidth consumption ) 
我正在使用TeamViewer for Android来远程控制我的电脑,它工作得很好,但我最近注意到它使用了很多带宽,即使在优化速度模式下也是如此。我有一个有限的3G计划,我想尽可能减少TeamViewer的带宽消费,以牺牲图像质量为代价。例如,我将没有任何问题到灰度或256色模式,但据我所知,Android客户端...

7  SSH隧道与Android  ( Ssh tunnel with android ) 
没有生根,我如何将隧道隧道运行sshd? 我需要SSH隧道到VNC主页,但我不相信VNC,所以我想用SSH使用它来使它安全! 谢谢你的任何帮助! ...

4  如何通过其主机名连接到我的家庭VNC服务器?  ( How can i connect to my home vnc server via its hostname ) 
在android <a href="http://chat.stackexchange.com/transcript/message/1522466上的聊天室</> 在Home我有一个远程访问VNC服务器设置(运行Ultravnc Server)。我当前的Android VNC应用程序,称为,有趣的 andro...

36  我想从我的电脑远程控制我的Android设备而不烙它。这可能吗?  ( I want to remotely control my android device from my pc without rooting it is t ) 
寻找要遥控的东西,无需root。要清楚,我正在寻找完全控制计算机(在监视器上查看,使用鼠标和键盘输入)。 ...




© 2022 it.wenda123.org All Rights Reserved. 问答之家 版权所有