原文:与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成

[索引页]
[源码下载]

与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成

作者:webabcd

介绍
与众不同 windows phone 7.5 (sdk 7.1) 之媒体

  • 音频播放器
  • 视频播放器
  • 与 Windows Phone 的音乐和视频中心集成

示例
1、演示音频播放器
Audio.xaml

<phone:PhoneApplicationPage x:Class="Demo.Media.Audio"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"FontFamily="{StaticResource PhoneFontFamilyNormal}"FontSize="{StaticResource PhoneFontSizeNormal}"Foreground="{StaticResource PhoneForegroundBrush}"SupportedOrientations="Portrait" Orientation="Portrait"mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"shell:SystemTray.IsVisible="True"><Grid x:Name="LayoutRoot" Background="Transparent"><StackPanel Orientation="Vertical"><MediaElement x:Name="mediaElement" Source="Assets/SuperMario.mp3" AutoPlay="False" /><Button x:Name="btnPlay" Content="播放" Click="btnPlay_Click" /><Button x:Name="btnPause" Content="暂停" Click="btnPause_Click" /><TextBlock x:Name="lblStatus" /></StackPanel></Grid></phone:PhoneApplicationPage>

Audio.xaml.cs

/** MediaElement - 用于播放视频或音频,本地地址或远程地址均可*     支持的编码格式参见:http://msdn.microsoft.com/en-us/library/ff462087(v=vs.92)* * MediaElement 的详细说明参见:http://www.cnblogs.com/webabcd/archive/2008/12/01/1344632.html* Launcher 方式参见:http://www.cnblogs.com/webabcd/archive/2012/06/14/2548776.html 中的 MediaPlayerLauncher* * XNA 播放音频参见:http://www.cnblogs.com/webabcd/archive/2011/07/11/2102713.html*/using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;namespace Demo.Media
{public partial class Audio : PhoneApplicationPage{public Audio(){InitializeComponent();mediaElement.CurrentStateChanged += new RoutedEventHandler(mediaElement_CurrentStateChanged);}void mediaElement_CurrentStateChanged(object sender, RoutedEventArgs e){// 显示 MediaElement 的当前状态lblStatus.Text = mediaElement.CurrentState.ToString();}private void btnPlay_Click(object sender, RoutedEventArgs e){// 播放
            mediaElement.Play();}private void btnPause_Click(object sender, RoutedEventArgs e){// 暂停
            mediaElement.Pause();}}
}

2、演示视频播放器
Video.xaml

<phone:PhoneApplicationPage x:Class="Demo.Media.Video"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"FontFamily="{StaticResource PhoneFontFamilyNormal}"FontSize="{StaticResource PhoneFontSizeNormal}"Foreground="{StaticResource PhoneForegroundBrush}"SupportedOrientations="Portrait" Orientation="Portrait"mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"shell:SystemTray.IsVisible="True"><Grid x:Name="LayoutRoot" Background="Transparent"><StackPanel Orientation="Vertical"><MediaElement x:Name="mediaElement" Source="Assets/Demo.mp4" AutoPlay="False" /><Button x:Name="btnPlay" Content="播放" Click="btnPlay_Click" /><Button x:Name="btnPause" Content="暂停" Click="btnPause_Click" /><TextBlock x:Name="lblStatus" /></StackPanel></Grid></phone:PhoneApplicationPage>

Video.xaml.cs

/** MediaElement - 用于播放视频或音频,本地地址或远程地址均可*     支持的编码格式参见:http://msdn.microsoft.com/en-us/library/ff462087(v=vs.92)* * MediaElement 的详细说明参见:http://www.cnblogs.com/webabcd/archive/2008/12/01/1344632.html* Launcher 方式参见:http://www.cnblogs.com/webabcd/archive/2012/06/14/2548776.html 中的 MediaPlayerLauncher*/using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;namespace Demo.Media
{public partial class Video : PhoneApplicationPage{public Video(){InitializeComponent(); mediaElement.CurrentStateChanged += new RoutedEventHandler(mediaElement_CurrentStateChanged);}void mediaElement_CurrentStateChanged(object sender, RoutedEventArgs e){// 显示 MediaElement 的当前状态lblStatus.Text = mediaElement.CurrentState.ToString();}private void btnPlay_Click(object sender, RoutedEventArgs e){// 播放
            mediaElement.Play();}private void btnPause_Click(object sender, RoutedEventArgs e){// 暂停
            mediaElement.Pause();}}
}

3、演示如何与 Windows Phone 的音乐和视频中心集成
IntegrateWithTheMusicAndVideoHub.xaml

