Silverlight MediaElement使用

mediaElement是Silverlight提供多媒体元素 它可以播放视频 音乐等 

MediaElement 支持的格式

视频

原始视频

YV12 - YCrCb(4:2:0)

RGBA - 32 位 Alpha、红色、绿色、蓝色

WMV1:Windows Media Video 7

WMV2:Windows Media Video 8

WMV3:Windows Media Video 9

支持简单配置文件和主配置文件。

仅支持渐进式(逐行扫描)内容。

WMVA:Windows Media 视频高级配置文件,非 VC-1

WVC1:Windows Media 视频高级配置文件,VC-1

支持高级配置文件。

仅支持渐进式(逐行扫描)内容。

H264 (ITU-T H.264 / ISO MPEG-4 AVC)

支持 H.264 和 MP43 编解码器。

支持基本配置文件、主配置文件和高配置文件。

仅支持渐进式(逐行扫描)内容。

仅支持 4:2:0 色度二次采样配置文件。

支持具有 Mp4 的 PlayReady DRM(H264 和 AAC-LC)

音频

“1”.这是线性 8 位或 16 位脉冲编码调制。大致来说,这是 WAV 格式。

"353"- Microsoft Windows Media Audio v7、v8 和 v9.x Standard (WMA Standard)

"354"- Microsoft Windows Media Audio v9.x 和 v10 Professional (WMA Professional)

支持 32-96 kbps 范围内的 WMA 10 Professional 低比特率 (LBR) 模式的全保真解码。

多声道(5.1 和 7.1 环绕)音频内容自动混缩为立体声。

24 位音频将返回静音。

采样率超过 48000 将在同域时返回无效格式错误代码,在跨域时返回 4001。

"85"- ISO MPEG-1 第三层 (MP3)

"255"- ISO 高级音频编码 (AAC)

支持达到全保真的低复杂度 (AAC-LC) 解码(最高 48 kHz)。

高效 (HE-AAC) 编码内容将仅解码为半保真(最高 24 kHz)。

不支持多声道(5.1 环绕)音频内容。


 xaml代码

 <Grid x:Name="LayoutRoot" Background="White">
        <MediaElement Height="247" HorizontalAlignment="Left" Margin="12,12,0,0" Name="mediaElement1" VerticalAlignment="Top" Width="576" CurrentStateChanged="mediaElement1_CurrentStateChanged" BufferingProgressChanged="mediaElement1_BufferingProgressChanged" AutoPlay="False" />
        <Button Content="播放" Height="23" HorizontalAlignment="Left" Margin="12,288,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
        <Button Content="暂停" Height="23" HorizontalAlignment="Left" Margin="113,288,0,0" Name="button2" VerticalAlignment="Top" Width="75" Click="button2_Click" />
        <Button Content="停止" Height="23" HorizontalAlignment="Left" Margin="213,288,0,0" Name="button3" VerticalAlignment="Top" Width="75" Click="button3_Click" />
        <Button Content="静音" Height="23" HorizontalAlignment="Left" Margin="321,288,0,0" Name="button4" VerticalAlignment="Top" Width="75" Click="button4_Click" />
        <TextBlock Height="23" HorizontalAlignment="Left" Margin="12,331,0,0" Name="textBlock1" Text="当前状态;" VerticalAlignment="Top" />
        <sdk:Label Height="23" HorizontalAlignment="Left" Margin="68,331,0,0" Name="label1" VerticalAlignment="Top" Width="120" />
        <TextBlock Height="23" HorizontalAlignment="Left" Margin="12,360,0,0" Name="textBlock2" Text="当前进度;" VerticalAlignment="Top" />
        <Slider Height="23" HorizontalAlignment="Left" Margin="68,360,0,0" Name="slider1" VerticalAlignment="Top" Width="455" ValueChanged="slider1_ValueChanged" />
        <TextBlock Height="23" HorizontalAlignment="Left" Margin="12,392,0,0" Name="textBlock3" Text="当前时间;" VerticalAlignment="Top" />
        <sdk:Label Height="23" HorizontalAlignment="Left" Margin="68,392,0,0" Name="label2" VerticalAlignment="Top" Width="157" />
        <TextBlock Height="23" HorizontalAlignment="Left" Margin="7,259,0,0" Name="textBlock4" Text="当前缓冲;" VerticalAlignment="Top" />
        <sdk:Label Height="23" HorizontalAlignment="Left" Margin="62,259,0,0" Name="label3" VerticalAlignment="Top" Width="120" />
        <TextBlock Height="23" HorizontalAlignment="Left" Margin="388,259,0,0" Name="textBlock5" Text="音量;" VerticalAlignment="Top" />
        <Slider Height="23" HorizontalAlignment="Left" Margin="423,259,0,0" Name="slider2" VerticalAlignment="Top" Width="100" ValueChanged="slider2_ValueChanged" />
        <sdk:Label Height="28" HorizontalAlignment="Left" Margin="529,259,0,0" Name="label4" VerticalAlignment="Top" Width="59" />
    </Grid>

cs代码


public partial class Media : UserControl
    {
        System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();
        public Media()
        {
            InitializeComponent();
            timer.Interval = new TimeSpan(600);
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
            mediaElement1.Source = new Uri("[OPFansMaplesnow][One_Piece][497][848x480].wmv", UriKind.Relative);
              
        }

        void timer_Tick(object sender, EventArgs e)
        {
            //更新播放时间
            if (mediaElement1.CurrentState == MediaElementState.Playing)
            {
                slider1.ValueChanged -= slider1_ValueChanged;
                slider1.Value = (mediaElement1.Position.TotalSeconds / mediaElement1.NaturalDuration.TimeSpan.TotalSeconds) * 10;
                slider1.ValueChanged += slider1_ValueChanged;
                label2.Content = string.Format("{0:D2}:{1:D2}:{2:D2}", mediaElement1.Position.Hours, mediaElement1.Position.Minutes, mediaElement1.Position.Seconds);
                
            }

        }

        private void mediaElement1_CurrentStateChanged(object sender, RoutedEventArgs e)
        {
            //当前状态
            label1.Content = mediaElement1.CurrentState;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            //播放
            mediaElement1.Play();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            //暂停
            mediaElement1.Pause();
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            //停止
            mediaElement1.Stop();
        }

        private void button4_Click(object sender, RoutedEventArgs e)
        {
            //静音
            mediaElement1.IsMuted = !mediaElement1.IsMuted;
        }

        private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            //进度
            if (mediaElement1.CanSeek)
            {
                mediaElement1.Position = TimeSpan.FromSeconds((mediaElement1.NaturalDuration.TimeSpan.TotalSeconds * slider1.Value)/10);
            }

        }

        private void mediaElement1_BufferingProgressChanged(object sender, RoutedEventArgs e)
        {
           //缓冲
            label3.Content = mediaElement1.BufferingProgress * 100;
        }

        private void slider2_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            //音量控制           
           double d = (double)(((double)slider2.Value)/10);
           mediaElement1.Volume = d;
           label4.Content =(double.Parse( d.ToString("F2"))*100)+"%";
           
        }
    }



显示效果


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值