【问题标题】:does silverlight support streaming through mms?silverlight 是否支持通过 mms 进行流式传输?
【发布时间】:2010-04-14 08:55:49
【问题描述】:

我正在使用带有 Windows Media Service 的 Windows Server 2008 R2。在客户端,我想使用 Silverlight 播放媒体文件。我正在使用 VSTS 2008 + Silverlight 3 + ASP.Net + .Net 3.5。我想知道 Silverlight 是否支持从 Windows Media Service 播放 mms 流文件?如果是,我可以快速测试的任何代码示例吗?

【问题讨论】:

    标签: c# .net silverlight visual-studio-2008 windows-media-server


    【解决方案1】:

    Silverlight 中的 MediaElement 支持通过 mms 进行流式传输。您应该查看 Silverlight 的 MSDN audio and video overview

    这是一个非常基本的 Silverlight 应用程序,它可以控制 MediaElement 并显示媒体状态/缓冲状态:

    XAML

    <UserControl x:Class="StreamingTest.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
        <Grid x:Name="LayoutRoot">
            <StackPanel Orientation="Vertical">
                <MediaElement x:Name="MediaElement" Width="640" Height="480" Source="mms://danarec:8080"/>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                    <TextBlock x:Name="Status" Margin="0,5"/>
                    <TextBlock x:Name="Buffer" Margin="10,5"/>
                </StackPanel>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                    <Button x:Name="Play" Content="Play" Click="Play_Click"/>
                    <Button x:Name="Pause" Content="Pause" Click="Pause_Click"/>
                    <Button x:Name="Stop" Content="Stop" Click="Stop_Click"/>
                </StackPanel>
            </StackPanel>
        </Grid>
    </UserControl>
    

    C#

    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
    
            this.MediaElement.CurrentStateChanged += (sender, e) =>
            {
                this.Status.Text = this.MediaElement.CurrentState.ToString();
                this.Buffer.Visibility = this.MediaElement.CurrentState == MediaElementState.Buffering ? Visibility.Visible : Visibility.Collapsed;
            };
    
            this.MediaElement.BufferingProgressChanged += (sender, e) =>
            {
                this.Buffer.Text = string.Format("{0:0.0} %", this.MediaElement.BufferingProgress * 100);
            };
        }
    
        private void Play_Click(object sender, RoutedEventArgs e)
        {
            this.MediaElement.Play();
        }
    
        private void Pause_Click(object sender, RoutedEventArgs e)
        {
            this.MediaElement.Pause();
        }
    
        private void Stop_Click(object sender, RoutedEventArgs e)
        {
            this.MediaElement.Stop();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-15
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 2017-08-01
      • 2018-02-21
      相关资源
      最近更新 更多