在此问个问题,MediaElement播放本地和http上的视频没问题,但是ftp的怎么在本例中播放不了

若高手了解,请不吝赐教

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Win32;
using System.IO;
using System.Windows.Threading;
using System.Threading;
using System.Data;
using System.Windows.Forms; namespace MediaPlayer_Beta
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{ DispatcherTimer timer; public delegate void timerTick();
timerTick tick; bool isDragging = false;
bool fileIsPlaying = false;
string sec, min, hours; public MainWindow()
{
this.Left = ;
this.Top = ;
InitializeComponent();
seekSlider.Width = SystemParameters.MaximizedPrimaryScreenWidth - ;
this.WindowState = System.Windows.WindowState.Maximized;
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds();
timer.Tick += new EventHandler(timer_Tick);
tick = new timerTick(changeStatus);
} void timer_Tick(object sender, EventArgs e)
{
Dispatcher.Invoke(tick);
} //visualize progressBar
void changeStatus()
{
if (fileIsPlaying)
{ #region customizeTime
if (mediaElement.Position.Seconds < )
sec = "" + mediaElement.Position.Seconds.ToString();
else
sec = mediaElement.Position.Seconds.ToString(); if (mediaElement.Position.Minutes < )
min = "" + mediaElement.Position.Minutes.ToString();
else
min = mediaElement.Position.Minutes.ToString(); if (mediaElement.Position.Hours < )
hours = "" + mediaElement.Position.Hours.ToString();
else
hours = mediaElement.Position.Hours.ToString(); #endregion customizeTime seekSlider.Value = mediaElement.Position.TotalMilliseconds;
progressBar.Value = mediaElement.Position.TotalMilliseconds; if (mediaElement.Position.Hours == )
{ currentTimeTextBlock.Text = min + ":" + sec;
}
else
{
currentTimeTextBlock.Text = hours + ":" + min + ":" + sec;
}
}
} //open the file
private void openFileButton_Click(object sender, RoutedEventArgs e)
{
string FileName = "http://mschannel9.vo.msecnd.net/o9/mix/09/wmv/key01.wmv";
//"ftp://test:123456@192.168.1.75/media/Linux.wmv";//Ftp测试不能播放,需下载本地再打开
//"e:\\text\\dian\\media\\test.avi";
mediaElement.Source = new Uri(FileName);
Thread.Sleep();
mediaElement.Close();
mediaElement.Play();
} //occurs when the file is opened
public void mediaElement_MediaOpened(object sender, RoutedEventArgs e)
{
timer.Start();
fileIsPlaying = true;
openMedia();
} //opens media,adds file to playlist and gets file info
public void openMedia()
{
InitializePropertyValues();
try
{
#region customizeTime
if (mediaElement.NaturalDuration.TimeSpan.Seconds < )
sec = "" + mediaElement.Position.Seconds.ToString();
else
sec = mediaElement.NaturalDuration.TimeSpan.Seconds.ToString(); if (mediaElement.NaturalDuration.TimeSpan.Minutes < )
min = "" + mediaElement.NaturalDuration.TimeSpan.Minutes.ToString();
else
min = mediaElement.NaturalDuration.TimeSpan.Minutes.ToString(); if (mediaElement.NaturalDuration.TimeSpan.Hours < )
hours = "" + mediaElement.NaturalDuration.TimeSpan.Hours.ToString();
else
hours = mediaElement.NaturalDuration.TimeSpan.Hours.ToString(); if (mediaElement.NaturalDuration.TimeSpan.Hours == )
{ endTimeTextBlock.Text = min + ":" + sec;
}
else
{
endTimeTextBlock.Text = hours + ":" + min + ":" + sec;
} #endregion customizeTime
}
catch { }
string path = mediaElement.Source.LocalPath.ToString(); double duration = mediaElement.NaturalDuration.TimeSpan.TotalMilliseconds;
seekSlider.Maximum = duration;
progressBar.Maximum = duration; mediaElement.Volume = volumeSlider.Value;
mediaElement.SpeedRatio = speedRatioSlider.Value + ;
mediaElement.ScrubbingEnabled = true; volumeSlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(volumeSlider_ValueChanged);
speedRatioSlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(speedRatioSlider_ValueChanged);
} //occurs when the file is done playing
private void mediaElement_MediaEnded(object sender, RoutedEventArgs e)
{
mediaElement.Stop();
volumeSlider.ValueChanged -= new RoutedPropertyChangedEventHandler<double>(volumeSlider_ValueChanged);
speedRatioSlider.ValueChanged -= new RoutedPropertyChangedEventHandler<double>(speedRatioSlider_ValueChanged);
} //initialize properties of file
void InitializePropertyValues()
{
mediaElement.Volume = (double)volumeSlider.Value;
mediaElement.SpeedRatio = (double)speedRatioSlider.Value + ;
} //seek to desirable position of the file
private void seekSlider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
TimeSpan ts = new TimeSpan(, , , , (int)seekSlider.Value); changePostion(ts);
} //mouse down on slide bar in order to seek
private void seekSlider_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
isDragging = true;
fileIsPlaying = false;
} private void seekSlider_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (isDragging)
{
TimeSpan ts = new TimeSpan(, , , , (int)seekSlider.Value);
changePostion(ts);
fileIsPlaying = true;
}
isDragging = false;
} //change position of the file
void changePostion(TimeSpan ts)
{
mediaElement.Position = ts;
} //change the speed of the playback
void speedRatioSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
mediaElement.SpeedRatio = speedRatioSlider.Value + ;
speedTextBlock.Text = speedRatioSlider.Value + "x";
} //play the file
private void playButton__Click(object sender, RoutedEventArgs e)
{
fileIsPlaying = true;
mediaElement.Play();
timer.Start();
} //pause the file
private void pauseButton_Click(object sender, RoutedEventArgs e)
{
fileIsPlaying = false;
mediaElement.Pause();
timer.Stop();
} //stop the file
private void stopButton_Click(object sender, RoutedEventArgs e)
{
fileIsPlaying = false;
timer.Stop();
mediaElement.Stop();
seekSlider.Value = ;
progressBar.Value = ;
currentTimeTextBlock.Text = "00:00";
} //turn volume up-down
private void volumeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
mediaElement.Volume = volumeSlider.Value;
} }
}
<Window
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"
x:Class="MediaPlayer_Beta.MainWindow"
IsHitTestVisible="True" Background="#00000000" ResizeMode="CanResize" IsTabStop="True"
Grid.IsSharedSizeScope="True" UseLayoutRounding="True" HorizontalContentAlignment="Center"
WindowStyle="ThreeDBorderWindow" AllowsTransparency="False" d:DesignHeight="" d:DesignWidth="">
<Grid x:Name="mainGrid" Background="#FF0A0A0A" Height="{Binding}">
<Grid.RowDefinitions>
<RowDefinition Height="286*" />
<RowDefinition Height="" />
<RowDefinition Height="" />
</Grid.RowDefinitions>
<MediaElement MediaEnded="mediaElement_MediaEnded" MediaOpened="mediaElement_MediaOpened" LoadedBehavior="Manual" HorizontalAlignment="Right" Name="mediaElement" VerticalAlignment="Bottom" Opacity="" AllowDrop="True" Stretch="Fill" IsMuted="False" />
<Button Content="打开" Height="" HorizontalAlignment="Left" Margin="220,0,0,0" Name="openFileButton" VerticalAlignment="Top" Width="" Click="openFileButton_Click" Background="#FF030303" Foreground="#FFE8E8E8" Grid.Row="" />
<Button x:Name="stopButton" Content="停止" Margin="149,0,0,0" Click="stopButton_Click" Background="#FF030303" Foreground="#FFE8E8E8" HorizontalAlignment="Left" Width="" Grid.Row="" />
<Slider Height="" HorizontalAlignment="Left" Margin="292,0,0,0" Name="volumeSlider" VerticalAlignment="Top" Width="" Value="0.5" Maximum="" SmallChange="0.01" LargeChange="0.1" Background="Black" Foreground="#FFDBDBDB" IsMoveToPointEnabled="True" Grid.Row=""></Slider>
<Slider Name="speedRatioSlider" VerticalAlignment="Center" Value="" Width="" Margin="385,0,0,0" Maximum="" SmallChange="" Background="Black" UseLayoutRounding="True" TickPlacement="BottomRight" Foreground="#FFDBDBDB" Height="" Grid.Row="" HorizontalAlignment="Left"></Slider>
<Button x:Name="pauseButton" Content="暂停" Margin="71,0,0,0" Click="pauseButton_Click" Background="#FF030303" Foreground="#FFE8E8E8" Width="" HorizontalAlignment="Left" Grid.Row="" />
<Button x:Name="playButton_" Content="播放" HorizontalAlignment="Left" Width="" Click="playButton__Click" ClipToBounds="True" Background="#FF030303" Foreground="#FFE8E8E8" Grid.Row="" Margin="4,0,0,0" />
<TextBlock Height="" Name="endTimeTextBlock" Text="00:00" Width="" Background="{x:Null}" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="495,0,0,0" FlowDirection="RightToLeft" Grid.Row="" TextAlignment="Center"></TextBlock>
<TextBlock Height="" Name="currentTimeTextBlock" Text="00:00" Width="" Background="Black" Foreground="#FFDBDBDB" TextAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="4,0,0,0" Grid.Row=""></TextBlock>
<Slider Width="{Binding}" PreviewMouseLeftButtonUp="seekSlider_PreviewMouseLeftButtonUp" PreviewMouseLeftButtonDown="seekSlider_PreviewMouseLeftButtonDown" MouseLeftButtonUp="seekSlider_MouseLeftButtonUp" Name="seekSlider" Background="{x:Null}" Foreground="Red" BorderBrush="{x:Null}" IsMoveToPointEnabled="True" TickPlacement="None" SnapsToDevicePixels="False" OpacityMask="{x:Null}" IsManipulationEnabled="True" IsSnapToTickEnabled="False" IsSelectionRangeEnabled="False" IsTabStop="False" AutoToolTipPlacement="None" AllowDrop="False" Height="" VerticalAlignment="Center" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" HorizontalAlignment="Center" Grid.Row="" Margin="68,0,68,0"></Slider>
<ProgressBar Height="" Name="progressBar" Background="#00000000" BorderBrush="Black" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Margin="68,0,68,0" Grid.Row="" IsHitTestVisible="False" BorderThickness="" Foreground="#FF0089FF"></ProgressBar>
<TextBlock Height="" Name="speedTextBlock" Text="0x" Width="" Background="{x:Null}" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="460,7,0,0" FlowDirection="RightToLeft" Grid.Row="" TextAlignment="Right"></TextBlock>
</Grid>
</Window>

