kpiffmpeg.kpi v1.0.0 登録

各種音楽ファイルのデコードを FFmpeg に丸投げして再生するための KbMedia Player プラグインです。

ダウンロード:https://github.com/autch/kpiffmpeg/releases/tag/v1.0.0
ソースコードhttps://github.com/autch/kpiffmpeg

用意するもの

最低限 ffmpeg.exe が必要です。ライセンス及び特許の関係から、本プラグインには同梱していませんので、あらかじめ入手しておいてください。FFmpeg 公式サイトから入手できますし、誰かがビルドしたバイナリでも、ご自分でビルドされたものでも構いません。32/64bit 版どちらでも(動きさえすれば)構いません。

タグ情報や曲の長さを取得するには ffprobe.exe が追加で必要です。

これらを kpiffmpeg.kpi と同じディレクトリか、PATH の通ったディレクトリにおいてください。

次に kpiffmpeg.ini というファイルを kpiffmpeg.kpi と同じディレクトリに作り、以下のように書いてください。

[kpiffmpeg]
exts=...

exts= の値は、プラグインに再生させるファイル拡張子のリストです。ドットを省き、/ で区切ります。たとえば .dsf, .dff, .m4a ファイルを再生させるには次のように書きます。

[kpiffmpeg]
exts=dsf/dff/m4a

これで KbMedia Player を起動すれば、dsf, dff, m4a ファイルを再生できるようになっているはずです。

ini ファイル

kpiffmpeg.ini ファイルには以下の設定を書くことができます。

[kpiffmpeg]
; 対応させたいファイルの拡張子の . を省いて / で区切って列挙する。
; 変更は次回プラグインを読み込んだ時に反映される。
exts=foo/bar/baz/quux

; シークの精度と速度のバランスを設定する。設定できる値は 1 か 0
; 1 のとき:シーク位置までダミーのデコードを繰り返す。正確だが遅い。
; 0 のとき:入力ファイルを読み飛ばすことでシークしようとする。高速だが粗い。
; デフォルトは 0 で、変更はファイルを開きなおすと反映される。
SeekPrecision=1/0

; タグ情報を取得したくないファイルの拡張子を、exts= と同じ形式で列挙する。
; ここに書かれた拡張子のファイルはタグ情報取得を行わない。
; ffprobe によるタグ情報の取得は遅いので、Media エクスプローラなどでの操
; 作に支障をきたすようなときに設定する。
; DisableTags=* とだけ指定すると、すべてのファイルのタグ取得を行わなくなる。
; デフォルトは空で、変更は次回プラグインを読み込んだときに反映される。
DisableTags=ext/ext/ext

; ffmpeg.exe へのフルパスを指定する。
; kpiffmpeg.kpi と同じディレクトリに ffmpeg.exe を置いた場合は常にそちらが
; 優先され、この値は使われない。
; デフォルトは ffmpeg.exe(PATHが通っていることを期待する)で、変更は
; ファイルを開きなおすと反映される。
ffmpeg=c:\path\to\ffmpeg.exe

; ffprobe.exe へのフルパスを指定する。
; kpiffmpeg.kpi と同じディレクトリに ffprobe.exe を置いた場合は常にそちらが
; 優先され、この値は使われない。
; デフォルトは ffprobe.exe(PATHが通っていることを期待する)で、変更は
; 次回タグ情報を取得する際に反映される。
ffprobe=c:\path\to\ffprobe.exe

コマンドライン

kpiffmpeg.kpi は以下のコマンドで ffmpeg.exe を起動し、標準出力から得られた PCM をパイプで読み取って KbMedia Player へ返します。

  • SeekPrecision=1 のとき:
ffmpeg -hide_banner -y -v -8 -i FILENAME -ss POS -vn -f FORMAT -ac CHANNELS -ar SAMPLERATE -acodec CODEC -
  • SeekPrecision=0 のとき:
ffmpeg -hide_banner -y -v -8 -ss POS -i FILENAME -vn -f FORMAT -ac CHANNELS -ar SAMPLERATE -acodec CODEC -

FORMAT, CODEC はそれぞれ、SOUNDINFO::dwBitsPerSample が、

  • 0 のとき:FORMAT="s16le", CODEC="pcm_s16le"
  • 8 のとき:FORMAT="s8", CODEC="pcm_s8"
  • 16 のとき:FORMAT="s16le", CODEC="pcm_s16le"
  • 24 のとき:FORMAT="s24le", CODEC="pcm_s24le"
  • 32 のとき:FORMAT="s32le", CODEC="pcm_s32le"
  • -32 のとき:FORMAT="f32le", CODEC="pcm_f32le"
  • -64 のとき:FORMAT="f64le", CODEC="pcm_f64le"

ffprobe.exe のコマンドラインは以下の通りです。このコマンドの標準出力から得られた内容をパイプで読み取って KbMedia Player へ返します。

ffprobe -hide_banner -v -8 -show_format -show_streams -of flat FILENAME

ライセンス

kpiffmpeg.kpi -- FFmpeg adapter plugin for KbMedia Player
Copyright(c) 2015, Autch.net

kpiffmpeg.kpi は MIT ライセンスで配布されます。LICENSE.txt ファイルをご覧ください。

ソースコード

ソースコードは以下の GitHub リポジトリから入手できます。

https://github.com/autch/kpiffmpeg

Visual Studio 2015 Community でビルドしています。

更新履歴

  • v1.0.0 (65536) 2015.09.06
    • 初版。DSD の PCM 変換再生と ALAC を再生したくて作った。