[ad_1]
Windows 32 ビット システムの C++ プログラムで非常に大きな avi ファイルを再生しています。
小さな avi ファイルは正常に再生されます。 この 1 つの avi ファイルには、圧縮されていない大きなビットマップが含まれており、再生中に読み込みが遅いように見えるため、再生が遅くなります。 再生されますが、遅いです。 VLC メディア プレーヤーでの再生速度が大幅に向上します。 毎秒 40 フレームでエンコードされましたが、私の実行可能ファイルでは毎秒 10 ~ 15 フレームで再生されます。 完全にロードすることを考えていたので、完全にロードした後、Animate_Open を使用して再生します。
使っています
#define IDC_MYANIMATE 9 HINSTANCE hInstanceAVI = GetModuleHandleW (NULL); HWND hwndAvi = Animate_Create (hParent, IDC_MYANIMATE, WS_BORDER | WS_CHILD, hInstanceAVI); int iAp = Animate_Open (hwndAvi, L"Very_Large.avi"); ShowWindow (hwndAvi, SW_SHOW); iAp = Animate_Play (hwndAvi, 0, -1, -1);
しかし、これは、再生中に avi ファイルを継続的にロードすることによって遅くなるようです。
どうすれば avi ファイルを完全に読み込み、読み込み時に再生を開始できますか?
私が試したこと:
このロジックを調整できる場合に備えて、任意のタイプのビデオ ファイルをロードする方法を検索してみました。 これには何の助けも見つかりませんでした。 それらはすべて、私がやっていることとほぼ同じように見え、再生する前に最初にaviファイル全体をロードしようとはしていません。
avi ファイルを実行可能ファイルの一部にするつもりはありませんが、実行可能ファイルが avi ファイルをロードし、ファイルが完全にロードされたら再生します。 そうすれば、aviファイルが入っているメモリを削除し、その大量のメモリを解放して他のことをすることができます。 そのため、exe を起動し、exe の実行中にボタンをクリックして avi ファイルをロードし、ボタンをクリックして avi を再生します。 単純? そのはず。 avi の読み込みに問題があり、ボタンをクリックして再生するまでメモリに保持します。
私は高速な CPU、ソリッド ステート ドライブ、大量の RAM、および大きなページ ファイルを使用しているため、これを調整できるとは思えません。
複数の単一ビットマップをロードして後で表示できるので、これは簡単なはずですが、何かが足りないようです。
これを解決するために助けを求めています。 ありがとう。
解決策 1
// int iAp = Animate_Open(hwndAvi, L"Very_Large.avi"); // The second parameter Animate_Open() can contain a pointer to the path of the AVI file, or the name of an AVI resource. // The parameter is created with the MAKEINTRESOURCE macro, which consists of the resource identifier in the LOWORD and null in the HIWORD. // An application can use FindResource() and LoadResource() to find and load any type of resource. // It is therefore also possible to read the AVI as a resource from a file. int iAp = Animate_Open(hwndAvi, MAKEINTRESOURCE(IDR_AVI1));
[ad_2]
コメント