WPF MediaElement播放器2的更多相关文章

  1. WPF 媒体播放器(MediaElement)实例,实现进度和音量控制

    WPF 视频音频播放控件MediaElement实现进度控制,音量控制实例 说明: 1.Volume控制音量的大小,double类型,并且实现了属性依赖,可以用来双向绑定:在 0 和 1. 之间的线性 ...

  2. WPF 媒体播放器(MediaElement)使用实例(转)

    在WPF 中可以使用MediaElement 为应用程序添加媒体播放控件,以完成播放音频.视频功能.由于MediaElement 属于UIElement,所以它同时也支持鼠标及键盘的操作.本篇将使用M ...

  3. WPF播放器

    最近由于工作需要,需要做一个播放软件,在网上参考了很多例子,园子里有很多代码.其中最多的就是wpf自带的MediaElement控件,或者VLC视频播放器. 先附我自己查询资料的链接: MediaEm ...

  4. WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现

    原文:WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放.图片立体轮播.图片倒影立体滚动)效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7 ...

  5. HTML5播放器 MediaElement.js 使用方法

    目前已经有很多html5播放器可以使用,使用html5播放器可以轻松的在页面中插入媒体视频,从而使我们的web页面变得更加丰富多彩,所以今 天向大家推荐一款非常优秀的html5播放器MediaElem ...

  6. 将WPF版的弹幕播放器给优化了一下

    年前较闲的时候研究了一下WPF的性能优化,练手的时将之前写的弹幕播放器给重新写了一下.年前的时间不大够,没有写完,这两天接着弄了一下,基本上弄得差不多了. 主要重写了底层的渲染算法,优化后效果还是非常 ...

  7. 用WPF写了一个弹幕播放器

    看弹幕视频的时候,如果不发弹幕,一个本地的弹幕播放器往往能带来更好的体验.目前已经有一些实现了,最初用过一个MukioPlayer, 后来又用过一个用C++写的BiliLocal,这个程序能自动下载弹 ...

  8. 简易音乐播放器主界面设计 - .NET CORE(C#) WPF开发

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. 简易音乐播放器主界面设计 - .NET CORE(C#) WPF开发 阅读导航 本文背景 代码 ...

  9. 基于ffmpeg网络播放器的教程与总结

    基于ffmpeg网络播放器的教程与总结   一.         概述 为了解决在线无广告播放youku网上的视频.(youku把每个视频切换成若干个小视频). 视频资源解析可以从www.flvcd. ...

随机推荐

  1. 14.2.5.1 Role of the .frm File for InnoDB Tables InnoDB .frm文件的作用

    14.2.5.1 Role of the .frm File for InnoDB Tables: 14.2.5.1 Role of the .frm File for InnoDB Tables I ...

  2. 提高mysql memory(heap) engine内存性能的开源补丁_XMPP Jabber即时通讯开发实践_百度空间

    提高mysql memory(heap) engine内存性能的开源补丁_XMPP Jabber即时通讯开发实践_百度空间 提高mysql memory(heap) engine内存性能的开源补丁

  3. Swift - 属性观察者(willSet与didSet)

    属性观察者,类似于触发器.用来监视属性的除初始化之外的属性值变化,当属性值发生改变时可以对此作出响应.有如下特点: 1,不仅可以在属性值改变后触发didSet,也可以在属性值改变前触发willSet. ...

  4. C语言常用的宏

    01: 防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 02: 重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类 ...

  5. Js实现select联动,option从数据库中读取

    待要实现的功能:页面有两个select下拉列表,从第一个select中选择后,在第二个select中出现对应的列表选择,再从第二个select中选择后,在一个text中显示对应的信息.两个select ...

  6. POJ2528 Mayor&#39;s posters 【线段树】+【成段更新】+【离散化】

    Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 39795   Accepted: 11552 ...

  7. 使用Jquery+EasyUI项目开发情况的框架是中评---员工管理源代码共享

    使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...

  8. [Android学习笔记]PopupWindow的使用

    什么时候使用PopupWindow? 当业务需求的交互形式需要在当前页弹出一个简单可选项UI与用户进行交互时,可使用PopupWindow完成此功能开发 Android Dev API Doc Pop ...

  9. Otacle表查询

    1    查询表结构       语法:desc 表      2    查询全部列       语法:select * from 表名      3    查询指定列       语法:select ...

  10. python - ImportError: No module named http.cookies error when installing cherrypy 3.2 - Stack Overflow

    python - ImportError: No module named http.cookies error when installing cherrypy 3.2 - Stack Overfl ...