几天发现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. 利用<JavascriptSerializer类> 进行Json对象的序列化和反序列化

    1. 首先, JavascriptSerializer类所在名空间: using System.Web.Script.Serialization; 2. 相关的3篇文章, 标记下: 使用JavaScr ...

  2. find the nth digit

    Problem Description 假设:S1 = 1S2 = 12S3 = 123S4 = 1234.........S9 = 123456789S10 = 1234567891S11 = 12 ...

  3. 结合源码看nginx-1.4.0之nginx模块组织结构详解

    目录 0. 摘要 1. nginx模块组织结构 2. nginx模块数据结构 3. nginx模块初始化 4. 一个简单的http模块 5. 小结 6. 参考资料 0. 摘要 nginx有五大优点:模 ...

  4. SOA资料

    实施: 基于J2EE体系架构搭建符合SOA架构的运营管理平台 成功经验: 携程旅行网在SOA架构方面的探索 SOA在互联网系统中的应用

  5. recent.css常用的页面初始化样式

    <style> @charset "utf-8"; body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form ...

  6. Oracle 常用命令大全

    一.如何有效地利用数据字典 ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图.数据字典名称是大写的英文字符. 数 ...

  7. JavaScript对Json的增删改属性

    <script type="text/javascript"> var json = { "age":24, "name":&q ...

  8. Macbook之设置Finder显示文件完整路径

    终端里输入:defaults write com.apple.finder _FXShowPosixPathInTitle -bool TRUE;killall Finder 回复输入:default ...

  9. 全新jquery多点滑动幻灯片——全屏动画animateSlide

    首页banner的酷炫效果多来自全屏大图的幻灯片动画,下面提供一种完美兼容的jquery动画特效:全新jquery多点滑动幻灯片——全屏动画animateSlide(代码完全原创). 直接上代码,把h ...

  10. JQuery.Gantt(甘特图)开发

    一.简介 JQuery.Gantt是一个开源的基于JQuery库的用于实现甘特图效果的可扩展功能的JS组件库. 二.前端页面 2.1 资源引用 首先需要将下载到的源码中的CSS.IMG.JS等资源放入 ...