Ogg Vorbis?

東方がPCM*1データを再生してるのはかなり例外的なことだとして*2、やはりBGMにはoggを持ってきたいということにした。数日前とりあえずもってきてビルドしたものを使ってみる。関係ないけど特に最近のVCでのライブラリってのはランタイムライブラリのリンク形式(static or dynamic)だのランタイムライブラリのバージョンだのが非常にうっとうしいのでソースを自分でビルドするこの方式が一番いいと思います。で、ov_fopen関数が死ぬんですけど。


→返り値チェック
→OV_ENOTVORBIS(OggVorbis_Error_NotBorbis)
→Borbisファイルではありません
→は???
ov_fopenはfopen呼んでるのでどうせランタイムライブラリ関係だろうと設定いじってライブラリを何度もリビルドして1時間くらい無駄にした気がします。


動画・音声の各種変換にはffmpegを使っています。動画・音声ともにかなり多くの形式に対応しており、形式変換・画質音質変換・動画から音声のみ抜き出し・時間を指定して一部分のみ抜き出し・連番画像に変換、などいろいろなことがこれ1つでできちゃいます。GUIでなくコンソールベースでとっつきは少し悪いかもしれませんが、ffmpegの持っている全機能を網羅するGUIとかは無理かもしれませんね。オプションの指定も出力ファイル名の拡張子で勝手に判別してくれたりします。もちろんさらに詳しい指定も可能です。で、

ffmpeg -i alice.mp3 alice.ogg

じゃ駄目だったみたいですね。oggはファイルのコンテナ形式、vorbisはオーディオフォーマットとなっております。拡張子.oggのデフォルト形式ってvorbisじゃないのかよ……。

ffmpeg -i alice.mp3 -acodec libvorbis alice.ogg

こうしたらうまくいった。-acodecはAudioCodecですね。


せっかくなのでffmpegの指南。みんな使ってたら知らん。あとこれが最適かも知らん。元は高校生の時、動画をAA変換しようとしてまず動画を連番jpgファイルに変換した時に使ったのが最初かなあ。静止画からAAにするときに深刻なメモリリークを起こしてPCが凄まじい重さになったのはいい思い出です。
まずはこれコンソールベースなので素早くffmpeg.exeがあるディレクトリでコンソールが開けないとだるくてしょうがない。よって次のようなバッチファイルをffmpeg.exeと同じフォルダに用意する。
console.bat

cmd

(※cmd.exeは実行するとコンソールが開く)
これでconsole.batをダブルクリックするだけでffmpegディレクトリでコンソールを開ける。ここで

ffmpeg

と打つとヘルプが出てくるが、量が多すぎて上の方があふれる+読むたびに毎回コマンドを入れるのが面倒なのでファイルにリダイレクトする。

ffmpeg > usage.txt

対応フォーマットのリストは-formatsオプションで得られる。オプションで指定するときの名前が書かれているのでこれもテキストファイルに落とす。

ffmpeg -formats > usage.txt

出てくるのは全部英語で結構量もあるので全部読むのはきついかもしれないけど、だいたいの使い方はググれば日本語の情報が出てきます。基本は

usage: ffmpeg [[infile options] -i infile]... {[outfile options] outfile}...

の通り、

ffmpeg -i input.xxx output.yyy

です。拡張子から自動で判別してくれるのが嬉しいです。


ライセンスはLGPLで自分の作ったソフトから呼びだすことができ、携帯動画変換君などがその例です。マルチメディアファイルを扱うソフトを作るときのバックエンドとしてかなり有力な選択肢になるのではないでしょうか。


ついでにalice.mp3は「不思議の国のアリス」です。aliceとしか名前のつけようがないだろこれ。有名な絵本(だよね?)と見せかけて東方曲です。残念でした。いや元ネタはそのまんまそれだけど。全身の毛穴からふぐ刺しを噴き出す*3アリスとの激闘が蘇り・・・ませんね。これ道中曲だし。


私が麻雀を打つと世紀末状態になるため、必死でピンフで平和に終わらせようとしているという裏設定が追加されました。別に私がいなくてもいつも世紀末してる気がするけど気にしない。

メンタンピン > ツモ > イーペーコー > ドラ1

2D > Bナギ > 2C > D > グレ > 2A > 2C > グレ > JB > JD > テンショー > 下ナギ > 2A > 2CC > 断迅拳

に対応する基本コンボなので必ず覚えましょう。麻雀は役の組み合わせによるコンボゲーです。また、状況に応じてパーツを入れ替えるアドリブも大切です。

*1:非圧縮のwavファイルだと思えばよし

*2:音声圧縮は人間に分かりにくいところをごまかしながら高圧縮率を達成してるから非可逆であり、音が変わっちゃうからだとしておこう

*3:アンサイクロペディアが初出?の表現