C#实现AxWindowsMediaPlayer窗体启动时自动全屏播放MP4视频
WinForm启动时自动全屏无声音播放MP4的解决方案
问题分析
你当前的代码里点击按钮能触发全屏,是因为此时视频已经处于wmppsPlaying状态,但窗体启动时直接调用fullScreen = true无效,核心原因是视频加载需要时间,调用play()后不会立刻进入播放状态,此时设置全屏不会生效。另外还需要补充静音逻辑实现无声音播放。
解决步骤及修改代码
以下是调整后的完整代码,关键修改已标注:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using AxWMPLib; using WMPLib; namespace Ethen { public partial class FrmAzkar : Form { private int Tiks; public FrmAzkar() { InitializeComponent(); axWindowsMediaPlayer1.uiMode = "none"; // 绑定播放状态改变事件 axWindowsMediaPlayer1.PlayStateChange += axWindowsMediaPlayer1_PlayStateChange; TmrAzkar.Start(); } private void FrmAzkar_Load(object sender, EventArgs e) { string path_to_video_file = @"C:\Mawakit-Al-Salat\azkarFajr.mp4"; if (File.Exists(path_to_video_file)) { axWindowsMediaPlayer1.URL = path_to_video_file; // 设置静音 axWindowsMediaPlayer1.settings.mute = true; axWindowsMediaPlayer1.Ctlcontrols.play(); } else { MessageBox.Show("File not Found"); } } // 播放状态改变事件处理 private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) { // 当视频进入播放状态时设置全屏 if (e.newState == (int)WMPPlayState.wmppsPlaying) { axWindowsMediaPlayer1.fullScreen = true; } } private void TmrAzkar_Tick(object sender, EventArgs e) { Tiks++; this.Text = Tiks.ToString(); if (Tiks == 540) { this.Text = "Done"; TmrAzkar.Stop(); this.Close(); } } private void button1_Click(object sender, EventArgs e) { if (axWindowsMediaPlayer1.playState == WMPPlayState.wmppsPlaying) { axWindowsMediaPlayer1.fullScreen = true; } } } }
关键修改说明
- 绑定PlayStateChange事件:监听视频播放状态变化,只有当状态明确变为
wmppsPlaying时再设置全屏,确保视频已经准备就绪。 - 添加静音设置:通过
axWindowsMediaPlayer1.settings.mute = true强制视频无声音播放。 - 移除无效的直接设置:不在
FrmAzkar_Load里直接设置全屏,避免因视频未加载完成导致的无效操作。
额外注意事项
- 确保视频路径使用
@转义(或者双反斜杠\\),避免路径解析错误。 - 若仍出现全屏延迟,可以考虑在事件处理中添加短暂延迟(比如
Task.Delay(100).Wait();),但一般情况下监听播放状态足够可靠。
内容的提问来源于stack exchange,提问作者Великая Судьба
相关产品推荐
相关产品推荐

