MPCについてのメモ

MPCについて、ひとりでぼちぼち調べたことなどを書き留めています。 自分なりに確認したつもりですが、間違いもあるかもしれません。実行する場合には自己責任でお願いします‥。 問題等ありましたら、掲示板またはメールにてお知らせください。

HOME

INDEX


関連付け

APIセレクタ(造語)

MPCが使用できる動画再生システムはDirectShowだけではない。 RealやQuickTime、そしてShockwaveの再生システムを使った再生もできる。 また、6.4.5.7以降、各メディアファイル毎にその再生設定を選択できるようになっている。

6.4.5.7のRelease Noteより、拙訳。

オプションのファイル形式のカテゴリ毎に、それを開くAPIを選択できるようにした。 選択項目はDirectShow、RealMedia、QuickTime、Shockwave。 RealMediaファイルやある種の古い.movファイルを、本来のライブラリを使わずにDirectShow Filterで読み込みたい場合に使える。

再生方法の選択は Options > Player > Formats のここで行う。

この部分には項目名も無く、ここを示したい時、その表現に困ることがあったが、 上のGabestの説明を考えると「APIセレクタ」と呼ぶのが良いような気がする。

というか、今後(2004-10-12以降)、当サイトでは(別のいい表現が見つかるor思いつくまでは)そう呼ぶことにします。 このサイト内で突然「APIセレクタ」という言葉に出くわしたら、この項を思い出してやってください。

参考資料
2004-10-12

埋め込み再生の関連付け

拡張子の関連付けをWMPから外すと、Webページによっては埋め込み音楽や映像が再生されなくなることがある。 これは、再生プラグイン未指定の場合にIEが参照する「埋め込み再生の関連付け」が同時に消去されたため。 (HTMLタグによってプラグインが指定されているページではこの現象は起きない。)

MPCには埋め込み再生用プラグインが用意されていないので、WMPのものを使う必要がある。 以下の手順で、プラグインの関連付けのみを復元できる。

  1. WMPで再度関連付けを行う。
  2. レジストリエディタで
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\EmbedExtnToClsidMappings
    
    のキーを開き、配下のキーごとすべて書き出す。
  3. WMPの関連付けを外す。
  4. 2.で書き出した.regファイルをダブルクリック。

ちなみに、Gabestには、MPCのWebプラグイン(ActivX Control)を開発する意思はないようだ。 レジストリを弄らなければならなくなるのが嫌らしい。

付記

関連付けするプラグインを変更したい場合、上記キー配下にある該当拡張子のキーの(標準)の値を以下のように変更すればよい。

  • RealPlayer→CLSID:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA
  • QuickTime →CLSID:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B
  • WMP    →CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95
参考資料
2004-10-05

携帯用動画(.3gp .3g2 .amc など)をMPCで再生する。

携帯用動画(.3gp .amc など)は、QuickTimePlayer(またはQuickTime Alternative)をインストールすることでMPCでも再生できるようになる。 ただ、これらを再生するには、DirectShowではなく、直接QuickTimeを呼び出す必要がある。 (WMPその他ほとんどのPlayerで再生不可能なのはこの「直接QTを呼び出す」ことが出来ない為。)

MPCへの拡張子登録が行われていないと、MPCは自動的にDirectShowを使用してしまい、再生に失敗する。 事前に拡張子の登録を行っておくとよい。

  1. Options > Player > Formats を開く
  2. 呼び出し先が"QuickTime"になっているファイルタイプ("QuickTime File"がデフォルトでそうなっている)を選択。
  3. 下の拡張子記入欄に" .3gp .3g2 .amc"(要ピリオド、拡張子同士の間に半角スペースひとつ)を記入。
  4. "Set"ボタン押下の後"OK"。

参考画像

2004-10-02

外部デコーダ・フィルタ

MP3が再生できない。

MP3が再生できないことがある。 たとえばこのファイル(右クリックからダウンロードして下さい)。 大抵のMP3プレイヤーやWMP9では難なく再生されるが、MPCでは「コーデック又はフィルタがない」旨のエラーメッセージが表示される。

Stream 0

Media Type 0:
--------------------------
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Stream {E436EB83-524F-11CE-9F53-0020AF0BA770}
subtype: MEDIASUBTYPE_MPEG1Audio {E436EB87-524F-11CE-9F53-0020AF0BA770}
formattype: TIME_FORMAT_NONE {00000000-0000-0000-0000-000000000000}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 1
cbFormat: 0


