Silverlight 5动态流URI设置

时间:2016-04-15 12:09:35

标签: c# silverlight

我对Silverlight(5)并不熟悉,但我认为我已接近获得我正在努力工作的东西。感谢任何帮助。

基本上,我需要将动态生成的平滑流URI传递给播放器并正确设置“媒体源”。

我正在采取的步骤..

客户端调用,一个键值对..

<param name="InitParams" value="mediaurl=http://playready.directtaps.net/smoothstreaming/TTLSS720VC1/To_The_Limit_720.ism/Manifest" />

MainPage.xaml中..

<!--Media:PlaylistItem DeliveryMethod="AdaptiveStreaming" MediaSource="mPlayer" /-->

App.xaml.cs

public Dictionary<string, string> PageData = new Dictionary<string, string>();
private void Application_Startup(object sender, StartupEventArgs e)
{
    var paramValues = e.InitParams;

    foreach (var param in paramValues)
    {
        this.PageData.Add(param.Key, param.Value);

    }

    this.RootVisual = new MainPage();

}

MainPage.xaml.cs中..

public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();

        App currentApp = (App)Application.Current;

        string uriString = currentApp.PageData["mediaurl"];

        MessageBox.Show(uriString);

        Microsoft.SilverlightMediaFramework.Core.Media.PlaylistItem item = new Microsoft.SilverlightMediaFramework.Core.Media.PlaylistItem();

        item.MediaSource = new Uri(uriString, UriKind.Absolute);

        item.DeliveryMethod =
          Microsoft.SilverlightMediaFramework.Plugins.Primitives.DeliveryMethods.AdaptiveStreaming;

        //Add PlaylistItem to the Media playlist
        Microsoft.SilverlightMediaFramework.Core.SMFPlayer SMFPlayer = new Microsoft.SilverlightMediaFramework.Core.SMFPlayer();

        SMFPlayer.Playlist.Add(item);

        SMFPlayer.Play();


    }
}

Visual Studio 2015编译器不会对MainPage.xaml.cs抱怨,但它不起作用。 Silverlight播放器可以很好地播放静态URI,但不会在InitParam中传递URI。

1 个答案:

答案 0 :(得分:0)

你说手动设置网址就像这样工作......

<Media:PlaylistItem DeliveryMethod="AdaptiveStreaming" MediaSource="http://playready.directtaps.net/smoothstreaming/TTLSS720VC1/To_The_Limit_720.ism/Manifest" />

在这种情况下,您需要更新视图,以便可以通过名称从后面的代码(IDE)访问控件。

<Media:PlaylistItem x:Name="playListItem" DeliveryMethod="AdaptiveStreaming"/>

然后在后面的代码中,引用控件

public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();

        App currentApp = (App)Application.Current;

        string uriString = currentApp.PageData["mediaurl"];

        MessageBox.Show(uriString);

        //reference item by name
        Microsoft.SilverlightMediaFramework.Core.Media.PlaylistItem item = this.playListItem;

        item.MediaSource = new Uri(uriString, UriKind.Absolute);
        //...other code
    }
}

我发给你的链接中的另一个例子是这样做的。

MainPage.xaml

<Grid x:Name="LayoutRoot" Background="White" 
   xmlns:smf="http://schemas.microsoft.com/smf/2010/xaml/player">
    <smf:SMFPlayer HorizontalAlignment="Stretch" Margin="0" 
         x:Name="sMFPlayer" VerticalAlignment="Stretch" />
</Grid> 

MainPage.xaml.cs

using Microsoft.SilverlightMediaFramework.Core.Media;
using Microsoft.SilverlightMediaFramework.Plugins.Primitives;
//...
public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();

        App currentApp = (App)Application.Current;

        string uriString = currentApp.PageData["mediaurl"];

        var item = new PlaylistItem();
        item.MediaSource = new Uri(uriString, UriKind.Absolute);
        item.DeliveryMethod = DeliveryMethods.AdaptiveStreaming;

        //Add PlaylistItem to the Media playlist
        sMFPlayer.Playlist.Add(item);
        sMFPlayer.Play();
    }
}