C# windows media player 双窗口同步播放视频 您所在的位置:网站首页 windowsmediaplayer播放器的窗口显示模式 C# windows media player 双窗口同步播放视频

C# windows media player 双窗口同步播放视频

2024-02-08 08:59| 来源: 网络整理| 查看: 265

需要用windows media player播放视频,两个摄像头从不同位置录像的视频,要一起播放,从某个给定时间段开始播放,速度为0.1

先上代码

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WMPLib; namespace videotest { public partial class Form1 : Form { bool flag2 = true; public double cp;//视频开始时间 public string url = ""; public string url2 = ""; public double changdu;//需要显示的一个业务变量 public string no; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { axWindowsMediaPlayer1.URL = url; axWindowsMediaPlayer1.Ctlcontrols.currentPosition = 0d; axWindowsMediaPlayer1.uiMode = "none"; axWindowsMediaPlayer1.settings.autoStart = false; axWindowsMediaPlayer1.Ctlcontrols.play(); axWindowsMediaPlayer2.URL = url2; axWindowsMediaPlayer2.Ctlcontrols.currentPosition = 0d; axWindowsMediaPlayer2.uiMode = "none"; axWindowsMediaPlayer2.settings.autoStart = false; axWindowsMediaPlayer2.Ctlcontrols.play(); timer1.Interval = 100; timer1.Enabled = true; label3.Text = cp.ToString(); label4.Text = changdu.ToString(); } private void button1_Click(object sender, EventArgs e) { if (axWindowsMediaPlayer1.playState == WMPPlayState.wmppsPlaying && axWindowsMediaPlayer2.playState == WMPPlayState.wmppsPlaying) { axWindowsMediaPlayer1.Ctlcontrols.pause(); axWindowsMediaPlayer2.Ctlcontrols.pause(); button1.Text = "播放"; } else { axWindowsMediaPlayer1.Ctlcontrols.play(); axWindowsMediaPlayer2.Ctlcontrols.play(); button1.Text = "暂停"; } } private void trackBar1_Scroll(object sender, EventArgs e) { if (axWindowsMediaPlayer1.playState == WMPPlayState.wmppsPlaying && axWindowsMediaPlayer2.playState == WMPPlayState.wmppsPlaying) { axWindowsMediaPlayer1.Ctlcontrols.currentPosition = trackBar1.Value/1000d; axWindowsMediaPlayer2.Ctlcontrols.currentPosition = trackBar1.Value/1000d; } } private void timer1_Tick(object sender, EventArgs e) { if (axWindowsMediaPlayer1.playState == WMPPlayState.wmppsPlaying) { trackBar1.Maximum = (int)(axWindowsMediaPlayer1.currentMedia.duration)*1000-1000; trackBar1.Minimum = 0; trackBar1.Value = (int)(axWindowsMediaPlayer1.Ctlcontrols.currentPosition)*1000; } if (axWindowsMediaPlayer1.playState == WMPPlayState.wmppsMediaEnded) { trackBar1.Value = 0; button1.Text = "播放"; } if (flag2&& axWindowsMediaPlayer1.playState == WMPPlayState.wmppsPlaying&& axWindowsMediaPlayer2.playState == WMPPlayState.wmppsPlaying) { axWindowsMediaPlayer1.Ctlcontrols.currentPosition = cp; axWindowsMediaPlayer2.Ctlcontrols.currentPosition = cp; trackBar1.Value = (int)(cp*1000); axWindowsMediaPlayer1.Ctlcontrols.pause(); axWindowsMediaPlayer2.Ctlcontrols.pause(); axWindowsMediaPlayer1.settings.rate = 0.1; axWindowsMediaPlayer2.settings.rate = 0.1; button1.Text = "播放"; flag2 = false; } label1.Text = axWindowsMediaPlayer1.currentMedia.durationString; label2.Text = TimeChange(axWindowsMediaPlayer1.Ctlcontrols.currentPosition); } private string TimeChange(double t) { string res = ""; int m = (int)Math.Floor(t / 60d); int s = (int)(t - m * 60d); res = m.ToString().PadLeft(2, '0')+":"+s.ToString().PadLeft(2, '0')+"."+ Math.Round(((t - m * 60d)-s),3)*1000; return res; } private void trackBar1_MouseUp(object sender, MouseEventArgs e) { timer1.Enabled = true; } private void trackBar1_MouseDown(object sender, MouseEventArgs e) { timer1.Enabled = false; } private void button3_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.Ctlcontrols.currentPosition += 3; axWindowsMediaPlayer2.Ctlcontrols.currentPosition += 3; } private void button4_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.Ctlcontrols.currentPosition -= 3; axWindowsMediaPlayer2.Ctlcontrols.currentPosition -= 3; } private void button2_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.Ctlcontrols.stop(); axWindowsMediaPlayer2.Ctlcontrols.stop(); trackBar1.Value = 0; } private void button5_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.settings.rate = 0.1; axWindowsMediaPlayer2.settings.rate = 0.1; } private void button6_Click(object sender, EventArgs e) { axWindowsMediaPlayer1.settings.rate = 0.2; axWindowsMediaPlayer2.settings.rate = 0.2; } /// 视频文件pic/guiyu.mov /// 图片的尺寸如:240*180 /// 开始截取的时间如:"1" #region 从视频画面中截取一帧画面为图片 public string GetPicFromVideo(string VideoName, string WidthAndHeight, string CutTimeFrame) { string ffmpeg = @"ffmpeg.exe"; string PicName = @"F:/"+no+".jpg"; //Server.MapPath(Guid.NewGuid().ToString().Replace("-", "") + ".jpg"); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.Arguments = " -i " + VideoName + " -y -f image2 -ss " + CutTimeFrame + " -t 0.001 -s " + WidthAndHeight + " " + PicName; //設定程式執行參數 try { System.Diagnostics.Process.Start(startInfo); return PicName; } catch (Exception err) { return err.Message; } } #endregion private void button7_Click(object sender, EventArgs e) { GetPicFromVideo(url,"1024*768", cp.ToString()); } } }

后面还用 ffmpeg.exe来做了截图功能,ffmpeg文件三件套下载在我的其他链接里

ffmpeg三件套

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有