我正在创建 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;
}
}
提前致谢。