ニコニコ動画管理ソフトを作るぞー[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 SDK→Windows 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("")に変更。
・参考サイト
とりあえず、
Geekなページのサンプルで、mp4・flvのフレームをビットマップに出力できるところまでは完成できた。
過去に使ったプログラムもいじりまくって、mp4まではビットマップにできるようになった。
しかし、flvだけは、フレーム数などが通常と違うのか、表示できない
あと、mp4・flvの両方とも私のプログラムでは再生できない。
サンプルと私のプログラムの大きな違いとしては、
・サンプル:IMediaControlのRunで動画を再生(表示)
・私 :1フレームずつ取得して、自力のコードで表示。(拡大・縮小あり)
この辺に何か問題ありそうな予感。
デバックしてみましたが、再生時に問題はないので、表示部分で何かミスってるのかも・・・
次の土日で調査かな