怎样可以让Windows Media Player可以播放MP4格式电影

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样可以让Windows Media Player可以播放MP4格式电影相关的知识,希望对你有一定的参考价值。

参考技术A windows media player可以播放mp4视频文件,但要求视频编码方式必须是H264。同为MP4格式的视频文件,它的编码方式有多种:DIVX、XVID、H264等。 而windows media player播放器,可以正常播放以H264编码的MP4格式。 但对以DIVX、XVID编码的MP4,是不支持的。
理论上讲,下载并安装万能视频解码器,就可以正常播放了,但实际效果一般化。本回答被提问者采纳

[Winform]Media Player播放控制面板控制,单击事件截获

摘要

在项目中有这样的一个需求,需要在一台宣传机器上循环播放一段视频,并在体验的用户单击鼠标左键的时候推出全屏,可以让用户体验电脑的其它功能。

解决方案

考虑到都是windows系统的,所以采用了windows自带的播放器,Windows Media Player Com组件作为视频播放器。

如图

但是,为了更好满足需求,下面的播放控制面板需要隐藏,该怎么做呢?最后找到解决方案,设置播放器属性

windowsMediaPlay.uiMode = "none";

循环播放的代码,这里为播放器添加播放列表,代码如下:

 string[] filePaths = Directory.GetFiles(_videoDirPath).Where(x => x.EndsWith(".mp4") || x.EndsWith(".wmv")).ToArray();
                //添加循环播放列表
                foreach (var item in filePaths)
                {
                    windowsMediaPlay.currentPlaylist.appendItem(windowsMediaPlay.newMedia(item));
                }
                //不再任务栏显示
                this.ShowInTaskbar = false;
                this.FormClosing += VideoFrm_FormClosing;
                windowsMediaPlay.ClickEvent += windowsMediaPlay_ClickEvent;
                windowsMediaPlay.KeyUpEvent += windowsMediaPlay_KeyUpEvent;
                windowsMediaPlay.StatusChange += windowsMediaPlay_StatusChange;
                windowsMediaPlay.ErrorEvent += windowsMediaPlay_ErrorEvent;
                windowsMediaPlay.DoubleClickEvent += windowsMediaPlay_DoubleClickEvent;
                windowsMediaPlay.Ctlcontrols.play();

那么,如何在用户单击的时候,让程序最小化?

注意

在uiMode = "none"的情况下,单击会触发视频暂停的事件,并不会退出。视频暂停,是不是视频状态变化了呢?所以在截获单击视频事件,我们完全可以在视频暂停的时候,对其进行截获。statechange事件对应的方法如下:

       void windowsMediaPlay_StatusChange(object sender, EventArgs e)
        {
            /*  
             * 0 Undefined Windows Media Player is in an undefined state.(未定义) 
               1 Stopped Playback of the current media item is stopped.(停止) 
               2 Paused Playback of the current media item is paused. When a media item is paused, resuming 
playback begins from the same location.(停留) 3 Playing The current media item is playing.(播放) 4 ScanForward The current media item is fast forwarding. 5 ScanReverse The current media item is fast rewinding. 6 Buffering The current media item is getting additional data from the server.(转换) 7 Waiting Connection is established, but the server is not sending data. Waiting for session to begin.(暂停) 8 MediaEnded Media item has completed playback. (播放结束) 9 Transitioning Preparing new media item. 10 Ready Ready to begin playing.(准备就绪) 11 Reconnecting Reconnecting to stream.(重新连接)
*/ try { switch (windowsMediaPlay.playState) { case WMPLib.WMPPlayState.wmppsBuffering: break; case WMPLib.WMPPlayState.wmppsLast: break; case WMPLib.WMPPlayState.wmppsMediaEnded: break; case WMPLib.WMPPlayState.wmppsPaused: //单击了视频则退出 HideVideo(); break; case WMPLib.WMPPlayState.wmppsPlaying: if (!windowsMediaPlay.fullScreen) { windowsMediaPlay.fullScreen = true; } break; case WMPLib.WMPPlayState.wmppsReady: break; case WMPLib.WMPPlayState.wmppsReconnecting: break; case WMPLib.WMPPlayState.wmppsScanForward: break; case WMPLib.WMPPlayState.wmppsScanReverse: break; case WMPLib.WMPPlayState.wmppsStopped: break; case WMPLib.WMPPlayState.wmppsTransitioning: break; case WMPLib.WMPPlayState.wmppsUndefined: break; case WMPLib.WMPPlayState.wmppsWaiting: break; default: break; } } catch (Exception ex) { LogInfoData.WriteLog(new LogInfo { Dt = DateTime.Now, IsSend = false, Message = ex.Message, Op = "media_state_change_err" }); } }

关于双击全屏截获的逻辑也可以在这里处理,双击之前肯定会有一次单击,所以在这里也能进行双击最大化的处理。 

以上是关于怎样可以让Windows Media Player可以播放MP4格式电影的主要内容,如果未能解决你的问题,请参考以下文章

windows media player如何播放mp4视频文件?

windows media player和media player classic有啥区别?

使用C#播放音乐 使用windows media player

[Winform]Media Player播放控制面板控制,单击事件截获

使用windows Media player如何加速播放?

怎么用windows media player