Silverlight 5 动态流 URI 设置
Silverlight 5 dynamic stream URI setting
我不熟悉 Silverlight (5),但我认为我已经接近实现我正在尝试做的事情了。感谢您的帮助。
基本上,我需要将动态生成的平滑流 URI 传递给播放器并正确设置 "Media Source"。
我正在采取的步骤..
客户端调用,单个键值对..
<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
你说像这样手动设置 url 可行...
<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
}
}
我发给你的 link 中的另一个例子是这样做的。
在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();
}
}
我不熟悉 Silverlight (5),但我认为我已经接近实现我正在尝试做的事情了。感谢您的帮助。
基本上,我需要将动态生成的平滑流 URI 传递给播放器并正确设置 "Media Source"。
我正在采取的步骤..
客户端调用,单个键值对..
<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
.
你说像这样手动设置 url 可行...
<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
}
}
我发给你的 link 中的另一个例子是这样做的。
在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();
}
}