2022-02-28

ウインドウサイズをxdotoolで設定する方法

xdotoolを使うと、ウインドウのサイズをコマンドから設定できる。1920x1080などきりのいい大きさに設定することで、ソフトの使用方法の解説動画を作る際に役立つだろう。
xdotool search --name 'name of the window' windowsize %@ 1920 1080

2022-02-27

FFmpegでPulseAudio入力の量子化ビット幅を設定する方法

FFmpegでPulseAudioの音声を録音する際、デフォルトでは16ビットになる。 24ビットや32ビットに設定するには、 -c:a オプションを使用する。

例えば、以下のようなコマンドで、32ビットで録音することができる。

-c:a pcm_s32le -f pulse -i alsa_input.device_name.analog-stereo -c pcm_s32le output.wav

なお、 -cオプションを使用した場合、中途半端に設定が変わるようで、左右のデータが混じったりと正しく動作しない。 ソースコードを追ったところ、pulse audioへはS16LEを要求し、受け取ったデータを -c で設定したフォーマットでそのまま処理するように見える。

2021-12-02

すでに起動したプロセスの出力をリダイレクト

起動済みのプロセスの出力のリダイレクトを変更する方法をメモする。 特に、バックグラウンドでプロセスを起動した後、出力を/dev/nullへリダイレクトしたくなることがある。

GDBでプロセスにアタッチする。

gdb -p 874046

以下のようにdup2を使う。
p (int)dup2((int)open("/dev/null", 00000, 0000), 0)
p (int)dup2((int)open("/dev/null", 02101, 0777), 1)
p (int)dup2((int)open("/dev/null", 02101, 0777), 2)
detach
quit

第2引数 (flags) のコードは、主要なものは以下の通り。
O_RDONLY00
O_WRONLY01
O_RDWR02
O_CREAT0100
O_APPEND02000

2021-10-11

OBS Studioの音声モニターをGoogle Meetへ送る方法

NDIからの音声を、Linux上のOBS Studioの音声モニターを経由して、Google Meetへ送る方法を考えている。 まだ音声が聞こえるかどうかまでは試していないが、アイデアを記事に残しておく。

手順

  1. loopbackモジュールをロードする。
    pactl load-module module-loopback sink=Virtual1
  2. OBS StudioとGoogle Meetを起動する。
  3. pavucontrolを起動し、OBS Studioのモニター出力をVirtual1へ切り替え、Google Meetの入力をVritual1.monitorへ切り替える。 (もしかすると、OBS Studioでモニターデバイスを予め設定しておく方が良いかもしれない。)

その他

おそらく、Zoomのように.monitorを除外するようなアプリケーションでは、この方法は使用できない。

2021-10-09

DNFで提供されるフィル一覧を取得する方法

DNFでパッケージが提供するファイル一覧をインストールする前に取得することができる。インストール前にどのようなファイルがダウンロードされるか知ることが出来て便利だ。
dnf repoquery -l package

RPMでは以下のコマンドに相当するが、インストールされているパッケージでないと表示してくれない。

rpm -qf package

また、ダウンロードしたRPMファイルでどのようなファイルがインストールされるかを見る場合、以下のようにRPMコマンドを使用する。

rpm -ql -- file.rpm
しかしながら、lesspipe.shに頼ってlessで開く方が早い。

2021-10-01

git grep で特定のファイルを除外する方法

gitでファイルを検索する際、特定のファイルだけ除外したい場合がある。 たとえば、
  • ソースコード中の文言を探したいが、翻訳ファイルは除外したい
といった用途がある。

このようなとき、以下のように:(exclude)をつけると、exclude_patternに該当するファイルを除外できる。

git grep regex path... ':(exclude)exclude_pattern'

2021-09-24

Redhat Enterprise Linux 9で何が新しくなるのか

Redhat Enterprise Linuxのアルファ版は、今の所Fedora 34がベースとなっているらしい。 Fedora 34を使用していてどんな違いがあるのか、メモを残しておく。

この記事は未完成で、これから加筆してゆく予定。

  • Kernel version: 4.18.0 -> 5.13.16
  • iostatでdiscard数・サイズも表示されるようになる。
  • qt6が加わる。
  • すべてのオーディオがPipewireを通るようになる。 [記事] 使用する上で何が変わるのか良くわからないが、音響を扱うなら知っておいて損はないだろう。