重要な問題に気づいたので速報的なメモ。 完全に検証していない推測も含んでいる。
OGM・MKVで新しくサポートされた字幕形式(SSA/ASS)は、 SRTの超強力なスーパーセットであり、 SRTからワンタッチで変換して手軽に使うこともできるし、 その気になれば、SRTではできないような複雑なこともいろいろできる。
OGM・MKVにはユニコード(UTF-8)で格納されるため、 文字化け問題から解放され、 Windows 2000以上にとっては福音だが、作成時に注意しないと、 今度は逆にWindows 98で表示できない字幕になってしまう。
OGM・MKVではユニコード(UTF-8)のソフトサブを使える(2003年9月28日現在、SRT、SSA、ASSがサポートされている。OGMでは一部不具合がある)。特に、MKVではユニコードが標準扱いだ。 OGM・MKVの字幕でのユニコード使用について、 Windows 2000/XP では何も問題ないが、 Windows 98 では問題があり、注意を要する。
ユニコードの世界では「コードページの切り換え」は必要ない。 SSAのStyle定義で、Encodingがデフォルトの0のままでも問題ない。 とりわけSSAをユニコードで作成し、それをハードサブにする場合、 それで何も問題は起こらない。
しかし、Windows98版のVSFilterは、このパラメータを読んで、 ユニコードを内部的にコードページの文字に変換するようだ。
公開されているMatroskaサンプルの mewmew-vorbis-ssa.mkv では、 次のように日本語の字幕データで、Encoding(カンマ区切りの各行の末尾のデータ)が0のままになっている。
Style: Def,MS UI Gothic,36,16777130,16777215,16777215,0,-1,0,1,1,1,2,30,30,15,0,0 Style: Girls,MS UI Gothic,36,11206570,16777215,16777215,0,-1,0,1,1,1,2,30,30,15,0,0 Style: Miwa,MS UI Gothic,36,8441855,16777215,16777215,0,-1,0,1,1,1,2,30,30,15,0,0 Style: Moe,MS UI Gothic,36,8454143,16777215,16777215,0,-1,0,1,1,1,2,30,30,15,0,0 Style: Ichigo,MS UI Gothic,36,16766463,16777215,16777215,0,-1,0,1,1,1,2,30,30,15,0,0
そのため、このサンプルファイルの日本語は、Windows 98では正しく再生できない。
この末尾の0→128に変えてremuxしたところ、Windows 98でも再生可能なソフト字幕となった。
これまで、Windows 98でのソフトSSAはちゃんと表示できるかできないのか、はっきりしない状況だった。 言語やフォントなど、字幕の違いによって再生できることもあればできないこともあり、 動作保証ができなかった。
DirectVobSubのプロパティのMiscタブでPre-buffer subpicturesのチェックを外すと再生できるようになる、との報告もあり、たしかにそれで再生状況がよくなるケースもある。――手元の Windows 98 + WMP6.4 では、このチェックを外さないとOSがフリーズしてしまう。MPCでは、このチェックの有無と関係なく再生できた。――
しかし、この「Win98で日本語などの文字が表示できない」問題は、 再生側の設定の問題というより、 作成時にEncodingを明示しておかないのが根本原因のようだ。
本来ユニコードをOSレベルでサポートしていない Windows 98 で「無理やり」ユニコードを使えるようにしたために起きてくる問題だが、 動画作成者が作成時にちょっと注意することで Windows 98でも再生可能になるので、 ぜひ Encoding を指定しておくようにしよう。
日本語 | 128 |
---|---|
韓国語 | 129 |
簡体字中国語 | 134 |
繁体字中国語 | 136 |
ヘブライ語 | 177 |
アラビア語 | 178 |
キリル言語 | 204 |
タイ語 | 222 |
中欧語 | 238 |
この数値はfeタグと共通。 この数値はWindowsでのみ意味を持ち、ユニコードである以上、 本来は不必要。 Windows 98の旧式コードページにマップするため、 という後方互換性のために必要とされる。
Matroska Playback Pack 0.5 でテストした(DirectVobSub 2.27)。 (なお名前は Matroska Playback Pack だが、 最近のOGMの字幕再生にもこのパッケージ内のフィルターを使う。)
DirectVobSubのプロパティのMiscタブでPre-buffer subpicturesのチェックを外すと問題が解決する場合があるが、手元ではプレーヤーによっては、外さなくても再生できた。もともと Program Files\Windows Media Player に入っているはずの、 mplayer2.exe がDirectShowフィルターの使い方にクセがなく(素直に単純に使う)、 動画も軽いのでおすすめ。このプレーヤーの場合、手元では上記のチェックを外さないとOSごとフリーズした。
WIn98版MPCで字幕が出ないとき、いちど矢印のアイコンで Hide Subtitles にしてから、 あらためて Show Subtitles にすると字幕が出ることがよくあった。
SRTの場合、ファイルフォーマットとして文字エンコーディングを指定する場所がなく、 再生時のDirectVobSubの設定で文字セットを選ぶようになっている。 そのため、字幕を切り換えるごとに一般には設定を切り換えなくてはならず、 シームレスに字幕を切り換えられない。 SSAに比べて不便だ。 しかし、Windows 98のような――現在のVSFilterではもともとシームレスにできない――環境に関しては、コードページを再生のときに自分で指定できるSRTは、 ある意味かえって安全とも言える。 SSAでもコードページがきちんと指定されていれば、 Windows 98でも問題ないと思われる。
また、Windows 2000/XP では、もともと何も問題ない。
きょう(2003年9月28日)までこの問題に気づかなかったので、 これ以前にこのサイト(妖精現実)で言及したユニコードベースのサンプルでは、 Encoding が0のままになっているものが多い。 「Encodingを指定しないとWin98で再生できない」という観点からは、 それらは悪い見本であるから注意。
再生テスト用クリップとは、 文字どおり再生できるかどうかテストし、 問題を修正するために存在しているのであって、 どんな環境でも問題なく再生できる保証があれば、最初からテストクリップを公開する必要などない。つまり、このような問題が後から見つかるのは本望なのである。 とはいうものの、約2か月もこのことに気づけなかったのは、 不徳の致すところです。
mewmew-vorbis-ssa.mkv では日本語やヘブライ語のEncodingが指定していないので、 結果的に
という状態になっている。 このサンプルは、2003年7月、 そもそもWin98ではMKVの再生それ自体が(字幕がなくても)難しかった時期に作成されており、最初からWin98は動作保証外だった。 (Win98と2000/xpが同じインストーラーで公式にサポートされたのは、8月のCHIPリリースのときで、それ以前にはWin98用のフィルターは実質的に動作保証外のおまけ扱いだった。)
ダウンロードページをごらんいただければ分かるように、このファイルの再生法の説明は、すべて How To Play This Sample on Windows 2000/XPという大見出しのもとにある。98では駄目でもともとだった。 いわゆるmewmew installerも、最初から2000/XPだけを対象としており、 ユニコードビルドのフィルターをインストールする。
当時の再生用フィルターでは、 Windows 2000でも字幕に不具合が多かった。 ファイル名に日本語文字が含まれていると再生できないといった基本的な問題さえあった。 Windows 2000でさえそんな状態だから、もともとユニコード対応が弱いWin98のことまで考える余裕がなかった。したがって、ミュウミュウ自体がWin98で再生できないのは予定のうちなのだが、どうしたら再生できるのか、という改善法が問題で、 それがこれまでよく分からなかった。
2003年8月の Lazy Man's Guide to MKV になってようやく「Windows 98でも再生できますか」という短いセクションが追加されたが、答は「無理かもしれません」となっている。
It is, however, possible for you to replay subs in "Windows 1252" Code Page (English, French, German, etc.).
とあるのは、じつに Encodingが0になっているので、Windows 98ではそのコードページしかちゃんと見れないのだが、当時そのことに気付けなかった。
いまMKVtoolnixは0.7.0だが、 Lazy Man's Guideは一世代前の0.6.xの時代、 そしてミュウミュウはさらに昔の0.5.0の時代の産物だ。 当時はmkvmergeもSSAをサポートしていなかった。 現在、MKVToolnixはSSAをサポートしているが、SSAのfeタグ(このメモの内容と本質的に同じタグ)はサポート外だ。 そのくらいこの問題はやっかいで、結局、 再生側で自動変換ではサポートできないので、 作成側がマニュアルで指定しなければならない、 という結論になりそうだ。 分かってしまえば簡単なことだが……。
「従来できなかったことをユニコードベースへの移行により可能にした」という大前提があって、そのうえで、「で、それをユニコードベースで動けない古いOSでも動くようにしたい」という一種のぜいたくというか、わがままな要求が出る。 もし古いOSでスムーズに簡単に動くくらいなら、 そもそもユニコードベースに移行する必要がなかったわけで、 一筋縄ではいかない問題だ。
理論的にはWin98用のVSFilterを改善することで何とかなりそうなものだが、 Win95はどうなのか、3.1はどうなのか、と言い出せば、 どこかから先はサポート外にせざるを得ない。 ユニコードの利点をいかしてユニコードベースで開発している人に「自分のOSはユニコードだめだから、それはやめて」というわけにもいかないが、 Windows 98はまだ広く使われているので、何とか暫定的な解決法がほしいところだ。 そして、ソフト字幕に関しては「Encodingパラメータを明示する」ということで、 ほぼ問題が解決すると思う。
ただ、ビデオ環境に依存する要素もあり、 Windows 98でのユニコードのソフトサブ(OGMまたはMKV)の再生については、 まだまだハッキリしないことが多いです。 お気づきの点がありましたが掲示板にフィードバックをお願いします。
APE, MP3PRO につづいて今度はMusePackの DirectShow (DS) Filter バイナリーが公開された。任意のDSプレーヤー(Windows Media Player など)から利用できる。RareWaresからダウンロードできる(2003年11月8日 追記: 現在 RareWaresにあるバージョンは最新版でなく、日本語のファイル名を処理できない。最新版の入手については後述)。
MusePack(MPC)――旧称 Mpeg Plus (MPP, MP+)――は、非可逆オーディオ圧縮のひとつで、 中・高レート(160Kbps、192Kbpsなど)では平均して「最も効率良く透明」になる。 つまり、最も少ないレートで、「可逆ではないが、ABXで聴覚上オリジナルと区別がつかない状態」に、到達する。 速く言えば、音が良い。どのくらい音が良いかと言うと、MusePackのエンコーダ mppenc では、 「MP3並の音質」を「ラジオ」と呼んでいる(笑) レコード会社の人がオリジナルと「同じ音質」でコピーされていると目の敵にしてるMP3は、MPCのデフォルトと比べると「ラジオの音質」にすぎない。
――MP3 128などというナロウバンド時代の音を犠牲にしたフォーマットはやめて、 ロシーでももっと音の良いものにするか、 音源はWV、APE、FLAC、SHNなどのロスレスで共有しよう。――
大半のリスナーにとって、 AACやVorbisも192、256と上げれば「透明」になるが、MPCでは平均的により少ないサイズで「透明」になる。 (128Kbpsでも最高と考える人もいる。) foobar2000をフロントエンドとしてGUIエンコードも簡単になったので、性能は各自試していただくとして、 これまで専用のプレーヤーやプラグインがないと再生できなかった。 その再生が、MP3・Vorbis・AACのように、DirectShowで可能になったのは、 結構なことだ。
なお、MPCという略語は Media Player Classic というプレーヤーを指すこともあって紛らわしいが、 ここでは MusePack のこと。
このようなコンパクトで高音質指向のオーディオが動画の音声として使えれば……という要望は当然あるだろう。 Matroska は初期から音声成分にMusePackを使えるようにしたいとしていたが、 今回のフィルターはソースフィルタであり、デコード結果を引っ張り出すものなので、 これでMPCを動画にMUXできるわけではない。
しかも、現在普通に使われているMPCは、Stream Version (SV) 7 と言われるバージョンで、 大幅な改訂版SV8が開発段階にある。そして、Matroska はSV8をサポートする計画だから、 今回のSV7用のフィルターはもともと予定範囲外だ。 MatroskaのスペックではすでにA_MPCというCodec IDが定義されているが、 MPC ( musepack ) SV8 と明記されている。 「SV7ではなくSV8まで待ってほしい」というのはMPC開発チームの中心 Frank Klemm 自身の希望であり、 SV8の実際のリリースがいつになるのか分からないので、MKV動画でMPCを使えるようになる予定もはっきりしない。
現行バージョンSV7には内部処理に微妙な問題があって、 音量が最大近くまで行っている(振り切れ気味の)ソースをエンコードすると、 音が大きい場所で音が微妙にひずむそうだ(ソースがそもそもひずんでいるとも言えるが)。 そのため、コマンドラインから mppenc を使うときは、 オルタナティブのレベル処理を行う--xlevelスイッチを使うか、 または--scaleスイッチで1.00000よりわずかに小さい値を指定して、 最大値を100%よりわずかに小さくなるようにスケーリングするのが安全という。
このほかSV8では内部のデータ構造も整理され後方互換が切れるらしいので、 開発者からみてSV8まで待ってほしい、 というのは当然の要求だろう。 それとは別に、MatroskaチームはOgg Vorbisの開発元Xiphとの競合関係が感情的にこじれた結果、 フリー音声圧縮の世界と微妙な関係にあり、MPCとの関係もよく分からないところがある。 この「開発者間の人間関係の問題」はエンドユーザからみて本当に何とも言えない問題で、 ユーザにとってはOggもMkvも両方あって何も困らないのに、 あまり二者択一のようにケンカしてつぶしあってほしくないものだが……。
ところで、MPCはMpeg Plusという旧称からも分かるように、 もともとはMPEGオーディーオの拡張だった。そのご特許にふれそうな部分は極力変えたらしいが、 MPCが本当にパテントフリーなのかどうかも(訴えられてみない限り!)誰にもよく分からない状況だ。 オーディオマニアからは最高扱いされているMPCだが、こうした微妙な要素がある。
ちなみに今回のDSFilterはMPC開発チームによるオフィシャルなものではなく、 プレイヤー RadLight のアドオン。 このプレイヤーはバージョンによってはAdAwareなどを逆ハックする超凶悪なスパイウェアなので(スパイウェア検出削除ソフトを検出して逆に削除しようとするらしい)、 用もないのに間違えてインストールしないように注意。 フィルターはRadLightの有無と関係なく使える。
RadLight MPC DirectShow Filter v1.0.0.2
関連スレ: http://forum.doom9.org/showthread.php?s=&threadid=62269
MusePack(MPC)は、128Kbps以上、特に160~192Kbps程度の高レートで最も音が良いとされる不可逆圧縮音楽フォーマットだ。MP3やOgg VorbisやAAC(MP4)ではMPCの「透明」度に達するのに、より多くのビットを消費する。 その.mpcを一般のDirectShowプレーヤー(Windows Media Playerなど)で再生可能にする DirectShowフィルターだが、 RarewaresにあるMPC Direct Show Filterをインストールしても、 残念ながら、日本語などが含まれるファイル名の.mpcファイルを再生できるようにならない。
Rarewaresのインストーラに含まれるフィルタ RLMPCDec.ax が古いためだ(1.0.0.1)。
Unicodeに対応した1.0.0.2を使えば、日本語を含むファイル名の.mpcファイルが再生できる。
1.0.0.2は従来、下記から簡単にダウンロードできたが、
気が付くと、アカウント登録しないとアクセスできないようになっていた。
http://www.radlight.net/forum/index.php?showtopic=306
アカウント登録は無料だし簡単だが、面倒と感じるかたもいるだろうから、
1.0.0.2のインストーラーをここにミラーしておく。
(LGPLなので、そのまま再配布しても問題ない。)
2003年11月8日付けの最新版は 1.0.0.3 になった。 既に RareWares にも収録された。それを使おう。 本体のファイル名 RLMPCDec.ax
MP3PRO DSFilter / mIRC 6.10+SysResetやっぱり不具合 / MusePack (SV7) DSFilter
これまで jTFlashManager を使ってFlashを無効にしていたが、なぜか Mozilla 1.5 RC1 あたりからこのハックが使えなくなった。RC2になっても戻らない。 何か変わった? Mozillaではイメージは簡単にブロックできるのだが、 同じ調子でフラッシュの上で右クリックしてもブロックがないので、さらにむかつく。 そもそも何でFlashが同梱されているのか。ほしくない。Flashだけアンインストールする方法を調べるのが面倒なので……
*[type="application/x-shockwave-flash"] { visibility: hidden; } *[type="application/x-shockwave-flash"]:after { content: "\2620 Baka Flash Killed"; font-size: 30px; visibility: visible !important; }
……ユーザスタイルシートに上のを追加した。いいきみだ。
おまけ: BTの募金プリーズがやっぱりうざくて……
img[src="http://f.scarywater.net/bram/greet10.jpg"] { display: none; } form[action="https://www.paypal.com/cgi-bin/webscr"] { display: none; }
追記: MozillaのユーザースタイルシートはWindows2000では、例えば次の場所で指定する。
C:\Documents and Settings\ユーザ名\Application Data\Mozilla\Profiles\default\ランダム文字列\chrome\
ここに userContent.css というファイルを作る。
APE, MP3PRO につづいて今度はMusePackの DirectShow (DS) Filter バイナリーが公開された。任意のDSプレーヤー(Windows Media Player など)から利用できる。
詳細は別記事「MusePack (SV7) DSFilter」
MP3PRO (SBR MP3)のDSFilterが公開された。 MP3PRO音声の動画を作ることもできる。 手元では最初うまく再生できなかったが、matrix_mixer.axを登録解除することで問題が解決した。 (IISなどを退避させる必要はなかった。)
Matroska Playback Pack 0.5 に対するコマンド regsvr32 /u "C:\Program Files\Matroska Playback Pack\matrix_mixer.ax"