首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过命令行将特定应用程序的音乐发送到特定的声音输出。

通过命令行将特定应用程序的音乐发送到特定的声音输出。
EN

Unix & Linux用户
提问于 2020-12-05 00:55:59
回答 1查看 349关注 0票数 1

我的用例:

我工作在我的家庭办公室,并保持与我的同事经常沟通使用耳机与一些网络会议服务。为了不被某些外界的噪音所干扰或烦扰,我也会在同一台电脑上播放音乐。

我想通过我的高保真音箱播放那音乐。这样,我就可以有一些不干扰我的交流的谨慎的背景音乐。同时,它也帮助我更好地集中精力。

我知道我可以用pavucontrol实现每个应用程序的声音重定向.但是,这个应用程序似乎很麻烦,因为它没有切换默认的输出(稍后只将音乐播放器路由到另一个扬声器)。我必须使用另一个混音器应用程序(在我的例子中,肉桂“声音”小程序),并需要切换两个混频器来设置它。重复所有这些,以防高保真失去连接,或者音乐因某种原因而停止。

因此,由于我通常使用一个特定的应用程序播放音乐,我正在寻找一种方法,以快速路由这个应用程序的声音输出到我的高保真。

EN

回答 1

Unix & Linux用户

发布于 2020-12-05 00:55:59

下面的bash脚本解决了我的场景的问题。我使用勇敢浏览器仅用于音乐播放(而使用其他浏览器的任何其他)。我的高保真是通过蓝牙连接的环绕声接收器:

代码语言:javascript
复制
#!/bin/bash
    
# Collect all sinks
sinkList=$(pactl list sinks | tr '\n' '\r' | perl -pe 's/Sink #([0-9]+).+?device\.description = "([^\r]+)"\r.+?(?=Sink #|$)/\1:"\2",/g' | tr '\r' '\n')
IFS="," read -a sinksArray <<< "$sinkList"

# Is our Hi-fi sink available? → Use for loop with indexes to handle spaces in names
for ((i = 0; i < ${#sinksArray[@]}; i++)); do
  sink="${sinksArray[$i]}"
  #echo "sink found: $sink"

  # Search for this output device's name
  [[ "$sink" =~ "Philips HTB" ]] && hifiSinkIndex=$(echo $sink | cut -d':' -f1)
done

if [[ $hifiSinkIndex ]]; then
  echo "Hi-fi sink has index $hifiSinkIndex"

  # Collect all sound streams
  musicSourcesList=$(pactl list sink-inputs | tr '\n' '\r' | perl -pe 's/Sink Input #([0-9]+).+?application\.process\.binary = "([^\r]+)"\r.+?(?=Sink Input #|$)/\1:\2\r/g' | tr '\r' '\n')

  for soundSource in $musicSourcesList; do
    binary=$(echo $soundSource | cut -d':' -f2);
    index=$(echo $soundSource | cut -d':' -f1);
    #echo "index: $index, binary: $binary";

    # Brave browser is our music player, so we only care about that
    if [[ "$binary" == "brave" ]]; then
      echo "moving Brave output to $hifiSinkIndex"
      pactl move-sink-input $index $hifiSinkIndex
    fi
  done
else
  echo "Hi-fi sink was not found"
fi

脚本可以很容易地根据要查找的说话人名称和应用程序进行调整。

我在面板中添加了此脚本的快捷方式,以便只在需要时单击run。

pactl附带了包pulseaudio-utils。对于pacmd,命令将是类似的。

来源和灵感:

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/622987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档