- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 WPF 的 MediaElement
控件播放一些视频,因此作为起点,我从 WPF4 Unleashed(第 661 页,如果你想查一下)。
<Grid>
<MediaElement Name="Video" />
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom">
<Button Name="PlayButton" Background="#55FFFFFF" Height="40">Play</Button>
<Button Name="PauseButton" Background="#55FFFFFF" Height="40">Pause</Button>
<Button Name="ResumeButton" Background="#55FFFFFF" Height="40">Resume</Button>
</StackPanel>
<Grid.Triggers>
<EventTrigger RoutedEvent="Button.Click" SourceName="PlayButton">
<EventTrigger.Actions>
<BeginStoryboard Name="BeginStoryBoard">
<Storyboard>
<MediaTimeline Storyboard.TargetName="Video" Source="Path/To/Out.mp4"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="Button.Click" SourceName="PauseButton">
<EventTrigger.Actions>
<PauseStoryboard BeginStoryboardName="BeginStoryBoard" />
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="Button.Click" SourceName="ResumeButton">
<EventTrigger.Actions>
<ResumeStoryboard BeginStoryboardName="BeginStoryBoard" />
</EventTrigger.Actions>
</EventTrigger>
</Grid.Triggers>
</Grid>
我用 2 个不同的视频尝试了这个片段,一个是我从 youtube 上截取的,另一个是我使用 livestreamer 保存的(来自 Twitch.tv 流)。然而,虽然 WMP 和 VLC 都可以完美播放这两个视频,但上面的 XAML 示例无法正确播放来自 Livestreamer 的视频(有很多视觉伪影,见下文)。
奇怪的是根据 MSDN 上的答案(this question):
2, If WMP12 is provided, WPF mediaElement can play mp4 without any Codec Packs.
说到编解码器,我使用 VLC 查找了两个视频的编解码器信息:
优酷:
主播:
现在这应该无关紧要,因为据我所知,MediaElement
应该具有与 WMP 完全相同的行为。
tl;博士;使用 WPF 的 MediaElement 播放视频的正确方法是什么? (如果不是上面那个)
P.S:如果您必须知道,我的最终目标是从 twitch.tv 播放流并对视频帧进行一些视觉分析(使用 OpenCV 或其他一些库)。
P.P.S:如果我使用 ffmpeg 重新渲染/重新编码/重新保存视频使用:ffmpeg.exe -i Out.mp4 Out_fixed.mp4
,新版本将正常播放.不知道是否有帮助。
最佳答案
我有一个 MediaElement 应用程序,可以在主显示器上播放 MP4 (AVC1) 文件。但是,当我将应用程序窗口从主显示器拖动到辅助显示器(扩展桌面)时,视频会卡住并且无法播放。 MediaElement 抛出“错误:来自 HRESULT 的异常:0xC00D11B1”,我认为这是编解码器死亡。我安装了 K-Lite 编解码器包,因此 MediaElement 可能使用与您的应用程序不同的编解码器。
根据这个 MicroSoft 页面,AVC 应该工作:支持的媒体格式、协议(protocol)和日志字段 http://msdn.microsoft.com/en-us/library/cc189080%28v=vs.95%29.aspx
关于wpf - 使用 MediaElement 播放 .mp4 时的视觉瑕疵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421024/
我是一名优秀的程序员,十分优秀!