看起来很简单,但我无法找出任何方法来确定MediaElement的状态.某些状态有各种属性(例如IsBuffering)但我找不到任何状态,如Play,Pause等.Silverlight似乎有一个显示所有这些状态的CurrentState属性.
目前,我正在确定视频是否应该正在播放的方式是观看各种事件以及检查是否正在进行任何进展的计时器.
我是MediaElement和WPF的新手(我实际上只在WinForms应用程序中使用MediaElement).有什么我想念的吗?
我的应用程序使用WPF MediaElement来播放视频(MOV文件).这在主监视器上播放时效果很好,但在窗口移动到辅助监视器时会冻结.
我试过以下没有成功:
当应用程序窗口跨越两个监视器时,它可以正常工作,但只要它完全位于辅助监视器内,视频就会冻结.一旦处于此状态,将应用程序移回主监视器将无济于事(并且加载新视频也无济于事).
安排监视器使坐标始终为正(两个监视器均为1920x1080,辅助监视器原点为1920,0).
有没有其他人看到这个问题和/或找到了修复?
编辑
有没有人使用WPF MediaElement与多个监视器???
我有两个显示器.我想制作一个媒体播放器,我想在我的辅助显示器上全屏播放视频.所以我正在尝试使用WPF制作媒体播放器
这是我写的代码到目前为止
Screen[] _screens = Screen.AllScreens;
System.Drawing.Rectangle ractagle = _screens[1].Bounds;
//player is my window
player.WindowState = WindowState.Maximized;
player.WindowStyle = WindowStyle.None;
player.Left = ractagle.X;
player.Top = ractagle.Y;
// MediaControl is an media elements
MediaControl.Height = ractagle.Height;
MediaControl.Width = ractagle.Width;
Run Code Online (Sandbox Code Playgroud)
但不知何故,它只是在我的第一个显示器上播放.非常感谢任何形式的帮助.
我知道ViewModel不应该具有View的任何知识,但我如何从ViewModel调用MediaElement.Play()方法,而不是在ViewModel中引用View(或直接引用MediaElement)?
其他(链接)问题:如何在不违反MVVM模式的情况下从ViewModel管理View的控件可见性?
我有一个带有MediaElement的WPF应用程序,我用它来运行视频.我不希望视频在加载时自动播放,因此我将LoadedBehavior设置为Manual.
<MediaElement LoadedBehavior="Manual"
Source="foo.wmv"
MediaOpened="videoElement_MediaOpened" />
Run Code Online (Sandbox Code Playgroud)
然而; 我希望元素在加载时显示视频的第一帧.这有什么神奇的方法吗?
我想MediaElement
在Windows Phone 8中为我的对象手动设置速度比.没有SpeedRatio
属性,我似乎无法使用SmoothStreamingMediaElement
(Microsoft.Web.Media.SmoothStreaming
命名空间的一部分).
MediaElement
对于Windows Phone 8,还有其他方法可以设置我的速度(我需要减慢播放速度)吗?
谢谢!
我使用MediaElement播放网络视频.当我离开页面时,我注意到在任务管理器中我的应用程序仍在使用10%的网络并且在完成下载视频之前没有掉线.
我尝试过以下但没有运气.
//open link;
mediaElement.Source = welcomeVideoURL;
//when I leave the page OnNavigatedFrom()
mediaElement.Stop();
mediaElement.ClearValue(MediaElement.SourceProperty);
mediaElement.Source = null;
Run Code Online (Sandbox Code Playgroud)
还尝试将源设置为虚拟链接但仍然没有运气.
我认为打开链接作为流和使用mediaElement.SetSource()
可以工作,但我没有发现任何东西......也许我没有找到正确的.
谢谢.
我遇到了一个非常奇怪的问题,MediaElement似乎与多屏幕环境有关:偶尔(我不能每次都复制问题)当我将窗口从屏幕拖到另一个窗口时MediaElement停止播放.这种奇怪的行为也发生在一个非常基本的代码中:
public MainWindow()
{
InitializeComponent();
}
protected override void OnSourceInitialized(EventArgs e)
{
media.Play();
base.OnSourceInitialized(e);
}
Run Code Online (Sandbox Code Playgroud)
和
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<MediaElement LoadedBehavior="Manual"
Name="media"
Source="C:\Users\Maurizio\Desktop\Pulp Fiction.avi"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
有没有人经历过(并最终解决)任何类似的问题?
我正在我的应用程序上显示一部电影,我希望应用程序只播放一次.当它完成播放时我想启用一些按钮(播放,倒带,再次观看等等)但是有什么方法可以在电影结束时获得一个事件 - 或任何可以完成这个场景的事情?
干杯,
是否可以使用WPF MediaElement从System.IO.Stream对象播放流式视频?正在从存储媒体文件的WCF服务检索Stream对象.
mediaelement ×10
wpf ×8
c# ×5
.net ×2
media-player ×1
multiscreen ×1
mvvm ×1
video ×1
visibility ×1
wcf ×1
windows-8.1 ×1
xaml ×1