编译Meida Player Classic(MPC)

相关的工具与环境:
OS:Windows XP2
CVS:Subversion+TortoiseSVN
VS2005 Enterprise(vc8.0)
SDK: Microsoft DirectX 9.0 SDK Update (Summer 2003)
Windows Media Format SDK 9
 
mpc的开源地址: guliverkli
svn地址:
 
一、 编译DirectX SDK中的BaseClasses,生成Debug_Unicode和Release_Unicode,然后在VS2005中设置相关的环境
 
二、根据docs/HowToCompile.txt中依次编译
1. deccs
2. dsutil
3. ui (run /lib/ui.bat to merge them)
4. subpic
5. subtitles
6. filters (for mpc only build those configurations which output a lib, the rest outputs stand-alone filters)
再编译:
apps/mplayerc/ mplayerc_vs2005.sln
 
三、如果顺利,会编译出如下图的MPC。
 
 
1)       虽然我倾向用Microsoft DirectX SDK (August 2007) + Microsoft Platform SDK for Windows Server 2003 R2,但DirectX SDK装了summer2003版本,所以需要在代码中有很多的小改动。
2)       cvs用了Subversion+TortoiseSVN。
3)       全选了所有filter,mpc编译出来总大小近6G,其中还有一些filter并没编译成功。
4)       代码改动参考了 PeterLee的文章。
 
风暴影音编译的版本
 
我编译的MPC
 
以下是一个基于Java的MediaPlayer在线播放代码示例: ```java import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.media.ControllerEvent; import javax.media.ControllerListener; import javax.media.EndOfMediaEvent; import javax.media.Manager; import javax.media.NoPlayerException; import javax.media.Player; import javax.media.Time; public class MediaPlayerExample extends JPanel implements ControllerListener { private static final long serialVersionUID = 1L; private Player player; private Component video; private Component control; public MediaPlayerExample() { try { setPreferredSize(new Dimension(640, 360)); setLayout(new BorderLayout()); URL url = new URL("http://example.com/video.mp4"); player = Manager.createPlayer(url); player.addControllerListener(this); player.realize(); video = player.getVisualComponent(); if (video != null) { add(video, BorderLayout.CENTER); } control = player.getControlPanelComponent(); if (control != null) { add(control, BorderLayout.SOUTH); } } catch (MalformedURLException e) { System.err.println("Invalid media URL: " + e); } catch (NoPlayerException e) { System.err.println("Failed to create media player: " + e); } catch (IOException e) { System.err.println("Failed to initialize media player: " + e); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame frame = new JFrame("MediaPlayer Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new MediaPlayerExample()); frame.pack(); frame.setVisible(true); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } }); } public void controllerUpdate(ControllerEvent event) { if (event.getSource() == player && event instanceof EndOfMediaEvent) { player.setMediaTime(new Time(0)); player.start(); } } } ``` 在这个示例中,我们使用Java的`javax.media`包来实现MediaPlayer在线播放。在构造方法中,我们初始化了一个URL对象,用于指定视频文件的URL。然后,我们使用Manager.createPlayer()方法创建一个Player对象,并将其添加为ControllerListener,以便在播放状态发生变化时接收通知。接着,我们调用Player.realize()方法来准备播放器,并获取视频组件和控制面板组件,并将它们添加到面板中。 在main()方法中,我们使用SwingUtilities.invokeLater()方法来在事件分派线程中创建并显示GUI。在windowClosing()方法中,我们调用System.exit()方法来退出程序。 在controllerUpdate()方法中,我们检查事件源是否为Player,并且事件类型是否为EndOfMediaEvent。如果是,我们将媒体时间设置为0,然后重新开始播放。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值