c# - Silverlight 媒体播放器

标签 c# silverlight xaml media-player

我正在使用 VSTS 2008 和 C# 来开发嵌入 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"/>

Page.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" />

最佳答案

哦宝贝,我有给你的媒体播放器吗: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');

关于c# - Silverlight 媒体播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982205/

相关文章:

c# - SoapException 服务器无法处理 MVC 站点中 ASMX web 服务的请求

c# - 如何在 C# 上从 VLC 播放 RTSP

c# - ComboBox 不更新所选项目的 DataBindings 已更改 (WinForms)

c# - .NET Web API中未更新服务层ModelState

c# - ListView 顶部的堆栈布局 SCROLL

c# - 如何在后面的代码中读取 WPF 发布版本号

silverlight - 是否推荐将 Silverlight 用于新开发?

.net - 使用 HttpUtility.UrlEncode

silverlight - 浏览器外 (OOB) Silverlight 应用程序中的 XAP 缓存

c# - SL 5 脱离浏览器,提升信任度 - 从任何本地目录显示 PNG