mplayer.cpp
- #include "mplayer.h"
- #include <QDebug>
- #include <unistd.h>
- MPlayer::MPlayer(QWidget *parent):QDialog(parent)
- {
- setupUi(this); //初始化界面
- isPlay = true;
- isSound = true;
- isStop = false;
- /************************为按键添加图标**************************/
- //play
- QIcon icon_play;
- icon_play.addPixmap(QPixmap(QString::fromUtf8("images/pause_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_2->setIcon(icon_play);
- //stop
- QIcon icon_stop;
- icon_stop.addPixmap(QPixmap(QString::fromUtf8("images/stop_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_3->setIcon(icon_stop);
- //reward
- QIcon icon_reward;
- icon_reward.addPixmap(QPixmap(QString::fromUtf8("images/reward_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_4->setIcon(icon_reward);
- //forward
- QIcon icon_forward;
- icon_forward.addPixmap(QPixmap(QString::fromUtf8("images/forward_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_5->setIcon(icon_forward);
- //sound
- QIcon icon_sound;
- icon_sound.addPixmap(QPixmap(QString::fromUtf8("images/sound_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton->setIcon(icon_sound);
- QIcon icon_previous;
- icon_previous.addPixmap(QPixmap(QString::fromUtf8("images/previous_disabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_6->setIcon(icon_previous);
- QIcon icon_next;
- icon_next.addPixmap(QPixmap(QString::fromUtf8("images/next_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_7->setIcon(icon_next);
- /************************设置按钮无边框**********************************/
- pushButton->setFlat(true);
- pushButton_2->setFlat(true);
- pushButton_3->setFlat(true);
- pushButton_4->setFlat(true);
- pushButton_5->setFlat(true);
- pushButton_6->setFlat(true);
- pushButton_7->setFlat(true);
- /*************************获得播放列表***************************/
- directory.setPath("./movie");
- files = directory.entryList(QDir::AllEntries,QDir::Time);
- file_name = files[2]; //文件0和1为 ”.” ”..”,所以从文件2开始播放
- file_count = 2;
- label_3->setText(files[2]);
- /*************************初始化进度条及QProcess类**************/
- horizontalSlider->setPageStep(1);
- process = new QProcess(this);
- process->setProcessChannelMode(QProcess::MergedChannels);
- /*************************初始化信号、槽*************************/
- connect(pushButton_2,SIGNAL(clicked()),this,SLOT(play_pause_slots()));
- connect(pushButton_3,SIGNAL(clicked()),this,SLOT(stop_slots()));
- connect(pushButton_4,SIGNAL(clicked()),this,SLOT(playerReward_slots()));
- connect(pushButton_5,SIGNAL(clicked()),this,SLOT(playerForward_slots()));
- connect(pushButton_6,SIGNAL(clicked()),this,SLOT(previous_slots()));
- connect(pushButton_7,SIGNAL(clicked()),this,SLOT(next_slots()));
- //connect(horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(seek_slots(int)));
- connect(spinBox,SIGNAL(valueChanged(int)),this,SLOT(set_volume_slots(int)));
- connect(pushButton,SIGNAL(clicked()),this,SLOT(set_sound_slots()));
- connect(process,SIGNAL(readyReadStandardOutput()),this,SLOT(back_message_slots()));
- //当process可以读到Mplayer的返回信息时,产生readyReadStandardOutput()信号
- //process->start("mplayer -slave -quiet -ac mad 2.avi");
- //add -wid QWidget->winId();
- QString common = "mplayer -slave -quiet -ac mad -zoom movie/" + file_name + " -wid " + QString::number(widget->winId()); //这里的widget是ui中MPlayer的显示区
- process->start(common); //开始运行程序
- spinBox->setValue(40);
- timer = new QTimer(this);
- connect(timer,SIGNAL(timeout()),this,SLOT(get_time_slots()));
- //定时获取MPlayer的时间信息
- timer->start(1000); //启动定时器 1秒timeout 1次
- }
- void MPlayer::play_pause_slots()
- {
- if(!isPlay)
- {
- if(isStop)
- {
- file_name = files[file_count];
- QString common = "mplayer -slave -quiet -ac mad -zoom movie/" + file_name + " -wid " + QString::number(widget->winId());
- process->start(common);
- QIcon icon_stop;
- icon_stop.addPixmap(QPixmap(QString::fromUtf8("images/stop_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_3->setIcon(icon_stop);
- isStop = false;
- }
- else
- {
- process->write("pause ");
- }
- QIcon icon_play;
- icon_play.addPixmap(QPixmap(QString::fromUtf8("images/pause_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_2->setIcon(icon_play);
- isPlay = true;
- }
- else
- {
- QIcon icon_pause;
- icon_pause.addPixmap(QPixmap(QString::fromUtf8("images/play_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_2->setIcon(icon_pause);
- isPlay = false;
- process->write("pause ");
- }
- }
- void MPlayer::stop_slots()
- {
- if(!isStop)
- {
- process->write("quit ");
- QIcon icon_pause;
- icon_pause.addPixmap(QPixmap(QString::fromUtf8("images/play_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_2->setIcon(icon_pause);
- isPlay = false;
- QIcon icon_stop;
- icon_stop.addPixmap(QPixmap(QString::fromUtf8("images/stop_disabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_3->setIcon(icon_stop);
- isStop = true;
- label->setText("00:00:00");
- label_2->setText("00:00:00");
- }
- }
- void MPlayer::previous_slots()
- {
- if(file_count > 2)
- {
- if(file_count == (files.size()-1))
- {
- QIcon icon_next;
- icon_next.addPixmap(QPixmap(QString::fromUtf8("images/next_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_7->setIcon(icon_next);
- }
- process->write("quit ");
- process = new QProcess(this);
- connect(process,SIGNAL(readyReadStandardOutput()),this,SLOT(back_message_slots()));
- file_count--;
- if(!isStop)
- {
- file_name = files[file_count];
- QString common = "mplayer -slave -quiet -ac mad -zoom movie/" + file_name + " -wid " + QString::number(widget->winId());
- process->start(common);
- }
- if(file_count == 2)
- {
- QIcon icon_previous;
- icon_previous.addPixmap(QPixmap(QString::fromUtf8("images/previous_disabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_6->setIcon(icon_previous);
- }
- label_3->setText(files[file_count]);
- }
- }
- void MPlayer::next_slots()
- {
- if(file_count < (files.size()-1))
- {
- if(file_count == 2)
- {
- QIcon icon_previous;
- icon_previous.addPixmap(QPixmap(QString::fromUtf8("images/previous_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_6->setIcon(icon_previous);
- }
- process->write("quit ");
- process = new QProcess(this);
- connect(process,SIGNAL(readyReadStandardOutput()),this,SLOT(back_message_slots()));
- file_count++;
- if(!isStop)
- {
- file_name = files[file_count];
- QString common = "mplayer -slave -quiet -ac mad -zoom movie/" + file_name + " -wid " + QString::number(widget->winId());
- process->start(common);
- }
- if(file_count == (files.size()-1))
- {
- QIcon icon_next;
- icon_next.addPixmap(QPixmap(QString::fromUtf8("images/next_disabled.png")), QIcon::Normal, QIcon::Off);
- pushButton_7->setIcon(icon_next);
- }
- }
- label_3->setText(files[file_count]);
- }
- void MPlayer::seek_slots(int seek_num)
- {
- qDebug()<<seek_num;
- if(process && process->state() == QProcess::Running )
- {
- process->write(QString("seek " + QString::number(qMin(seek_num,100)) + "1 ").toAscii());
- }
- }
- void MPlayer::get_time_slots()
- {
- if(isPlay)
- ]{
- p
- rocess->write("get_time_pos ");
- process->write("get_time_length ");
- }
- }
- void MPlayer::set_volume_slots(int volume)
- {
- qDebug()<<volume;
- process->write(QString("volume +" + QString::number(volume) + " ").toAscii());
- //process->write(QString("volume +1 ").toAscii());
- }
- void MPlayer::set_sound_slots()
- {
- if(isSound)
- {
- process->write("mute 1 ");
- QIcon icon_sound;
- icon_sound.addPixmap(QPixmap(QString::fromUtf8("images/nosound_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton->setIcon(icon_sound);
- isSound = false;
- }
- else
- {
- process->write("mute 0 ");
- QIcon icon_sound;
- icon_sound.addPixmap(QPixmap(QString::fromUtf8("images/sound_enabled.png")), QIcon::Normal, QIcon::Off);
- pushButton->setIcon(icon_sound);
- isSound = true;
- }
- }
- void MPlayer::playerReward_slots()
- {
- //bool ok;
- //int m=moviePosition.toInt(&ok);
- if (process && process->state()==QProcess::Running && !isPlay)
- {
- //QString cmd="seek "+QString::number(qMax(m-10,0))+" 1 ";
- //process->write(cmd.toAscii());
- qDebug()<<"Reward";
- }
- }
- void MPlayer::playerForward_slots()
- {
- // groupBox->setVisible(false);
- //bool ok;
- //int m=moviePosition.toInt(&ok);
- /* if (process && process->state()==QProcess::Running && !isPlay)
- {
- //QString cmd="seek "+QString::number(qMin(m+10,100))+" 1 ";
- //process->write(cmd.toAscii());
- qDebug()<<"Forward";
- }*/
- }
- void MPlayer::back_message_slots()
- {
- while(process->canReadLine())
- {
- QString message(process->readLine());
- QStringList messagemessage_list = message.split("=");
- if(message_list[0] == "ANS_TIME_POSITION")
- {
- curr_time = message_list[1].toDouble();//toInt();
- QTime time = int_to_time(curr_time);
- label->setText(time.toString("hh:mm:ss"));
- horizontalSlider->setValue(100 * curr_time / file_length);
- }
- else if(message_list[0] == "ANS_LENGTH")
- {
- file_length = message_list[1].toDouble();//toInt();
- QTime time = int_to_time(file_length);
- label_2->setText(time.toString("hh:mm:ss"));
- }
- }
- }
- QTime MPlayer::int_to_time(int second)
- {
- int sec = 0, min = 0, hour = 0;
- QTime time;
- if(second < 60)
- {
- sec = second;
- min = 0;
- hour = 0;
- }
- if(second >= 60 && second < 3600)
- {
- sec = second % 60;
- min = second / 60;
- hour = 0;
- }
- if(second >= 3600)
- {
- sec = second % 60;
- min = (second / 60) % 60;
- hour = second / 3600;
- }
- time.setHMS(hour,min,sec);
- return time;
- }
- image.qrc
- <RCC>
- <qresource prefix="images" >
- <file>images/player_play.png</file>
- <file>images/player_stop.png</file>
- <file>images/player_pause.png</file>
- <file>images/play_enabled.png</file>
- <file>images/pause_enabled.png</file>
- <file>images/reward_enabled.png</file>
- <file>images/forward_enabled.png</file>
- <file>images/stop_enabled.png</file>
- <file>images/sound_enabled.png</file>
- <file>images/nosound_enabled.png</file>
- <file>images/previous_enabled.png</file>
- <file>images/previous_disabled.png</file>
- <file>images/next_enabled.png</file>
- <file>images/next_disabled.png</file>
- </qresource>
- </RCC>
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-34872-9.html
不听话放出来就得下课
说下感受吧