No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 58 | 59 | 60 || Next»

Ubuntu で Zoom に学会タイマーを流し込む

今まで学会タイマーを Zoom に流し込むのは Win + OBS でやってたのだけど,今日は Win マシンが足りなかったので Ubuntu で用意してみた.

とりま OBS Studio と仮想カメラ用のカーネルモジュールを入れる:

sudo apt-get install ffmpeg
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt update && sudo apt install obs-studio
sudo apt install v4l2loopback-dkms

次に PulseAudio で仮想オーディオ配線.テキトウに virtmic という名前の null sink を作ってみて,あとで Zoom に入力デバイスとして使えるようにその null sink の monitor を source に remap しとく(Zoom が monitor を入力として拾ってくれないので):

pacmd load-module module-null-sink sink_name=virtmic sink_properties=device.description="virtmic"
pactl load-module module-remap-source master=virtmic.monitor source_name=virtmic_monitor source_properties=device.description="virtmic_monitor"

そしてブラウザの音出力をこの null sink に入れたいので,ブラウザで音出した状態で pavucontrol を起動して出力デバイスを virtmic にする:

sudo apt install pavucontrol
pavucontrol &

音量調整も pavucontrol でやってしまうので良いっぽい.

あとは OBS Studio でウインドウキャプチャ(xcomposite)して仮想カメラで流して Zoom で拾う.Chrome だと chrome://settings/appearance で "Use system title bar and borders" をやっとかないとキャプチャできない罠にハマった(画面全体のキャプチャだとこれなしでも拾えたけど).

なお,タイマーアプリの音を自分のスピーカーにも流したいとかなら,combined sink を作ってブラウザを出力をそこに入れて分岐させる(alsa_output.pci-0000_04_00.1.hdmi-stereo のところは pacmd list-sinks で出てくるスピーカーの sink の name で):

pacmd load-module module-combine-sink sink_name=virtmic_combined slaves=virtmic,alsa_output.pci-0000_04_00.1.hdmi-stereo

閑話休題.

これでタイムキーパーが用意できたぜと思って使ってたら,Zoom 自体が落ちやがるというオチが待っていた…… 残念.仕事にならん.

同じネットワークにつなげてたメイン PC(Win)の Zoom も同時に落ちたし,DNS の解決も出来なくなってたので,たぶんネットワークがちょっと死んでたっぽい.でもその程度で落ちないで欲しい気もする.ハートビートが途切れたからミーティングが終了したという判定だったりしたのだろうか? でも自分がホストだったんだよね…… 謎.

iftop

top コマンドのネットワークインターフェース版的なもので,ネットワークの通信量を見られるコマンド.今まで使ったことなかったけど,時々欲しいなと思う類の便利ツールだと思う.sudo apt install iftop で入るので導入も楽.

pdf のページ数を確認するワンライナー

ls *.pdf | python3 -c 'import PyPDF2;import sys;[print("{} {}".format(PyPDF2.PdfFileReader(open(file.strip(), mode="rb")).getNumPages(),file.strip())) for file in sys.stdin.readlines()]'

しばしばお世話になる pdftools の使ってる PyPDF2 ライブラリを呼ぶ感じでテキトウに.とりあえず動けばいい.

read コマンドを少しまともに使う

タブ区切りのフィールドを,タブ以外はそのままに読み込んで flds という配列に入れてもらう:

while IFS=$'\t' read -a flds; do echo ${flds[0]}; ...; done

IFS をちゃんと指定しておかないと空白まで消えちゃうので注意なのと,-a オプションで配列に入れてもらえるので便利なのと.ここらは今までちゃんと使えていなかったのでメモ.

固定幅の行番号を付けたかった

cat -n で行番号を付けられるけど,固定幅でゼロ埋めした番号がほしいときには悩ましい.どうしましょ? とりあえず awk で行番号と入力を printf すりゃどうとでもなるけれど……

ということで調べたら nl コマンド使って nl -nrz -w3 -ba とかで行けるっぽい.なるほど.

でもまあ,覚えるのめんどくさいから awk でいいかなという気もする.

WSL2 内から Windows をスリープする

リモートから自宅の Windows マシンを叩き起こしたときに再度スリープさせるのをどうしようかなと思ってたけど,よく考えたら WSL2 内から Windows のコマンドを実行できるんだから普通に PowerShell 使って寝かせればよかった:

PowerShell.exe -Command 'Add-Type -Assembly System.Windows.Forms;[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $false);'

とりあえずちゃんと寝てくれたのでこれで良いのだろう.

«Prev || 1 | 2 | 3 |...| 58 | 59 | 60 || Next»
Search
Feeds

Page Top