几天发现MediaElement播放不了wav格式的音频文件,在网上找到一篇解决的文章:
本节学习Silverlight音频和视频,其中视频的时间线标记个人觉得很有用,我们可以在播放视频前,想在视频某个地方加入自己的东西(文本或动画、视频。。。)。可以用到TimelineMarker,加入时间线,当播放放到时间线时利用OnMarkerReached时间获取时间线来触发我们需要的操作(文本或动画、视频。。)
(1)前台代码
 <UserControl x:Class="MediaStudy.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:DesignHeight="" d:DesignWidth=""> <Grid x:Name="LayoutRoot" Background="White">
<StackPanel Margin="" Width="">
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="" Foreground="DarkGray">Time:</TextBlock>
<TextBlock x:Name="timeTextBlock" FontSize=""/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="" Foreground="DarkGray">Type:</TextBlock>
<TextBlock x:Name="typeTextBlock" FontSize=""/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="" Foreground="DarkGray">Value:</TextBlock>
<TextBlock x:Name="valueTextBlock" FontSize=""/>
</StackPanel>
<StackPanel>
<Button Click="StopMedia"
Grid.Column="" Grid.Row="" Content="Stop"/>
<Button Click="PauseMedia"
Grid.Column="" Grid.Row="" Content="Pause"/>
<Button Click="PlayMedia"
Grid.Column="" Grid.Row="" Content="Play"/>
</StackPanel>
<!-- The MediaElement has the MarkerReached event attached. -->
<MediaElement x:Name="myMediaElemnet" MarkerReached="OnMarkerReached" HorizontalAlignment="Left" Source="thebutterflyandthebear.wmv"
Width="" Height=""/>
</StackPanel>
</Grid>
</UserControl>

(2)后台代码如下

 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; namespace MediaStudy
{ //音频视频
//(一)MediaElement 对象:向页面添加媒体的操作十分简单,只需将 MediaElement 添加到标记并为要播放的媒体提供统一资源标识符 (URI)
//(1)AutoPlay:指定 MediaElement 是否应自动开始播放。默认值为 true。
//(2)IsMuted:指定 MediaElement 是否静音。true 值将使 MediaElement 静音。默认值为 false。
//(3)Stretch:指定如何拉伸视频以填充 MediaElement 对象。可能值为 None、Uniform、UniformToFill 和 Fill。默认值为 Fill。有关更多信息,请参见 Stretch 枚举。
//(4)Volume:指定介于 0 到 1 的 MediaElement 对象的音频音量值,1 表示最大音量。默认值为 0.5。
//(二)视频播放机:包括播放控制,进度/查找滑块以及全屏切换
//1)TimelineMarker类时间线标记(同步点):与媒体文件中的特定点关联的元数据
// (1)通常是事先创建的,存储在媒体文件本身中
// (2)通常用于命名视频中的不同场景,允许用户查找所选位置或提供脚本提示
// (3)在播放期间当 MediaElement 到达某一时间线标记时,将引发 MarkerReached 事件。
// (4)TimelineMarker对象提供以下属性,用于描述时间、名称和值:
//Time:指定到达标记的时间的 TimeSpan 结构。
//Type:指定标记类型的字符串。此值可以是用户定义的任意字符串。
//Text:指定标记值的字符串。此值可以是用户定义的任意字符串。
// (5)MediaElement 对象的 Markers 属性允许您访问存储在当前播放的媒体文件中的嵌入了标头的标记。还可以使用此属性添加新的时间线标记
// 定义媒体标记有二种方法方法:
// a.使用某个编辑器(如 Windows Media 文件编辑器,作为 Windows Media Encoder 9 系统的一部分安装)
// b.TimelineMarker 对象并通过 Markers 属性将这些对象添加到 MediaElement(这些时间线标记是临时的,如果加入新的媒体会丢失)
//2)MediaElement.Markers属性:获取与当前加载的媒体文件相关联的时间线标记的集合。
// (1)每次当此 MediaElement 打开一个新的源文件时,都会清除和重新填充此集合
// (2)并且仅当发生 MediaOpened 事件后此集合才被视为有效 publicpartialclass MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
this.Loaded +=new RoutedEventHandler(MainPage_Loaded); } void MainPage_Loaded(object sender, RoutedEventArgs e)
{
myMediaElemnet.AutoPlay =false;
myMediaElemnet.MediaOpened +=new RoutedEventHandler(myMediaElemnet_MediaOpened); } //添加新的时间线标记(并且仅当发生 MediaOpened 事件后此集合才被视为有效)
void myMediaElemnet_MediaOpened(object sender, RoutedEventArgs e)
{
//创建时间线
TimelineMarker temp =new TimelineMarker();
temp.Text ="喜欢你";
temp.Time =new TimeSpan(, , );
temp.Type ="";
TimelineMarker temp1 =new TimelineMarker();
temp1.Text ="爱你";
temp1.Time =new TimeSpan(, , );
temp1.Type ="";
//将时间线通过Markers赋给MediaElement
myMediaElemnet.Markers.Add(temp);
myMediaElemnet.Markers.Add(temp1);
} //达某一时间线标记时,将引发 MarkerReached 事件
privatevoid OnMarkerReached(object sender, TimelineMarkerRoutedEventArgs e)
{
timeTextBlock.Text = e.Marker.Time.Seconds.ToString();
typeTextBlock.Text = e.Marker.Type.ToString();
valueTextBlock.Text = e.Marker.Text.ToString();
}
privatevoid StopMedia(object sender, RoutedEventArgs e)
{
myMediaElemnet.Stop();
}
privatevoid PauseMedia(object sender, RoutedEventArgs e)
{
myMediaElemnet.Pause();
}
privatevoid PlayMedia(object sender, RoutedEventArgs e)
{
myMediaElemnet.Play();
} }
}