<phone:PhoneApplicationPage x:Class="Demo.Media.IntegrateWithTheMusicAndVideoHub"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"FontFamily="{StaticResource PhoneFontFamilyNormal}"FontSize="{StaticResource PhoneFontSizeNormal}"Foreground="{StaticResource PhoneForegroundBrush}"SupportedOrientations="Portrait" Orientation="Portrait"mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"shell:SystemTray.IsVisible="True"><Grid x:Name="LayoutRoot" Background="Transparent"><StackPanel Orientation="Vertical"><TextBlock TextWrapping="Wrap"><Run>本 app 会出现在“音乐视频中心”中的“应用程序”下</Run><LineBreak /><Run>操作完成后,请去“音乐视频中心”看效果</Run></TextBlock><Button x:Name="btnNow" Content="设置“音乐视频中心”中的“正在播放磁贴”" Click="btnNow_Click" /><Button x:Name="btnRecent" Content="向“音乐视频中心”中的“历史记录”添加新的磁贴" Click="btnRecent_Click" /><Button x:Name="btnAcquired" Content="向“音乐视频中心”中的“最新上市”添加新的磁贴" Click="btnAcquired_Click" /></StackPanel></Grid></phone:PhoneApplicationPage>

IntegrateWithTheMusicAndVideoHub.xaml.cs

