Ogg Opus 関連のスクリプトを書いた
1. はじめに
フィヨルドブートキャンプ Part 2 Advent Calendar 2024 の22日目の記事です。 Part 1 はこちら です。
2. きっかけ
私は、昨年の8月末から フィヨルドブートキャンプ (FBC) に参加しており、現在はRubyプログラミングについて学んでいくためのプラクティス (課題) に取り組んでいます。
しかしながら、直近まで取り組んでいたプラクティスについては進捗が芳しくなく、10月から11月の間は一旦プラクティスから離れていました。
3. やったこと
3.1. opusenc
のラッパースクリプトを書いた
- Git リポジトリ
- https://codeberg.org/blacktoad/opus-utils.git
- スクリプト
- https://codeberg.org/blacktoad/opus-utils/src/branch/main/opus-encode
opus-tools に含まれている、 opusenc
を使いやすくするためのシェルスクリプトを書きました。
opusenc
の使い方は以下の通りです。
opusenc [options] input_file output_file.opus
出力ファイル名を入力ファイル名 (拡張子は除く) と違うものにすることはほぼ無かったので、少し前までは以下のシェルスクリプトを実行していました。
ls *.flac | while read filename do opusenc $filename ${filename%%*flac}.opus done
しかし、次第に上記のスクリプトを以下の条件でも実行できるようにしたいと考えるようになり、ラッパースクリプトを書くことにしました。
任意のディレクトリ
音楽ファイルがあるディレクトリに毎回移動して実行するのが面倒。
FLACやWAVが混在している
上記のスクリプトを参照。
opusenc
が対応している、任意の拡張子の音楽ファイルを引数として渡したい。
3.2. Output Gain を変更するための Poke スクリプトを書いた
Opus のヘッダー部には Output Gain
というフィールドが含まれています。この値を変更するための、GNU poke のスクリプト (pickle) を書きました。
書くのが間に合わなかったので、後ほど追記します…