我使用AForge.Controls
中的Video Source Player control在winforms应用程序中播放一些视频片段。
代码是这样的。
string fileName = @"C:\path\to\file.example";
videoSourcePlayer.VideoSource = new AForge.Video.AsyncVideoSource(new FileVideoSource(fileName), true);
videoSourcePlayer.Start();
视频文件包括音频和视频流,但据我所知,控件只处理视频而非音频。
如何以视频源播放器控件的同步方式播放音频流?
谢谢。
修改
Video Source Player control
有一个名为NewFrame
的事件,可以确定精确的视频位置,这对于保持音频与视频同步非常有用。
答案 0 :(得分:2)
既然你提到过:
我只是在寻找可能的其他选择 重现包含视频文件的音频并以某种方式保留它 与视频播放器控件同步...
通过使用ElementHost
并使用WPF媒体控制,也许你可以获得更好的运气。
如果此解决方案符合您的条件,请按以下步骤操作:
UserControl
并添加到您的WindowsForms
应用UserControl
中添加媒体元素并配置您想要的方式。YourSolutionName Controls
,您必须在那里进行控制。WindowsForms
应用,即可创建ElementHost
。我已创建了UserControl
,如下所示:
<MediaElement Name="VideoMediaElement"
Source="Media/Wildlife.wmv"
LoadedBehavior="Manual"/>
请记住,在此示例中,此文件必须与您在Media
文件夹中的应用并排放置。如果您错过了这一步,它将为您提供奇怪而无用的错误0xC00D11B1
。
加载的行为Manual
将让您有机会更自由地控制视频。
之后,您可以在此UserControl
中执行您想要的任务,例如创建Play
和Pause
:
internal void Play()
{
this.VideoMediaElement.Play();
}
要在WindowsForms
中访问它们,请执行以下操作:
private void WindowsFormsButton_Click(object sender, EventArgs e)
{
var videoControl = this.MyElementHost.Child as VideoUserControl;
videoControl.Pause();
}
希望这会有所帮助。 WPF MediaElement比其他lib更容易搜索。