
-播放器-课程设计报告-.doc
16页2013-2014 学年秋季学期《Windows 程序设计 》课程设计报告学 院: 计算机与信息学院 序 号: 18 姓 名: 学 号: 指导教师: 完成时间 2013 年 12 月 30 日一.课程设计题目 ....................................................................................3二.课程设计内容及功能 ........................................................................32.1.内容 ..............................................................................................32.2 功能 ..............................................................................................3三.课程 设计要求 ....................................................................................4四.关键技 术及相关原理 ........................................................................4五.设计思路及关键技术解决方法 ........................................................45.1 设计思路 .....................................................................................45.2 关键技术解决办 法 ......................................................................5六.功能模块及关 键源代码实现 ............................................................56.1 实现播放、暂停,停止, 上一首,下一首 .............................56.2 添加本地资源文件 .....................................................................96.3 键盘控制快进、快 退、音量加减 ............................................106.4 播放网络资源 ............................................................................13七 .运行结果及演示说明 ......................................................................147.1 运行后整体界面 ........................................................................147.2 添加本地文 件 ............................................................................14八.总结及心得 体会 ......................................................................15九.参考文献 ..........................................................................................15一.课程设计题目音频、视频播放器二.课程设计内容及功能2.1.内容播放器,实现播放本地网络的视音频资源,实现了播放器所需的基本功能,有一定的容错性2.2 功能1.播放视频音频文件2.实现播放、暂停、停止、上一集、下一集3.播放列表4.添加本地视、音频文件5.键盘控制快进、快退、音量加、减6.全屏播放、退出全屏7.播放网络音视频资源三.课程设计要求本播放器应能实现播放器的基本功能,可以通过按钮实现播放、暂停、停止、上一集、下一集,可以添加本地视、音频文件,可以显示播放列表,在输入栏中输入网络播放地址可以实现播放网络资源文件四.关键技术及相关原理本播放器界面文件中使用到的组件有QPushButton、QSlider 、Q TableWidget、QLineEdit。
播放器的播放多媒体功能通过 Qmediaplayer 类来实现;通过 QSlider 类来显示播放进度、音量及控制播放进度、音量大小;播放列表通过QMediaPlaylist 类来实现,可以添加本地影视资源;使用QTableWidget 组件来显示播放列表,可以点击任意资源文件实现播放;通过 QLineEdit 类来实现网络地址输入框,player->setMedia(QUrl::fromLocalFile(ui->lineEdit->text())) 语句实现播放;使用 setIcon(QIcon(""));添加背景图标五.设计思路及关键技术解决方法5.1 设计思路界面设计:本播放器模仿迅雷播放器的界面构造,只要分为视频显示,播放列表,控制按钮等几块,结构简洁,方便操作功能设计:本播放器基本上实现了播放器的基本功能要求,按钮控制播放、暂停,停止,上一集,下一集、添加资源文件,进度条显示和控制播放进度、音量大小,播放类表显示即选择播放资源文件,QL ineEdit 实现播放网络资源5.2 关键技术解决办法双击实现全屏:使用 bool MainWindow::eventFilter(QObject *o, QEvent *e)创建过滤器,安装 过滤器 videoOutput->installEventFilter(this);添加背景图标:setIcon(QIc on(":/new/prefix1/images/pause.png"))切换播放暂停图标:if(player->state()==QMediaPlayer::PlayingState )ui->playorpause->setIcon(QIcon(":/new/prefix1/images/play.png"));if(player->state()==QMediaPlayer::PausedState)ui->playorpause->setIcon(QIcon(":/new/prefix1/images/pause.png"));六.功能模块及关键源代码实现该播放器主要功能模块的实现:6.1 实现播放、暂停、停止、上一首、下一首播放、暂停:void MainWindow::on_playorpause_clicked() {showtime();if(playlist->mediaCount()==0){QMessageBox::about(this, tr("提示"), \tr("播放列表中没有播放资源! "));return;}qDebug() currentIndex();switch (player->state()){case QMediaPlayer::PlayingState:player->pause();ui->playorpause->setIcon(QIcon(":/new/prefix1/images/play.png"));// ui->pushButtonPlay->setChecked(false);break;case QMediaPlayer::PausedState:play();ui->playorpause->setIcon(QIcon(":/new/prefix1/images/pause.png"));break; case QMediaPlayer::StoppedState:play();ui->playorpause->setIcon(QIcon(":/new/prefix1/images/pause.png"));break;}}停止:void MainWindow::on_stop_clicked(){player->stop();ui->widgetVideo->setBackgroundRole(QPalette::Background);ui->playorpause->setIcon(QIcon(":/new/prefix1/images/play.png"));}上一集、下一集:void MainWindow::on_pre_clicked(){if(playlist->mediaCount()==0){QMessageBox::about(this, tr("提示"), \tr("播放 列表中没有播放资源!")); return;}if(playlist->currentIndex()==0)playlist->setCurrentIndex(playlist->mediaCount()-1);else{playlist->setCurrentIndex(playlist->currentIndex()-1);player->play();}ui->playorpause->setIcon(QIcon(":/new/prefix1/images/pause.png"));}void MainWindow::on_next_clicked(){if(playlist->mediaCount()==0){QMessageBox::about(this, tr("提示"), \tr("播放列表中没有播放资源 !"));return;}playlist->setCurrentIndex((playlist->currentIndex()+1)%playlist->mediaCount());player->play();ui->pre->setIcon(QIcon(":/new/prefix1/images/pause.png"));}6.2 添加本地资源文件void MainWindow::on_resource_clicked(){QString initialName="G:\\迅雷下载";//QDir::homePath() ;QStringList pathList=QFileDialog::getOpenFileNames(this, tr("选择文件"), initialName, tr(".mp3"));for(int i=0; iaddMedia(QUrl::fromLocalFile(path));QString fileName=path.split("\\").last();int rownum=ui->tableWidget->rowCount();ui->tableWidget->insertRow(rownum);ui->tableWidget->setItem(rownum, 0, new QTableWidgetItem(fil。
