我正在尝试以编程方式创建 Windows Media Player 控件,以便捕获任何初始化错误。之前,当我简单地将控件放在我的表单上时,一切都运行良好。但现在我正在尝试以编程方式播放内容,视频没有出现在控件中。我只能看到黑色视频,但能听到音频。
有什么想法吗?
public TrimVideoControl()
{
InitializeComponent();
// Try creating WMP control
// We do this here so we can gracefully catch errors if the control doesn't load
try
{
wmPlayer = new AxWMPLib.AxWindowsMediaPlayer();
((System.ComponentModel.ISupportInitialize)(wmPlayer)).BeginInit();
//SuspendLayout();
wmPlayer.CreateControl();
wmPlayer.Name = "wmPlayer";
wmPlayer.Ctlenabled = true;
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TrimVideoControl));
wmPlayer.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("wmPlayer.OcxState")));
wmPlayer.Location = new Point(12, 13);
wmPlayer.Size = new Size(636, 358);
wmPlayer.enableContextMenu = true;
wmPlayer.stretchToFit = true;
wmPlayer.uiMode = "none";
wmPlayer.settings.autoStart = false;
wmPlayer.ErrorEvent += wmPlayer_ErrorEvent;
wmPlayer.MediaChange += wmPlayer_MediaChange;
wmPlayer.MediaError += wmPlayer_MediaError;
wmPlayer.OpenStateChange += wmPlayer_OpenStateChange;
wmPlayer.PlayStateChange += wmPlayer_PlayStateChange;
wmPlayer.Warning += wmPlayer_Warning;
this.Controls.Add(wmPlayer);
((System.ComponentModel.ISupportInitialize)(wmPlayer)).EndInit();
//this.ResumeLayout(false);
//this.PerformLayout();
//wmPlayer.Show();
//wmPlayer.BringToFront();
}
catch (Exception ex)
{
Logger.Error("Error creating WMP control: " + ex);
}
}
最佳答案
MediaPalyer 运行时创建的确切问题是,在组件完全初始化之前,我们无法对 MediaPlayer 的状态(任何设置,如 url/uimode 等)执行任何更改。 VS-designer 将组件的状态序列化为 AxHost.State
对象,并且不影响任何其他设置。在运行时,您可以使用以下方法:
void AddMediaPlayer(string url) {
try {
var wmPlayer = new AxWMPLib.AxWindowsMediaPlayer();
((System.ComponentModel.ISupportInitialize)(wmPlayer)).BeginInit();
wmPlayer.Name = "wmPlayer";
wmPlayer.Enabled = true;
wmPlayer.Dock = System.Windows.Forms.DockStyle.Fill;
this.Controls.Add(wmPlayer);
((System.ComponentModel.ISupportInitialize)(wmPlayer)).EndInit();
// After initialization you can customize the Media Player
wmPlayer.uiMode = "none";
wmPlayer.URL = url;
}
catch { }
}
关于c# - 如果以编程方式创建控件,则 Windows Media Player 视频为黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10807441/