2

我正在使用带有 C# 的 VSTS 2008 来开发嵌入在 ASP.Net Web 应用程序的网页中的 Silverlight 应用程序。我在 XAML 中嵌入了一个 MediaElement 项。我的问题是,我想将页面嵌入一个 Silverlight 媒体播放器,它可以让最终用户手动控制 MediaElement 项目——播放/暂停/停止/倒带/前进。有参考样本吗?

提前谢谢,乔治

EDIT1:添加更准确的要求,

实际上,我想手动控制播放,这意味着我想处理播放器播放/暂停/停止/倒带/前进事件,并为事件处理程序添加我的代码来控制 MediaElement 并执行其他操作。

EDIT2:我的需要是,我想播放两个重叠的视频。屏幕作为背景视频,摄像头作为前景视频(位于右下角)。这是我对代码的修改,我目前的问题是,只播放背景视频,从不播放前景右下角视频。有谁知道为什么?

顺便说一句:我修改后的代码和当前的工作是基于http://www.codeplex.com/sl2videoplayer

http://www.yourfilehost.com/media.php?cat=other&file=sl2videoplayer_24325_new.zip

下面简单介绍一下我的主要修改代码,

mediaControls.xaml.cs

private MediaElement _media = null;
private MediaElement _camera = null;

public MediaElement Camera
{
    set
    {
        _camera = value;
    }
}

void btnPlay_Checked(object sender, RoutedEventArgs e)
{
    _camera.Play();            
    _media.Play();
    OnPlayClicked();
}

页面.xaml

    <MediaElement HorizontalAlignment="Stretch" Margin="0,0,0,0" x:Name="mediaPlayer" Stretch="Uniform" VerticalAlignment="Stretch" AutoPlay="false"/>
    <MediaElement Width="100" Height="100" x:Name="cameraPlayer" AutoPlay="false" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>

页面.xaml.cs

cameraPlayer.Source = App.Current.Resources["c"] as Uri;

App.xaml.cs(Application_Startup 函数)

        else if (item.Key.ToLower() == "c")
        {
            FormatUri(e.InitParams["c"].ToString(), "c", false);
        }

默认.html

        <param name="initParams" value="cc=true,markers=true,markerpath=markers_movie21.xml,m=http://localhost/screen.wmv,c=http://localhost/camera.wmv" />
4

3 回答 3

4

哦,宝贝,我为你准备了媒体播放器:Sl2 Video Player。MSPL 开源且很棒。

要添加实用地控制播放器的功能,请添加 ScriptableMembers。您将在代码中看到注册声明:

    HtmlPage.RegisterScriptableObject("Page", page);

现在看一个示例 ScriptableMember:

[ScriptableMember]
public void SeekPlayback(string time)
{
    TimeSpan tsTime = TimeSpan.Parse(time);
    mediaControls.Seek(tsTime);
}

已经存在于代码中。添加更多方法来做你想做的事情。然后您可以从另一个 SL 播放器的托管代码中调用方法:

HtmlElement videoPlugin = HtmlPage.Document.GetElementById("VideoPlayer");
            if (videoPlugin != null)
            {
                ScriptObject mediaPlayer = (ScriptObject)((ScriptObject)videoPlugin.GetProperty("Content")).GetProperty("Page");

                mediaPlayer.Invoke("SeekPlayback", TimeSpan.FromSeconds(seconds).ToString());

            }

或来自 javascript:

        var sl = document.getElementById("VideoPlayer");
        var content = sl.Content.Page;
        content.SeekPlayback('55');
于 2009-06-11T16:43:44.370 回答
1

如果它们是两个单独的 xap 包,则两者将无法通信,因为 Silverlight 沙盒都是单独的。

于 2009-06-11T16:45:36.037 回答
0

SL2videoplayer 说它支持流媒体视频。但是,当我尝试提供媒体服务广播 url(OnDemand 和 Live)来初始化参数“m”时,什么都没有出现。在初始化参数示例页面中,还显示了正在播放的远程 wmv 文件。

将它与 SL 3 一起使用是否还有任何已知问题?

于 2009-09-25T10:42:56.930 回答