FPlayer

現在位置のナビ

トップコンピュータの国フリーソフト → FPlayer

説明

Vista以降のWindowsには、ビットパーフェクトオーディオ出力としてWASAPIというAPIが用意されています。 このWASAPIを経由した再生ソフトを作成しました。 様々な圧縮フォーマットに対応しています。

FPlayerとは?

FPlayerは、WindowsからWASAPI経由で音声を再生するアプリケーションです。

いくつかの圧縮データフォーマット(MP3,AACなど)の展開と⊿Σの再生をできるようにしました。

既知の不具合

ライセンスの問題でDSFフォーマットには対応していません。

ffmpegライブラリが古いので、最新の圧縮フォーマットに対応していません。

MP3など一部の圧縮フォーマットを読み込むと、演奏時間の表示が本来の時間を示しません。 ffmpegのバグのような気もしますが、原因はきちんと追いかけていません。

古いXMOSで11.2MHzの⊿Σを再生しようとすると、DACがハングアップします。 Webmasterが使っているAmaneroや新しいXMOSでは問題ありません。

解決した不具合

再生中にストップボタンが効かないことがありました。

ごく短いファイルを再生すると、ファイル名表示が崩れたり再生終了しなかったりしました。 今では大塚愛の『愛 am BEST』を再生しても大丈夫です。

突然アプリが落ちるという報告があります。 二つの原因を見つけて潰しました。

Realtek High Definition Audioについてはわかりました。 IAudioClient::IsFormatSupported() IAudioClient::Initialize()の二つは、再生フォーマットを指定するパラメーターにWAVEFORMATEXを指定するようマイクロソフトのドキュメントに書かれています。 このWAVEFORMATEXをWAVEFORMATEXTENSIBLEに変更し、Format.nBlockAlign = 8; Format.wBitsPerSample = 32; Samples.wValidBitsPerSample = 24;とすると、Realtek High Definition Audioに24bitデータを送れます。

PCM2706とRAL2496HA1についても解決しました。 IAudioClient::Initialize()に渡す二つのREFERENCE_TIME型は、出力デバイスによって適切な値の範囲が違います。 でも不適切な値を渡してもエラーを検出せずに、再生に失敗します。 手持ちの全デバイスに対して適切となる共通の値を見つけ出すのに苦労しました。 「SACD30nにもUSB経由で再生できた」という報告が来ました。

WASAPIが使えるようになった頃マイクロソフトが公開したサンプルコードでは、今はきちんと動作しません。 マイクロソフトのWASAPIライブラリは素人がメンテしているようですね。

以前TEACのDAC専用再生アプリのサイトに「正しく再生できないプレヤーアプリがある」と嫌味を書かれていました。 AmaneroやXMOSには常にちゃんと出力できていたので、webmasterの試験には問題ありません。 TEACのDACで正しく再生してほしかったら、試験用にDACを貸しなさいよ。

2023年現在WASAPIのコードを書くとしたら、 とある言語の開発記録II を参考にすると良いです。

FPlayerアップデート履歴

2024年11月17日

HelpメニューからAboutを選択した時、バージョン表記のダイアログが出なかったのをデバッグしました。 それ以外は9月6日に公開したバージョンと同じです。 バージョン日付も9月5日をキープします。

2024年9月6日

フォルダーをドロップしたら、そのフォルダー直下の音声ファイルを再生するようになりました。

サンプリング周波数表示にkやMの文字を使うようになりました。

再生中のファイル名がデータグリッドの表示範囲外にある場合、表示範囲内までスクロールするようになりました。

長いパスのファイルが再生できない問題に対応しました。

2024年2月27日

11.2MHzの⊿Σファイルも、DoPで再生できるようにしました。

2023年6月10日

突然落ちる問題、短いファイルの再生で表示が崩れる問題、再生中にストップボタンが応答しない問題に対処しました。

2023年5月31日

PCM2706やRAL2496HA1などで再生できなかった問題に対応しました。

2023年4月25日

16bitデータのDACを使おうとすると、実行中断する問題をデバッグしました

2023年4月21日

DLLの依存性を再度見直しました。

2023年3月21日

いろいろ変更しました。 UX的には機能がいろいろ変わっていますが、ソースコード的にはWASAPIのバージョンアップ対応が大きいです。

2023年2月7日

再生ボタンを押してから再生まで待たされるのをやめました

2012年8月14日

公開β

FPlayerの使い方

FPlayerのメイン画面を示します。

項目説明
(1)メニューバーです。 メニューで選択できる項目は、キーボードショートカットからも起動できます。
(2)再生関係のボタンです。 CDプレーヤーの感覚で操作してください。
(3)再生時間の表示です 再生中の曲の先頭から何秒の位置を再生しているかを示します。
(4)デバイスの選択です。 出力したいデバイス名を選択してください。 新たにデバイスを接続した場合は、(2)のストップボタンを押すと選択できるようになります。
(5)バッファの使用率表示です。 バッファのトータルサイズは『設定』メニューから変更できます。
(6)曲名表示です。 現在再生中の曲のファイル名を表示します。 この部分にファイルをドラッグ&ドロップすると、再生ファイルの登録と再生が1動作でできます。
(7)再生準備曲リストです。 WindowsのExplorerからここにファイルをドラッグ&ドロップしてください。 マウスの左クリックで曲を選択できます。 (2)の再生ボタンを押すと、選択した曲から再生が始まります。 曲を選択した状態でマウスを右クリックすると、並べ替えに利用するメニューが出てきます。 ヘッダの『ファイル名』の欄をクリックすると、ファイルが名前の順番にならびます。

インストール

ZIPファイルを展開して出てくる4つのファイルがプログラムです。 マイクロソフトが作った再配布可能ランタイムライブラリも含みます。 EXEを実行してください。

ライセンス

FPlayerのライセンスは、コピー自由、使用は無料とします。

FPlayerはLGPL2.1ライセンスのffmpegライブラリを使用しています。 ffmpegライブラリだけは、別ライセンスになっています。 FPlayer本体とffmpegとはダイナミックリンクしているので、LGPLライセンスによって逆アセンブルなどのリバースエンジニアリングが許可されます。

FPlayerを人へ渡す場合には、必ずここで公開しているZIPファイルを渡してください。

ffmpeg

FPlayerは各種圧縮フォーマットを展開するために、ffmpegをダイナミックリンクライブラリとして利用しています。 Visual C++から利用するために、ソースコードを若干修整しました。 ffmpegライブラリはLGPLライセンスなので、ソースコードを修正したらLGPLライセンスで公開する義務が発生します。 そこで、ソースコードもこの場所で公開します。

移植作業はいい加減です

今回は、圧縮音声にそれほどこだわりがなかったので、とりあえず動作すればよいというスタンスで移植しました。 そのため、移植作業はいい加減です。 以下のような問題があります。

プログラム

対応OS形式ファイルサイズバージョン日付
Windows 10以降実行ファイルを圧縮したものFPlayer.zip481,697 Byte2024年9月5日バージョン2024年11月17日
Visual C++ffmpegソースコードsubffmpeg_distribute.zip953,769 Byte2012年8月14日

back button もどる