Ogg Opus 関連のスクリプトを書いた

目次

1. はじめに

2. きっかけ

私は、昨年の8月末から フィヨルドブートキャンプ (FBC) に参加しており、現在はRubyプログラミングについて学んでいくためのプラクティス (課題) に取り組んでいます。

しかしながら、直近まで取り組んでいたプラクティスについては進捗が芳しくなく、10月から11月の間は一旦プラクティスから離れていました。

その間は、 Ogg Opus という形式の音声ファイルに関するスクリプトを書いていました。

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) を書きました。

書くのが間に合わなかったので、後ほど追記します…

著者: Keisuke Kurosawa

Created: 2024-12-23 月 00:07

Validate