UI随手做的,有点简陋
先放效果图:
功能:实现了音量的进度条,播放进度条,播放暂停,停止,快进快退等等,并且界面可以跟随窗口缩放。(进度条可拖动控制视频、音频)
下面界面视频的功能:
1、播放
用mplayer的播放slave模式
slave模式:接受以“\n”结束的命令控制,这样就可以直接发送命令来控制mplayer
play功能核心代码:
QStringList arg1;
this->process=new QProcess;
arg1 << fileName;
arg1 << "-slave";
arg1 << "-quiet"; //不打印播放信息
arg1 << "-zoom"; //视频居中,四周黑条,全屏播放
arg1 << "-wid" << QString::number((unsigned int)(ui->widget->winId()));
// "-wid" 是指让MPlayer显示在哪个窗口,ui->widget->winId() 获取widget的标识码
connect(this->process,SIGNAL(readyReadStandardOutput()),this,SLOT(dataReceive()));
this->process->start(“/bin/mlpayer”,arg1); //调用mplayer。开始进程
2、实现快进后退的功能:
void MainWindow::backSlot()//后退
{
this->process->write("seek -1 0\n");
}
void MainWindow::forwardSlot()//快进
{
this->process->write("seek +1 0\n");
}
其它的暂停、音量加减功能与此类似!具体看下面的mplayer常用命令调用
3、实现移动进度条控制播放位置,进度条通过Qslider套件实现
void MainWindow::on_horizontalSlider_sliderMoved(int position)
{
this->process->write(QString("seek "+QString::number(position)+" 2\n").toUtf8());
}
后续再更新其它功能。
附
:mplayer的基本功能
get_audio_bitrate
打印出当前文件音频比特率。
get_audio_codec
打印出的音频当前文件的编解码器的名称。
get_audio_samples
打印出的音频和当前文件的声道数。
get_file_name
打印出当前文件名。
get_meta_album
打印出当前文件的'专辑'的元数据。
get_meta_artist
打印出当前文件的'艺术家'的元数据。
get_meta_comment
打印出当前文件的'评论'的元数据。
get_meta_genre
打印出当前文件的'流派'的元数据。
get_meta_title
打印出当前文件的'标题'的元数据。
get_meta_track
打印出当前文件的'音轨的数量'的元数据。
get_meta_year
打印出当前文件的'年份'的元数据。
get_percent_pos
打印出文件中的当前位置为整数百分比[0-100)。
get_property <property>
打印出的属性的当前值。
get_sub_visibility
打印出字幕能见度(1 ==开启,0 ==关闭)。
get_time_length
打印出当前文件的长度用秒表示。
get_time_pos
打印出在文件的当前位置用秒表示,采用浮点数。
get_vo_fullscreen
全屏状态打印出来(1 == 全屏,0 ==窗口)。
get_video_bitrate
打印出当前文件的视频比特率。
get_video_codec
打印出当前视频文件的编解码器的名称。
get_video_resolution
打印出当前文件的视频分辨率。
screenshot <value>
截屏。要求屏幕过滤器加载。
0以一个单独的截图。
1启动/停止服用,每帧画面。
gui_[about|loadfile|loadsubtitle|play|playlist|preferences|skinbrowser|stop]
图形用户界面行动
key_down_event <value>
注入<value>到MPlayer的关键代码的事件。
loadfile <file|url> <append>
加载给定的文件/网址,停止当前文件的播放/网址。
如果是<append>非零继续播放和文件/网址
追加到当前播放列表代替。
loadlist <file> <append>
加载给定的播放列表文件,停止当前文件的播放。
如果<append>是非零和继续播放文件,文件追加到当前播放列表。
loop <value> [abs]
调整/设置怎样的电影应该是循环多次。 -1代表不循环,永远的0。
菜单命令>
执行上显示OSD菜单命令。
up 移动光标向上。
down 移动光标向下。
ok 接受的选择。
cancel 取消选择。
hide 隐藏的OSD菜单
set_menu <menu_name>
显示菜单命名<menu_name>。
mute [value]
切换声音输出静音或将其设置为[value](value>=0)
(1 ==开启,0 ==关闭)。
osd [level]
切换OSD模式或将其设置为[level]在[level]>= 0。
osd_show_property_text <string> [duration] [level]
显示一项关于OSD扩展属性的字符串,看到-playing-msg 用于描述可用的扩展。如果[duration]>=0,显示为[duration]ms。 [level]设置所需的最低水平OSD该消息可见(默认是:0 -始终显示)。
osd_show_text <string> [duration] [level]
查看OSD的<string>。
panscan <-1.0 - 1.0> | <0.0 - 1.0> <abs>
增加或减少pan-and-scan的<value>的范围,1.0是最高的。
负值降低pan-and-scan范围。
如果<abs>!= 0,那么pan-and-scan范围被解释为绝对的范围。
pause
暂停/取消暂停播放。
frame_step
播放一帧,然后暂停。
pt_step <value> [force]
转到下一个/上的播放树项。标志的<value>讲述
该方向。如果没有项目可在给定的方向不会做任何事,除非[force]不为零。
pt_up_step <value>[force]
类似pt_step,但跳转到下一个/父列表中的前一个项目。
有助于摆脱在播放树内部循环。
quit [value]
退出MPlayer。可选的整数[value]的值作为返回代码
为mplayer的进程(默认值:0)。
radio_set_channel <channel>
切换到<channel>。在‘channel’的广播参数需要设置。
radio_set_freq <frequency in MHz>
设置广播频率调谐器。
radio_step_channel <-1|1>
步向前(1)或向后(-1频道列表)。只有当'channel'的广播参数设置。
radio_step_freq <value>
调整频率的<value>(正数 - 向上,负数 - 向下)。
seek <value> [type]
定位电影的某些地方。
0 是一个相对定位+/- <value>(默认值)。
1 是定位<value>%在电影里。
2 是寻求一个绝对位置的<value>秒。
seek_chapter <value> [type]
定位一章的开始。
0 是一个相对寻求+/- <value>章节(默认)。
1 定位到<value>章。
switch_angle <value>
转换ID为角度[value]。通过循环如果用角度[value]省略或负数。
set_mouse_pos<X> <y>
告诉MPlayer的窗口中鼠标坐标。
此命令不移动鼠标!
set_property <property> <value>
设置属性。
speed_incr <value>
增加<value>当前回放速度。
speed_mult <value>
目前速度乘以<value>。
speed_set <value>
设定速度为<value>。
step_property <property> [value] [direction]
通过value来改变属性,或者,如果没给定或为0则增加默认值。如果小于零,方向是相反的方向。
stop
停止播放。
本人QT版本5.9.1
Ubuntu系统版本是16.04。
mplayer是直接通过apt-get install下载的。
·===============================
补充:mplayer版本我当时也没看是多少,很久之前做的,环境都没保留。所以现在无法查看了。
有部分人是使用没有问题的,遇到问题先测试下mplayer是否正常,QT是否正常,有可能是环境的问题,还有开发版和Linux系统是不一样的,移植到开发版的话一般是有不少问题的,得自己去慢慢调通。
·=====================================
现在时间是2020.06.18
我重新搞了个虚拟机搭了下环境,播放是正常的。
如果有播放不正常的话,可能是下面这个参数没改,改成mplayer的正确路径,一般在/usr/bin/。
还有图片加载问题,路径改下就行,因为是随手做出来的demo,所以没考虑路径的问题。
arg = "/bin/mplayer";
我的mplayer版本如下:
--------------------假装我是分割线-------------------------------
源码下载地址:https://download.csdn.net/download/weixin_38890593/11268907
源码里面已经做好相应的较为详细中文注释。
直接通过QT点击pro文件编译运行就OK了!
补下百度网盘链接:链接:https://pan.baidu.com/s/1Q1j7_0QIejluOOD-Ezd-qQ
提取码:jk0r
没想到有不少人下载,都要16积分一次了,囧!太多了,有需要的直接拿百度盘资源就行哈!