気になること調査結果
 HOME > Programing > DivXを再生(SDK)
 DivXを再生(SDK)
1.概要
   本ページは、私がフリーソフトを作成する際に使用したDivX再生のコーディング
  手法を紹介することを目的としています。
  紹介する手法は、必ずしもこれでないと実現できないというわけではありません。
  方法は他にもたくさんあると思います。


2.AVI再生するに当たって
   DivX再生には、mciSendString関数を使用しています。
  この関数は、コマンドを文字列で記述し、引数で渡すと、
  コマンド指示通りに動作してくれる、非常に扱いやすい関数です。

   引数は、以下の通りです。

    ・PCTSTR  pszCommand   ・・・コマンド文字列
    ・PTSTR   pszReturnString・・・リターン情報を受け取るバッファ
    ・UINT    cchReturn   ・・・バッファサイズ
    ・HANDLE  hwndCallback  ・・・コールバックウィンドウハンドル


3.AVI再生の手順
   DivXを再生する手順は、ファイルのリード/ライト手順に似ています。
   以下に、手順を載せます。

   (1)ファイルオープン

   (2)再生前準備

   (3)再生開始

   (4)一時停止

   (5)再生再開

   (6)再生位置をファイル先頭へ移動

   (7)再生位置をファイル終端へ移動

   (8)任意の位置へ移動

   (9)再生停止

   (10)ファイルクローズ


4.コマンド詳細
   では、3.で紹介した手順を行う為のコマンドを説明します。

(1)ファイルオープン
    ファイルオープンは、シンプルです。

     mciSendString("open \"ファイル名\" type avivideo alias divxs notify", NULL, 0, hWnd);

    ファイル名を\"で囲んでいることに注意して下さい!!
    これをしないと、フルパスでファイルを指定することが出来ません。

    しかし!!これでは、DivX 5までしか再生出来ません!
    DivX 6.0以降も再生出来るようにするには、コマンドを以下のように変更します。

     mciSendString("open \"ファイル名\" type mpegvideo alias divxs notify", NULL, 0, hWnd);

(2)再生前準備
    再生前準備は、いろいろとあります。
    例えば、再生時間をミリ秒に指定する場合は、以下のようにします。

     mciSendString("set divxs time format milliseconds", NULL, 0, hWnd);


    総再生時間を知りたい場合は、以下のようにします。

     char  szbuf[32];

     mciSendString("status divxs length", szbuf, sizeof(szbuf), NULL);

    szbufに、総再生時間が返ってきます。
(3)再生開始
    再生開始も簡単です。

     mciSendString("play divxs", NULL, 0, hWnd);

(4)一時停止
    一時停止も簡単です。

     mciSendString("pause divxs", NULL, 0, hWnd);

(5)再生再開
    再生再開は、一時停止中にのみ有効です。

     mciSendString("resume divxs", NULL, 0, hWnd);

(6)再生位置をファイル先頭へ移動
    下記コマンドを実行することで、再生位置はファイルの先頭に戻ります。
    但し、再生も止まるので、継続して再生したい場合は、
    (3)を実行する必要があります。

     mciSendString("seek divxs to start", NULL, 0, hWnd);

(7)再生位置をファイル終端へ移動
    下記コマンドを実行することで、再生位置はファイルの終端に戻ります。
    (6)と同様、再生が止まるので、継続して再生したい場合は、
    (3)を実行する必要があります。

     mciSendString("seek divxs to end", NULL, 0, hWnd);

(8)任意の位置へ移動
    下記コマンドを実行することで、再生位置を任意の場所へ移すことが出来ます。
    (6)と同様、再生が止まるので、継続して再生したい場合は、
    (3)を実行する必要があります。
    下記の例は、再生時間をミリ秒に設定し、2秒へ移動させる例です。

     mciSendString("seek divxs to 2000", NULL, 0, hWnd);

(9)再生停止
    再生停止は簡単です。

     mciSendString("stop divxs", NULL, 0, hWnd);

(10)ファイルクローズ
    ファイルクローズも簡単です。

     mciSendString("close divxs", NULL, 0, hWnd);

<質問・要望など>

    上記内容に対しての質問、要望などを、是非お聞かせ下さい。
    以下のメールフォームか、掲示板へ書き込みをお願いします。

    メール送信フォーム
    掲示板


  アフィリエイトならこれ!

 ・バリューコマース

 ・アクセストレード


  PC・周辺機器買うならこれ!

 ・全国31店舗展開!BTOパソコンならドスパラへ!

Copyright(C) 2005 s. All right reserved.