1

巨大なビデオ ファイルをダウンロードして同時に再生し、ユーザーに「ビデオを保存しますか?」と尋ねる ac# winform アプリケーションを作成しています。

var fileStream = new FileStream(@"c:\c.mp4", FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
        var writer = new BinaryWriter(fileStream);
        totalBytesRead = 0;
        double divide;
        do
        {
            bytesRead = webStream.Read(buffer, 0, 4096);
            if (bytesRead != 0)
            {
                writer.Write(buffer, 0, (int)bytesRead);
                writer.Flush();
                totalBytesRead += bytesRead;

            }

        } while (bytesRead != 0);

axWindowsMediaPlayer1.URL = "C:\\c.mp4";

ダウンロード速度が速いので問題ありません。しかし、ダウンロード速度が再生速度よりも遅い場合、問題が発生します。メディア プレーヤーがファイルの終わりに達して停止し、再生時間がゼロになり、プレーヤーに黒い画面が表示されます。私が考える唯一の方法は、停止する直前にプレーヤーを一時停止することです (より良い方法を知っていますか?) が、最後のフレーム時間にアクセスできません。私はこれを試してみましたが成功しませんでした:

 axWindowsMediaPlayer1.PlayStateChange += axWindowsMediaPlayer1_PlayStateChange;
void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        if (e.newState == 8)//Meida ended
        {
            axWindowsMediaPlayer1.Ctlcontrols.pause();
            HandleUnWantedStop();
            My_Goal_Position= axWindowsMediaPlayer1.Ctlcontrols.currentPosition;
        }
    }

前もって感謝します。

4

0 に答える 0