vorbis-encoder-jsをリリース
- POST
Browserify を利用する vorbis-encoder-js をリリースしたので、 履歴とハマリポイント等を備忘録として書き残していく。
既存のライブラリでは何が足りなかったのか higuma/ogg-vorbis-encoder-js - GitHub Garciat/libvorbis.js - GitHub 上記どちらのライブラリでも AudioBuffer から Ogg Vorbis 形式の音楽ファイルを生成し、DLさせる所までは実現した。 しかし、元々想定される用途が Web Audio API を利用して、マイクからの音声データをDLする所がゴールだったようで、 タグ情報を埋め込む事考えられておらず、任意のタグ情報が埋め込めない。
また、モダンなプロジェクトなら Browserify や webpack の事は考慮に入れると思うのだが、そうでもないらしく微妙に使い勝手が悪い。 最初のコミットが1年も2年も前なので仕方ない側面もある。
そういった経緯から要望を満たすライブラリが無かったので、 GitHub で公開されている既存プロジェクトのソースコードを参考に作る事にした。
要件 Node.js での利用を想定する JavaScript での利用は Browserify を利用する 任意のタグ情報を設定出来ること ビルド環境の構築は頑張らない ログ libvorbis のビルド libvorbis はC言語で書かれているので、JavaScriptに変換するために Emscripten を経由する必要がある。 もともとC言語で書かれたライブラリを任意の言語に変換して使おうという要望は LLVM というプロジェクトで実現されており、 Emscripten は LLVM が生成した中間コードを JavaScript に変換する機能に特化している。
従って、あれやらそれやらのインストールが必要で、 いつまで経ってもコンパイルが通る環境が作れない!
参考リンク:emscriptenで遊んでみた - kashiの日記
結局 Emscripten に特化したコンテナは Docker Hub で公開されていたので利用することにした。