C# 易于使用的播放器嵌入winforms?
我需要嵌入一个播放器,可以播放视频文件和使用字幕(.srt) 哪些玩家(具有良好的文档)可用于此任务?如何设置文件和字幕?解决方法 添加Windows Media Player COM对象 添加计时器C# 易于使用的播放器嵌入winforms?,c#,winforms,video,media-player,C#,Winforms,Video,Media Player,我需要嵌入一个播放器,可以播放视频文件和使用字幕(.srt) 哪些玩家(具有良好的文档)可用于此任务?如何设置文件和字幕?解决方法 添加Windows Media Player COM对象 添加计时器 private Timer playingTimer = new Timer(); public Main() { InitializeComponent(); playingTimer.Enabled = false; playingTimer.Tick +=
private Timer playingTimer = new Timer();
public Main()
{
InitializeComponent();
playingTimer.Enabled = false;
playingTimer.Tick += renderSubtitles;
}
处理状态更改以了解何时开始播放
private void Main_Load(object sender, EventArgs e)
{
player.StatusChange += player_StatusChange;
}
播放时激活计时器
void player_StatusChange(object sender, EventArgs e)
{
if (player.playState == WMPLib.WMPPlayState.wmppsPlaying)
{
playingTimer.Enabled = true;
}
else
{
playingTimer.Enabled = false;
}
}
从player.Ctlcontrols.currentPosition
获取当前秒数,如果找到字幕,请使标签可见,设置文本并水平居中。如果没有任何字幕,请隐藏标签
private void renderSubtitles(object sender, EventArgs e)
{
var ts = TimeSpan.FromSeconds(player.Ctlcontrols.currentPosition);
var entry = entries.FirstOrDefault(o => o.Start <= ts && o.End >= ts);
if (entry != null)
{
subtitle.Visible = true;
subtitle.Text = entry.Text;
var w = splitContainer.Panel1.Width;
subtitle.Location = new Point(w / 2 - subtitle.Width / 2, subtitle.Location.Y);
}
else
{
subtitle.Visible = false;
}
}
private void renderSubtitles(对象发送者、事件参数e)
{
var ts=TimeSpan.FromSeconds(player.Ctlcontrols.currentPosition);
var entry=entries.FirstOrDefault(o=>o.Start=ts);
if(条目!=null)
{
副标题:可见=真实;
subtitle.Text=条目.Text;
var w=splitContainer.Panel1.Width;
subtitle.Location=新点(w/2-subtitle.Width/2,subtitle.Location.Y);
}
其他的
{
副标题可见=错误;
}
}
@HansPassant是否支持.srt文件?我只能发现它支持closedcaption(SAMIFileName),但与.srt无关