Media Type 1:
--------------------------
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Stream {E436EB83-524F-11CE-9F53-0020AF0BA770}
subtype: TIME_FORMAT_NONE {00000000-0000-0000-0000-000000000000}
formattype: TIME_FORMAT_NONE {00000000-0000-0000-0000-000000000000}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 1
cbFormat: 0

MPCは(デフォルトでは)MP3再生をすべてDirectShowに任せている。 これは、DirectShowフィルタ「MPEG-I Stream Splitter」のMP3パーサの問題。

このMP3パーサには、MP3ファイルに付加されたID3タグによっては、そのMP3を処理できないというバグ(仕様?)がある。 それで、適当なフィルタが存在しないことになり、上記のエラーメッセージが表示される。

対応策としては以下の2つが挙げられる。

  • ID3タグを消去して、MP3を修復する。

    ID3タグに問題があるとしても、音楽データ自体が壊れたわけではない。 ID3タグを一旦全消去すれば、MPEG-I Stream Splitterでも処理できるようになる。 ここにあるTidyMP3で修復できる。

  • MP3の再生手段に、RealMediaを指定する。

    ファイルに変更を加えるのが嫌な場合、代替のフィルタを探すことになる。 RaalPlayerは対応できるようなので、MP3をDirectShowではなくRealMediaで再生するよう設定すればよい。 (ちなみに、QuickTimeでは無理だった。)

付記

当然、この問題に対応済みのDSFがあれば、それをインストール(またはOverride)することでも解決する。 DSP-worksDS-MP3 Source が、対応しているらしい。 ‥が、うちの環境では(正常ファイルの場合でも)まるで動作しなかった。 現在調査中。

2004-12-07追加

2004年12月6日のCVS更新にて、「MPEG Audioソースフィルタ」が内蔵フィルタに追加され、VBRなMP3の時間表示問題とともに、この問題は解決された。

その経緯などについては拙ブログの以下のエントリをどうぞ。

2004-12-10追加

サンプルのリンク先がいつの間にか「Forbidden」されてしまっていたので、コピーを置く。

直リンクはやっぱまずかったかな‥。私の思慮不足でした。 Daniel Cavalcanti氏(Up主)、サーバー管理者さん、そして、 「Forbidden」されてから私が気付くまでの間、このファイルをダウンロードしようとして失敗された読者の方、 申し訳ありませんでした。(とは言っても前2者にはこの謝罪は届かないだろうけど‥。)

参考資料
2004-10-10

VBRなMP3の時間表示問題

MP3が再生できない。」で述べたとおり、デフォルトの設定では、MPCはMP3ファイルの再生をDirectShowに任せている。 だから、MP3再生に不具合が生じた場合、普通、その原因は既存のMP3フィルタにあることになる。

可変ビットレート(VBR)で作成されたMP3の時間が正しく表示されないのも標準のMP3フィルタが原因。 対応策として、以下の2つを挙げておく。

  • VBRの時間表示に対応したDirectShow Filterを導入する。

    可音月堂で公開されているmpg123 and MAD DirectShow Filterは、この問題に対応済みのDSF。 (問題なのはMP3パーサなので、「MP3 Parser Filter」のみの導入でもVBR問題自体は解決する。)

  • MP3の再生手段に、RealMediaまたはQuickTimeを指定する。

    DirectShowを使用しないようにすることでも解決する。RealMedia、QuickTime双方ともVBRの時間表示に対応している。

付記

GabestもMP3フィルタを自作する意志はあったようだが‥。↓

2004-12-07追加

2004年12月6日のCVS更新にて、「MPEG Audioソースフィルタ」が内蔵フィルタに追加され、ID3タグによってMP3が再生できなくなる問題とともに、この問題は解決された。

その経緯などについては拙ブログの以下のエントリをどうぞ。

2004-10-06

その他

レジストリ保存とINI保存

