远程音频

之前折腾了远程音频,差不多就是把各个机子的音频转发到另一个机子上,然后在那上面插耳机。好处主要是换机器不用换耳机,全都是一个出口。 Windows 的发送靠 Scream (https://github.com/duncanthrax/scream),可以把音频发送到网上的接收端。Windows 这边是个驱动,也有各种客户端可以收。默认是多播,注册表改改就能单播了…… Linux 靠的是 Pulseaudio 的 rtp send/recv。其实挺简单的,就是弄个 rtp sink 作为默认音频 sink,然后把这个 sink 的收到的东西用 rtp-send 发出去: load-module module-null-sink sink_name=rtpload-module module-rtp-send source=rtp.monitor destination_ip=<receiver IP> rate=96000set-default-sink rtp 接收端么弄个 rtp-recv,就行了: load-module module-rtp-recv sap_address=<receiver IP> 就像我之前说的,默认这货会用多播,然后导致一些 WiFi 问题…… 所以要指定 IP 才行。 FreeBSD 嘛比较麻烦点。首先,支持 Pulseaudio 的程序可以按 Linux 一样处理。然而,有些程序就认基础的 oss,打开 /dev/dsp 就用…… 对这种东西当然可以用padsp,不过这货好像有点bug,不太行。我找了个结合 virtual_oss 和 Pulseaudio 的方法。 …

Continue reading ‘远程音频’ »

tmux 和剪贴板

tmux 支持鼠标,甚至支持选一段东西之后自动发给剪贴板。这个功能很好用,比如在想从终端贴一段文字到浏览器的时候之类…… 然而这个功能有时候需要一些配置。折腾一波之后,发现主要是这么几个部分: 首先 tmux 需要打开鼠标支持,并且让它在复制完之后去设置剪贴板: set -g mouse onset -g set-clipboard on 然而这并没完。所谓“设置剪贴板”,其实就是发一段东西给外面的终端模拟器(tmux 归根结底只是发各种东西给终端模拟器而已……),说“设置剪贴板为XXX”。这段东西就是OSC 52。OSC就是“operating system command”,就是某种终端控制序列,用来和系统交互的…… OSC 52 就是里面的命令52,功能是设置剪贴板。 然而 tmux 其实依赖某些信息来告诉他“外面这个终端模拟器支持OSC 52”。这个就是 terminfo 里面的 Ms 能力(属性?)。这个告诉了 tmux,要设置剪贴板应该发什么格式的东西给终端模拟器。 然而我现在用的 term(st-256color)里面貌似并没有这个…… 结果就是就算开了上面这俩,tmux 也不干活。 正确的修正方法当然是把那个属性加进 terminfo,但是这个挺麻烦的,而且每个系统都要加…… 理想状况下我可以只用 tmux.conf 解决问题。 解决方法当然是有的:直接在 tmux.conf 里面修改 terminfo 给的结果…… 所以可以直接告诉 tmux,对某些 terminal(我这里是st*),设置剪贴板就发这个: set -g terminal-overrides[2] ‘st*:XT:Ms=\E]52;%p1%s;%p2%s\007’ 我其实还添加了 Tc,所以怎么样都认为支持24位色…… 不过这就是另一个事情了。 搞了这俩之后,tmux …

Continue reading ‘tmux 和剪贴板’ »