VideoSourcePlayer控件中视频源的同步声音播放

时间:2014-08-27 03:12:39

标签: c# .net-4.0 aforge

我使用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的事件,可以确定精确的视频位置,这对于保持音频与视频同步非常有用。

1 个答案:

答案 0 :(得分:2)

既然你提到过:

  

我只是在寻找可能的其他选择   重现包含视频文件的音频并以某种方式保留它   与视频播放器控件同步...

通过使用ElementHost并使用WPF媒体控制,也许你可以获得更好的运气。

如果此解决方案符合您的条件,请按以下步骤操作:

  1. 创建新的WPF UserControl并添加到您的WindowsForms应用
  2. 在此UserControl中添加媒体元素并配置您想要的方式。
  3. 构建解决方案。
  4. 现在,工具箱中必须显示YourSolutionName Controls,您必须在那里进行控制。
  5. 只需将其拖至WindowsForms应用,即可创建ElementHost
  6. 我已创建了UserControl,如下所示:

        <MediaElement Name="VideoMediaElement" 
                      Source="Media/Wildlife.wmv" 
                      LoadedBehavior="Manual"/>
    

    请记住,在此示例中,此文件必须与您在Media文件夹中的应用并排放置。如果您错过了这一步,它将为您提供奇怪而无用的错误0xC00D11B1

    加载的行为Manual将让您有机会更自由地控制视频。

    之后,您可以在此UserControl中执行您想要的任务,例如创建PlayPause

        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更容易搜索。