Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 易于使用的播放器嵌入winforms?_C#_Winforms_Video_Media Player - Fatal编程技术网

C# 易于使用的播放器嵌入winforms?

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 +=

我需要嵌入一个播放器,可以播放视频文件和使用字幕(.srt)

哪些玩家(具有良好的文档)可用于此任务?如何设置文件和字幕?

解决方法 添加Windows Media Player COM对象

添加计时器

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无关