c# - AxWMPLib.AxWindowsMediaPlayer 对 WMV 文件表现出奇怪的行为
问题描述
在我的 Windows Forms C# 应用程序中,我实现了 COM AxWMPLib.AxWindowsMediaPlayer
,我有一个设置 的按钮currentPosition
,但是它在涉及 WMV 文件时表现出奇怪的行为,它没有currentPosition
正确设置,而是有 2~6 秒的差异。
在以下示例中,我设置currentPosition
为 7,但它实际上设置为 5 或有时设置为 4,为什么?它只发生在 WMV 文件上,但 MKV 和 MP4 工作正常。
namespace MediaPlayerTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void axWindowsMediaPlayer1_Enter(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = @"D:\Downloads\sample.wmv";
}
private void button1_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.currentPosition = 7.0;
}
}
}
那是一个错误吗?如何解决?WMV 文件是否有解决方法?
解决方案
感谢@Hans Passant 的评论。根据这个答案:https ://superuser.com/questions/591904/windows-media-player-v12-seek-position-wont-play-from-a-chosen-position
WMV 似乎有编码问题。除了 MKV 和 MP4 文件格式工作正常,我做了很多测试,以便在其他文件格式上找到类似的问题,例如:AVI、WebM、3GP、MPG、VOB、MOV、FLV。
WMV 是唯一一个提出问题的。所以我为 WMV 文件做了这个解决方法:
private void button1_Click(object sender, EventArgs e)
{
string isWMV = axWindowsMediaPlayer1.currentMedia.sourceURL;
if (isWMV.EndsWith(".wmv"))
{
ToolTip toolTip = new ToolTip();
toolTip.Show("It's disabled for WMV files due to the faulty WMV indexing table.", button1);
return;
}
axWindowsMediaPlayer1.Ctlcontrols.currentPosition = 7.0;
}
推荐阅读
- sql - 通过“while”或过程创建多个表
- python - 无法使用 pyinstaller 将我的 .py 文件打包成 .exe 文件
- c# - 如何修复“每个表只能配置一列'Identity'。在Ef Core和Oracle中调用'ValueGeneratedNever'......
- laravel - Laravel:如何使用模型运行之外的数据创建 groupBy 并使用 where claus
- python - 根据 lambda 函数将 NumPy 整数列表值映射到列表
- vue.js - 无法即时更改过渡组的过渡
- java - 将密钥标识符作为 X509SubjectKeyIdentifier 签名失败的 SOAP XML WS-Security
- django - Django 使用略有不同的模板发送邮件
- encoding - 用于编码“UTF8”的无效字节序列:当我尝试使用 FormData 对象向服务器发布和图像时出现 0x00 响应
- c# - 命名空间“Microsoft”中不存在类型或命名空间名称“AspNetCore”(您是否缺少程序集引用?)