ugnagブログ

たいした内容はありません。思いつきで書いているだけ。
開発日記がメインかな。

<< JCIFS バグ | main | MP3プレイヤー 技術的な話 >>

MP3プレーヤー インポート処理

今回はインポート処理について書いてみる。
インポート処理は、予め設定しておいたMP3ファイルがあるディレクトリから
MP3ファイルのタグ情報などを読み、ライブラリに登録する機能。

一般的なMP3プレーヤーと違い、「このディレクトリを読んで下さい」という動作ではない。

つまり、設定されているディレクトリを全て読む。

そのため登録漏れやファイル名の変更などがあっても、常に最新の状態が反映される。

ファイル名などを変更した場合は、削除と新規追加の両方にリストアップされることになる。

このアプリでは、削除されたデータ、新規登録されたデータは次にインポートするまで記憶している。
そのため、「この削除されたものは実はこの新規追加されたもの」などという関連付けが可能だ。
(ただし、関連付けするGUIはまだできていない)


全てのMP3ファイルを読みなおすというと、「どれくらい時間がかかるのだろう?」という疑問があるかと思う。

ライブラリに登録されているデータには、ファイルのタイムスタンプを保持しており、
インポートの際にはタイムスタンプの比較をしながら行う。

つまり、変更されていないファイルに関しては、全くファイルを読まない。
さらに、設定により、変更されたファイルであっても読まないことができる。
これはアプリ側でメタ情報を変更した場合のことを考えた設定だ。
アプリ側でメタ情報を変更するのであればファイルのメタ情報は読む必要がない。
というより読んでしまうとアプリで入力された情報が上書きされる。
また、音情報に関しては再生する際に読むしかないのだから、
この仕様で問題はないと思われる。

この機能により、再インポート時間(一度インポートして、チェックのための再処理)にかかる時間はかなり短くなる。

うちのPCの環境では次通りだった。

PC Core2Duo 2.2GHz
メモリ 4GB
曲数 約9700曲

この環境で、再インポートにかかった時間は14秒だった。


これなら別に待ち時間のストレスはないのではないかと思う。

現在、環境が揃っていないためテスト出来ていないが、
ネットワーク上にあるMP3ディレクトリの再インポートも、
おそらくはそれほどかからないのではと考えている。

ただ、初期インポートにはそれなりにかかる。
これはMP3タグを読み取るライブラリがローカルファイルしか読めない仕様になっており、一度MP3ファイルをローカルディスクにコピーしているので仕方がない。

その代わり、曲の再生時には、再生キューを別スレッドで先読みしバッファリングするため曲のつなぎの時間はさほどかからない。



さて、もう少しである程度まで出来上がる。

あと一息、がんばろう。
プログラム・開発(MP3用ツール) | comments (0) | -

Comments

Comment Form

本文に書いて下さい
本文にh抜きで書いて下さい