ニコニコ動画管理ソフトを作るぞー[1]


ニコニコ動画からダウンロードしたflvやmp4ファイルが
非常に増えてきたので、
管理用のソフトウェアを作成しようと思いました。

内容としては、

□登録用常駐ソフト
・ダウンロードフォルダを監視
・フォルダにコピーされたflv・mp4を自動でDB(MySQL)に登録、
 サムネイルを生成(常駐ソフト)

□閲覧・管理ソフト
・flv・mp4のサムネイル・タイトル一覧を見れるようにする。
・検索機能により絞込みができる
・flv・mp4を再生できる→再生は別ソフトで行う。
・できれば、サムネイルを変更する機能も欲しい。

といったもの。

私のPCにはMySQLが入っているが、DBに関してはあまり知識がないので
後日調査が必要だ。(あるいはテキストファイルに情報を全部記述するべきか)
今日の目標としては、flv・mp4からフレーム(サムネイル)を抽出できるプログラムを作成できるところまで頑張りました。
過去にDirectShowを使用して、動画処理プログラムをある程度作っていたので、これを流用してなんとか作れないか試行錯誤してみました。
(久々のプログラムです。)

プログラムが昔(VC++6.0、DirectX 9.0b)すぎるので
色々変更が必要だったりして、ちょっと苦労しました。
昔と変わった点・修正点等を下記にメモ書き。



□DirectShow
[1]MP4・FLV対応
 そもそもmp4・flvは対応していない。
 だが、コーデックを入れるなどして、
 WindowsMediaPlayerで再生できるようにすれば、対応可能
 → mp4はffdshowコーデックを使用することで回避可能
 → flvはFlash Video decodersで対応

[2]DirectShowが入っているSDK
 当初はDirectXに入っていたDirectShowだが
 DirectX SDK→移管当時:Platform SDKWindows SDK
 というように変更になっている。 
 ※ただし、DirectShowのプログラムをビルドするには
  DirectX SDKが必要なようである。

[3]gedit.h
 DirectShowがらみで使用していたgedit.hだが、
 qedit.hで定義されていたdxtrans.hがなくなっている。
 そのため、qedit.hを書き換えるか、
 qedit.hをインクルードする前に下記文を記述する必要がある。


#pragma include_alias( "dxtrans.h", "qedit.h" )
#define __IDxtCompositor_INTERFACE_DEFINED__
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
#define __IDxtJpeg_INTERFACE_DEFINED__
#define __IDxtKey_INTERFACE_DEFINED__
#include


VC++ 6.0 → VC++2008
 char → TCHARの時代に!
 それにともなって、char型仕様のstrcpyやsprintfを
 TCHAR型向けの関数に変更する必要あり。
 代入方法も""から_T("")に変更。

 ・参考サイト

 TCHAR型のススメ 
 tchar.h対応表



とりあえず、
Geekなページのサンプルで、mp4・flvのフレームをビットマップに出力できるところまでは完成できた。
過去に使ったプログラムもいじりまくって、mp4まではビットマップにできるようになった。
しかし、flvだけは、フレーム数などが通常と違うのか、表示できない
あと、mp4・flvの両方とも私のプログラムでは再生できない。

サンプルと私のプログラムの大きな違いとしては、

・サンプル:IMediaControlのRunで動画を再生(表示)
・私   :1フレームずつ取得して、自力のコードで表示。(拡大・縮小あり)

この辺に何か問題ありそうな予感。
デバックしてみましたが、再生時に問題はないので、表示部分で何かミスってるのかも・・・

次の土日で調査かな