分かっていることをつらつらと書いてみる。

  • 設定が保存されているレジストリのキーは
    HKEY_CURRENT_USER\SOFTWARE\Gabest\Media Player Classic
    
    また、6.4.7.9以降はこれに加えて
    HKEY_LOCAL_MACHINE\SOFTWARE\Gabest\Media Player Classic
    
    に、実行ファイルのパスが書き込まれるようになっている。

    以下、HKEY_CURRENT_USERにあるキーを「設定キー」、 HKEY_LOCAL_MACHINEの方を「パスキー」と表記する。

  • 設定を.iniファイルに保存すると、実行ファイルのディレクトリ内にその実行ファイル名(ちなみに大文字)で.iniファイルが作られる。 (何も弄っていなければ「MPLAYERC.ini」になる。)
    • デフォルトはレジストリ保存。
    • MPCは起動時に、.ini→レジストリの順で設定値を確認する。
    • レジストリの確認時に、存在しないキーがあれば作成する。
    • .iniに保存されるのは、設定キーのみ。
    • .ini保存を指定していても、パスキーは作成され、値も更新される(6.4.7.9以降)。
    • 初回起動前に.iniファイルを作っておくと、設定キーは、全く作成されずに済む。
      • ただし、中身のない0バイトのファイルだと、MPCは無効と判断し、ファイルが消されてしまう。(当然レジストリ保存の状態になる。)
      • 1バイト以上となるなら、ファイルの中身は何でもよい。(空白文字や改行のみも可。)
      • その場合、.iniファイル中の無効な文字列は無視され、追記の形で設定が記録される。(上書きされないので無効部分はゴミとして残る。)
      • 初回起動時用のダミーファイルを作るなら、
        		[Settings]
        の一行だけを記入しておけば、ゴミが発生せずにすむ。
  • レジストリ⇔iniの切替を行うと、Favorites(お気に入り)と Recent File List(履歴) の内容は破棄される。
    • また、ini→レジストリの切替を行うと、.iniファイルは削除される。
    • だが、レジストリ→iniの切替では、それまでに作成したレジストリキーは消されない。
  • パスキーはMPCが起動時にチェックし、値が間違っていればそのときに修正するが、その後参照している気配はない。
    • 起動中に勝手にパスキーの内容を書き換えても、動作に問題は起きないようである、とりあえず試した範囲では。

以上。ふと、異なる設定のMPCを共存させてみようと思ったので、.ini保存の挙動について調べてみたときのメモ。

2004-10-10

プレイリストファイルをお気に入りに登録する。

メニューの「Add to Favorits...」(「お気に入りに追加」)で追加されるのは現在再生中のファイルで、プレイリストそのものを追加することは出来ない。 プレイリストファイルを追加するには、レジストリ(またはini)を直接編集する必要がある。

レジストリとini、それぞれの記述は以下のような形式になっている。("C:\My Documents\My Music\police.m3u"を「The Police」という名前で登録した場合のもの。)

レジストリ

[HKEY_CURRENT_USER\SOFTWARE\Gabest\Media Player Classic\Favorites\Files]
"Name0"="The Police;0;C:\\My Documents\\My Music\\police.m3u"

ini

Name0=The Police;0;C:\My Documents\My Music\police.m3u

「Name0」は、お気に入り内の順序。上から順に0、1、2、‥と数字が増えていく。 設定内容の内、「;」は区切り文字で、各セクションの意味は左から順に以下のとおり。

  1. 登録名
  2. ファイルの再生開始位置(プレイリストの場合無効。)
  3. ファイルのフルパス

ダミーのデータをひとつ作って、必要なところを書き換えるのが楽。

付記

フォルダを指定することも可能。(フルパス末尾の「\」は、在っても無くても可。)

2004-10-10

フォルダ内のファイルを一括再生する。

他の多くのプレイヤーと同じく、MPCも当然、フォルダ内のファイルを一括再生できる。 フォルダをDrag&Dropする、SendToフォルダにショートカットを置く、レジストリの HKEY_CLASSES_ROOT\Directory\shell 以下にキーを作成する‥etc、 他のプレイヤーと同じ方法がMPCでも使える。

ただ、6.4.6.0以降、他のプレイヤーには無いフォルダの一括再生方法が付け加えられている。

  1. File > OpenFile でダイアログを開く。
  2. 一括再生したいフォルダを選択し、開く。
  3. フォルダ内のファイルを"何も選択しないまま"、「開く」ボタンを押す。

Release Noteに明記されているのだが、意外と知られていない気もするので書いてみた。

参考資料
2004-10-10

HOMEへ TOP