概述
1.MPlayer 的特殊控制模式
MPlayer 本身是一个命令行的程序,但是他提供了有后台模式(Slave),可以把自己输出重定向到一个指定的X Windows窗口中,并且可以通过管道向其发送命令来控制,这样就为GUI程序提供一个简单的编程接口.让其用图形界面来控制.Gnome下的 gmplayer其实就是通过这个方法来在图形界面调用MPlayer.
关于gtk下如何编程控制Mplayer可以参考
http://blog.csdn.net/zhangbinka/archive/2009/07/01/4313057.aspx
关于MPlayer在X86和ARM下如何安装请参考,我的博文
http://blog.chinaunix.net/u3/105675/showart_2101453.html
http://blog.chinaunix.net/u3/105675/showart_2148571.html
本文的重点如何在QT来在GUI控制MPlayer
MPlayer 的特殊用法
1.1 通过管道播放视频
- mkfifo /tmp/media // 建立管道文件
- cat xxx.mpeg > /tmp/media & // 把媒体文件数据写入管道一端
- mplayer /tmp/media –cache 3000 // mplayer在缓充3M数据后开始播放
本例里没有用这个功能,但是很多LINUX的网络播放器也是用这个方法来这现的.有兴趣可以参考一下gtk-sopcast(http://code.google.com/p/gsopcast/ )这个开源项目,这个软件相信很多人用它的WINDOWS版本看过球.
1.2 slave模式.
slave 播放模式,可以MPlayer在后台执行,并可以通专用的命令管道发送命令来控制MPlayer.
- mkfifo /tmp/cmd
- mplayer -slave -quiet -input file=/tmp/cmd xxx.mpeg &
- 使用/tmp/cmd做为命令管道
- echo "pause" > /tmp/cmd
- 暂停播放
常用的控制命令可以用如下命令来查看
mplayer –input cmdlist
编程常用到几个命令
- seek Float [Integer] 跳到指定时间播放
- speed_incr Float 快进
- speed_set Float 设置指定时间
- quit [Integer] 退出
- pause 暂停,再一次表示重新播放
- get_percent_pos 取得百分比表示的进度
- get_time_pos 取得时间进度
1.3 在指定的窗口播放Mplayer
MPlayer是默认全屏播放,但在GUI中一般都是指定区域或者控制来播放.这样显得美观,MPlayer支持在指定的X窗口播放的功能.用-wid参数告诉窗口ID即可.
mplayer test.mpg -wid 0x00029 #0x0029是X ID
在对于正在运行图形界面窗口,可以用Linux 命令xwininfo来取到其ID,方法是运行这个程序后.屏幕鼠标变成+,将其拖到指定窗口即可看到其结果。
xwininfo 是X-Windows工具,用来查看已经打开窗口的X-Windows信息。
[root@sowhy hxy]# xwininfo xwininfo: Please select the window about which you xwininfo: Window id: 0x320001f Absolute upper-left X: 177 |
QT的控件都是从QWidget继承下来,因此它本身也有wid,这样只要用 QWidget::winID() 取出WID,即可实现在指定窗口播放视频的功能。
2.QT控制MPlayer分析
网上一个直接用 QT3的例子控制MPlayer文档.
http://doc.qtfr.org/post/2007/03/21/Un-conteneur-pour-MPlayer-utilisation-de-QProcess
下载
http://doc.qtfr.org/public/2007/qt_mplayer.tar.gz
其原理是建立一个Qt GUI程序。然后用一个frame 控件来播放视屏,用一个进度条显示播放的进度,用按键显播放,暂停。
然后用一个QProcess在后台执行MPlayer,并把Framer的WID传给它。 然后把MPlayer的输入输出重定向,把原本从标准输入接收命令变成从GUI的接收命令。
2.1 QProcess 简要说明
LINUX C用system 执行外部程序
QStringList arg ;
QProcess 用write来实现向标准输入发送信息
0.2 增加暂停,全屏切换功能
0.3 增加视频窗口自动调整大小,时间进度生效
3.QT4下的实现
0.1 第一个版本。设计基本双窗口框架,能播放视频
0.1.1 参考gmplayer,采用播放窗口与工具栏窗口双窗口机制
0.1.2 播放Mplayer ,使QProcess 执行mplayer,并用-wid参数将其播放到指定窗口
0.1.3 用QFileDialog 来选择打开文件
0.2 增加暂停,全屏切换功能
0.2.2 用一个QCheckbox决定是否全屏播放
0.3 增加视频窗口自动调整大小,时间进度生效
转自:http://hi.baidu.com/icwolf/blog/item/b643b12e99a3ec341f308992.html
最后
以上就是幽默羊为你收集整理的MPlayer的控制的全部内容,希望文章能够帮你解决MPlayer的控制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复