原文转自:http://www.cnblogs.com/Joetao/category/265735.html

silverlight视频、音频的更多相关文章

  1. H5新特性-视频,音频-Flash-canvas绘图

    json格式 json - > AJAX json:数据格式,通常是以字符串形式表示 对象 {"name":"james","age" ...

  2. [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作

    [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处 一.关于为什么用pymediainfo以及pymediainfo的安装 使用python对视频/音频文件进行详 ...

  3. HTML的媒体元素(视频+音频)

    网页的媒体元素 包括 视频 音频 首先创建一个文件夹,放视频和音频         播放(非自动播放+自动播放) 视频播放 1.1. 打开网页不自动播放 <video src="../ ...

  4. php-ffmpeg 操作视频/音频文件

    php-ffmpeg 是一个php操作视频/音频文件的类库. GitHub地址:https://github.com/PHP-FFMpeg/PHP-FFMpeg/ 使用composer快速安装:com ...

  5. 视频处理控件TVideoGrabber如何重新编码视频/音频(2)

    在前面的文中<视频处理控件TVideoGrabber如何重新编码视频>已经讲解了部分TVideoGrabber重新编码音频.视频剪辑的内容,下面将继续说明. 重新编码进程 重新编码开始时, ...

  6. HTML 5 视频/音频

    HTML5 Audio/Video 方法 方法 描述 addTextTrack() 向音频/视频添加新的文本轨道 canPlayType() 检测浏览器是否能播放指定的音频/视频类型 load() 重 ...

  7. 测试开发之前端——No9.HTML5中的视频/音频

    HTML5 视频和音频的 DOM 参考手册 HTML5 DOM 为 <audio> 和 <video> 元素提供了方法.属性和事件. 这些方法.属性和事件允许您使用 JavaS ...

  8. Html5中 视频 音频标签 进度条问题

    最近项目中使用Html5的video和audio标签来在线播放视频和音频文件,但是遇到个奇葩的问题,页面上播放之后进度条无效, 查看w3c之后发现html代码并没有什么不同,之后猜想如果用静态的htm ...

  9. C#调用FFMPEG实现桌面录制(视频+音频+生成本地文件)

    不得不说FFMPEG真是个神奇的玩意,所接触的部分不过万一.网上有个很火的例子是c++方面的,当然这个功能还是用c++来实现比较妥当. 然而我不会c++ 因为我的功能需求比较简单,只要实现基本的录制就 ...

随机推荐

  1. Subsequence poj 3061 二分(nlog n)或尺取法(n)

    Subsequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9236   Accepted: 3701 Descr ...

  2. 转 如何使用velocity模板引擎开发网站

    基于 Java 的网站开发,很多人都采用 JSP 作为前端网页制作的技术,尤其在是国内.这种技术通常有一些问题,我试想一下我们是怎样开发网站的,通常有几种方法: 1:功能确定后,由美工设计网页的UI( ...

  3. Java SE ---流程控制语句

     java的控制流程有三种: 一,顺序流程             自上而下,按照代码的先后顺序执行 二,分支流程             1,if/else语句             2,swit ...

  4. 翻译:WebApi 认证--用户认证Oauth解析

        The Web API v2用户认证模板提供了流行的应用用户认证场景,如.使用本地帐号的用户名密码认账 (包括创建用户.设置和修改密码)以及使用第三方的认证方式,如facebook,googl ...

  5. jquery.hichartTable.js插件绘图

    使用场景:随日期不断增长变化的数据用折线图表现出来更加直观,比如注册人数的增长等. jquery.hichartTable.js文档:http://pmsipilot.github.io/jquery ...

  6. String类的方法2

    ---恢复内容开始--- .ToLower()    //转为小写字符串"AbC"-->"abc" .ToUpper()    //转为大写"A ...

  7. POJ 2031 Building a Space Station (最小生成树)

    Building a Space Station Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5173   Accepte ...

  8. HTML插入SWF

    1.插入透明flash代码 <object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase=" ...

  9. sublime text配置

    安装Package Control: 按”Ctrl”+”`”,在输入框中输入以下代码 Sublime Text3: import urllib.request,os,hashlib; h = '291 ...

  10. “System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本” 的解决方案

    在项目部署过程中ORACLE客户端多次会遇"System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本&qu ...