/** 本例演示如何将 app 集成进“音乐视频中心”* * MediaHistoryItem - 出现在“音乐视频中心”中的磁贴对象(包括“正在播放”,“历史记录”和“最新上市”)*     ImageStream - 磁贴上需要显示的背景图片流*     Title - 磁贴的标题*     PlayerContext - key/value 对集合,用户点击“历史记录”或“最新上市”中的某个磁贴会进入到 app 的主页面,同时也会将对应的 key/value 数据一同带过去,参见 MainPage.xaml.cs* * MediaHistory - 管理 MediaHistoryItem 的类*     Instance - 获得 MediaHistory 实例*     NowPlaying - 指定“正在播放”对象,MediaHistoryItem 类型*     WriteRecentPlay(MediaHistoryItem item) - 在“历史记录”中增加一个指定的 MediaHistoryItem 对象*     WriteAcquiredItem(MediaHistoryItem item) - 在“最新上市”中增加一个指定的 MediaHistoryItem 对象*     * * 注意:* 1、“正在播放”磁贴大小为 358 * 358,背景图不能大于 75 KB* 2、“历史记录”和“最新上市”磁贴大小为 173 * 173* 3、app 提交到商店审核时,如果认证程序检测到 app 调用了 MediaHistory 和 MediaHistoryItem,则此 app 就会出现在“音乐视频中心”的应用程序中* 4、出于测试目的,如果想在 app 提交商店前使其出现在“音乐视频中心”的应用程序中的话,需要修改 manifest,在 <App /> 中增加 HubType="1"* 5、MediaHistoryItem 的 PlayerContext 指定的 key/value 对集合是 MediaHistoryItem 的上下文数据,用户在“历史记录”或“最新上市”单击某个磁贴对象时,会跳转到 app 的主页面,同时将对应的 key/value 数据一同带过去,其可以在主页面通过 NavigationContext.QueryString[key] 获取到,参见 MainPage.xaml.cs*/using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;using Microsoft.Devices;
using System.IO;
using System.Windows.Resources;
using System.IO.IsolatedStorage;
using Microsoft.Phone.BackgroundAudio;namespace Demo.Media
{public partial class IntegrateWithTheMusicAndVideoHub : PhoneApplicationPage{public IntegrateWithTheMusicAndVideoHub(){InitializeComponent();PlayAudio();}// 播放一个音频private void PlayAudio(){// 由于播放本地音频时只能从独立存储中播放,所以此处把示例用音频文件从程序包中复制到独立存储using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication()){if (!storage.FileExists("SuperMario.mp3")){StreamResourceInfo resource = Application.GetResourceStream(new Uri("Assets/SuperMario.mp3", UriKind.Relative));using (IsolatedStorageFileStream file = storage.CreateFile("SuperMario.mp3")){int chunkSize = 4096;byte[] bytes = new byte[chunkSize];int byteCount;while ((byteCount = resource.Stream.Read(bytes, 0, chunkSize)) > 0){file.Write(bytes, 0, byteCount);}}}}BackgroundAudioPlayer.Instance.Play();}private void btnNow_Click(object sender, RoutedEventArgs e){StreamResourceInfo sri = Application.GetResourceStream(new Uri("Assets/TileBackgroundRed.png", UriKind.Relative));MediaHistoryItem mediaHistoryItem = new MediaHistoryItem();mediaHistoryItem.ImageStream = sri.Stream;mediaHistoryItem.Title = "正在播放";mediaHistoryItem.PlayerContext.Add("keyNow", "正在播放的音乐");MediaHistory.Instance.NowPlaying = mediaHistoryItem;}private void btnRecent_Click(object sender, RoutedEventArgs e){StreamResourceInfo sri = Application.GetResourceStream(new Uri("Assets/TileBackgroundGreen.png", UriKind.Relative));MediaHistoryItem mediaHistoryItem = new MediaHistoryItem();mediaHistoryItem.ImageStream = sri.Stream;mediaHistoryItem.Title = "最近播放";mediaHistoryItem.PlayerContext.Add("keyRecent", "最近播放的音乐");MediaHistory.Instance.WriteRecentPlay(mediaHistoryItem);}private void btnAcquired_Click(object sender, RoutedEventArgs e){StreamResourceInfo sri = Application.GetResourceStream(new Uri("Assets/TileBackgroundBlue.png", UriKind.Relative));MediaHistoryItem mediaHistoryItem = new MediaHistoryItem();mediaHistoryItem.ImageStream = sri.Stream;mediaHistoryItem.Title = "最新上市";mediaHistoryItem.PlayerContext.Add("keyAcquired", "最新上市的音乐");MediaHistory.Instance.WriteAcquiredItem(mediaHistoryItem);}}
}

OK
[源码下载]

与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成...相关推荐

  1. VLC Media Player for Mac(VLC多媒体视频播放器)

    VLC Media Player多媒体播放器是VideoLAN计划的多媒体播放器,mac版VLC多媒体视频播放器VLC Media Player如何使用.一款高度便携的多媒体播放器,适用于各种音频和视 ...

  2. HTML5的音频播放和视频播放

    1.音频播放 audio(音频) html5提供了播放音频文件的标准 <audio src="anli.mp3" controls="controls"& ...

  3. 【Windows Esp32】基于 libjpeg-9e 编解码库的视频播放器

    目录 一.音视频基础 1.1.图像编码 1.2.视频编码 1.3.AVI 文件结构 二.TF卡基础 三.Windows上播放音视频 3.1.在 Windows 下使用 vs2019 编译 libjpe ...

  4. 最简单的视音频播放示例1:总述

    ===================================================== 最简单的视音频播放示例系列文章列表: 最简单的视音频播放示例1:总述 最简单的视音频播放示例 ...

  5. 移动应用程序设计基础——安卓动画与视音频播放器的实现

    <移动应用程序设计基础>实验6 安卓动画与视音频播放器的实现 实验名称: 实验6 安卓动画与视音频播放器的实现 所使用的工具软件及环境: JDK1.8,Android Studio 一.实 ...

  6. 【音视频零基础入门 1】视频播放器原理、流媒体协议、封装格式、视频编码、音频编码

    [音视频零基础入门 1]视频播放器原理.流媒体协议.封装格式.视频编码 一.视频播放器原理 1.1 解协议 1.2 解封装 1.3 解码 1.4 视音频同步 二.流媒体协议 三.封装格式 四.封装格式 ...

  7. Android-Frame布局,UI布局切换,录音,照相机,影音播放器,音频播放器

    <FrameLayout anroid:layout_weight="1"> <ImageView android:scaleType="fitCent ...

  8. 最佳视频播放器:Adobe Flash Media Playback

    与世界分享视频的最快和最简便的方法是将其放置于因特网. 为了使得大家能够观看视频,视频播放器是必不可少的. 为了让每个人都能享受这一便利,Adobe已经发布了一款免费视频播放器,其名称为Flash M ...

  9. ffmpeg播放器实现详解 - 音频播放

    1.生产者-消费者线程模型 本文主要讨论posix标准下的生产者-消费者线程模型,posix标准多用于类linux相关环境 POSIX: The Portable Operating System I ...

最新文章

  1. JGG | 肠道细菌加重小分子量卡拉胶诱发的直肠炎症
  2. 【matlab】meshgrid的使用
  3. 密码找回功能可能存在的问题
  4. 存储空间_Tan分享 存储空间清理
  5. MySql 中锁的定义
  6. 后端技术:MyBatis 批量插入的 3 种写法
  7. excel实战应用案例100讲(十五)-在Excel中对Python进行操作完美工具PyXLL-Jupyter
  8. Ant Design Pro 修改title
  9. (47)fs创建多级目录
  10. 击破区块链应用落地之痛,爆款公链太硬核!
  11. 判断是否是ie浏览器 前端js_jquery判断是否为ie浏览器的方法
  12. Maven整合Spring与Solr
  13. 金蝶K3 数据表知识整理(不断完善)
  14. elementUI中日期时间插件(DateTimePicke) 限制结束时间大于开始时间且开始时间小于当前时间
  15. 提高多表关联数据查询效率
  16. 尤里复仇退出界面_红色警戒2、尤里的复仇win10卡死、分辨率太大、黑屏问题多种解决方法(已测)...
  17. 最详细的虚拟机安装教程
  18. JAVA程序包装成桌面应用程序
  19. Java循环控制语句
  20. 数据库系统(DBS)2

热门文章

  1. linux命令——crontab的使用方法
  2. 由于没有远程桌面授权服务器可以提供许可证,远程会话被中断
  3. css高清动图,CSS3+PNG实现GIF动画效果
  4. java能传地址吗,详解java的值传递、地址传递、引用传递
  5. 筛选出一证多卡 用sql_对比Excel学习SQL(3):对列和行的操作
  6. ae中心点重置工具_AE中图形绘制的6大技巧,简单易操作
  7. vue怎么让接口带上cookie_在Vue中如何使用Cookie操作实例
  8. python做一个考试系统_Python在线考试系统防作弊功能的思路和实现
  9. 2022年中国全屋智能行业研究白皮书
  10. 关于产品经理,常见的这六个误区,你中招了几个?