mplayer播放器下载
链接:https://pan.baidu.com/s/1Ln_Xyrn7uiUJWBnahTeQ2Q
提取码:k86r
在ARM开发板平台 将编译好的mplayer播放器 移植到开发板的 根目录下 /bin 里面
[root@GEC6818 /bin]#chmod 777 mplayer //设置mplayer的权限
注:下载进开发板里的音乐也需要加权限
mplayer播放器介绍和基本使用
1、介绍
MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流操作系统使用,例如Linux和其他类Unix系统、Windows及Mac OS X系统。
MPlayer建基于命令行界面,在各操作系统也可选择安装不同的图形界面。mplayer的另一个大的特色是广泛的输出设备支持。它可以在X11、Xv、DGA、OpenGL、SVGAlib、fbdev、AAlib、DirectFB下工作,且能使用GGI和SDL和一些低级的硬件相关的驱动模式(比如Matrox、3Dfx和Radeon、Mach64、Permedia3)。MPlayer还支持通过硬件MPEG解码卡显示,如DVB 和DXR3与Hollywood+。
MPlayer的开发始于2000年。最初的作者是 Arpad Gereoffy。MPlayer最初的名字叫"MPlayer - The Movie Player for Linux",不过后来开发者们简称其为"MPlayer - The Movie Player",原因是MPlayer已经不仅可以用于Linux而可以在所有平台上运行。
基本使用方法
默认mplayer是从键盘上获得控制信息。mplayer另外提供了一种更为灵活的控制方式,用来进行播放控制——slave模式。
在slave模式下,MPlayer为后台运行其他程序,不再截获键盘事件,MPlayer会从标准输入读一个换行符(\n)分隔开的命令。
键盘控制方式
<- or -> 后退/快进 10 秒
down or up 后退/快进 1 分钟
pgdown or pgup 后退/快进 10 分钟
< or > 跳到播放列表中的前一个/后一个
p or SPACE 暂停播放(按任意键继续)
q or ESC 停止播放并退出程序
or - 调整音频延迟增加/减少 0.1 秒
o 循环 OSD 模式: 无/搜索条/搜索条加计时器
or / 增加或减少 PCM 音量
x or z 调整字幕延迟增加/减少 0.1 秒
r or t 上/下调整字幕位置, 参见“-vf expand”
slave 命令后台处理模式
[root@GEC6818 ~]#mplayer -input cmdlist ---会打印出一份当前mplayer所支持的所有slave模式的命令
MPlayer 1.0rc2-4.5.1 (C) 2000-2007 MPlayer Team
CPU: ARM
seek Float [Integer] ----快进 、快退
edl_mark
audio_delay Float [Integer]
speed_incr Float
speed_mult Float
speed_set Float
quit [Integer] 退出
pause 暂停、继续播放
frame_step
pt_step Integer [Integer]
pt_up_step Integer [Integer]
alt_src_step Integer
loop Integer [Integer]
sub_delay Float [Integer]
sub_step Integer [Integer]
osd [Integer]
osd_show_text String [Integer] [Integer]
常用的命令:
loadfile string //参数string 为 歌曲名字。
volume 100 1//设置音量 中间的为音量的百分比
mute 1/0//静音开关
pause//暂停/取消暂停
get_time_length//返回值是播放文件的长度,以秒为单位。
seek value //向前查找到文件的位置播放 参数value为秒数。 比如 快进: "seek +10\n" 快退:"seek -10\n"
get_percent_pos//返回文件的百分比(0--100)
get_time_pos//打印出在文件的当前位置用秒表示,采用浮点数
volume <value> [abs] //增大/减小音量,或将其设置为<value>,如果[abs]不为零 get_file_name//打印出当前文件名
get_meta_album//打印出当前文件的'专辑'的元数据
get_meta_artist//打印出当前文件的'艺术家'的元数据
get_meta_comment//打印出当前文件的'评论'的元数据
get_meta_genre//打印出当前文件的'流派'的元数据
get_meta_title//打印出当前文件的'标题'的元数据
get_meta_year//打印出当前文件的'年份'的元数据
ARM多媒体的音乐播放
头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QProcess>
#include <QListWidgetItem>
extern "C"{
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
}
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_btn_player_clicked();
void on_btn_stop_clicked();
void on_btn_add_clicked();
void on_btn_next_clicked();
void on_listWidget_itemDoubleClicked(QListWidgetItem *item);
void on_btn_prev_clicked();
void on_btn_mute_clicked();
void on_horizontalSlider_volume_sliderMoved(int position);
void on_horizontalSlider_seek_sliderMoved(int position);
void on_btn_enterSeek_clicked();
void on_btn_backSeek_clicked();
void on_btn_pause_clicked();
void onRecvData();
private:
Ui::MainWindow *ui;
QProcess *m_process;
int index;
int fifoFd;
};
#endif // MAINWINDOW_H
源文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QDebug>
#include <QThread>
#include <QTime>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//注意这里不要传递父指针,否则关闭会出现异常
m_process = new QProcess;
index = 0;
}
MainWindow::~MainWindow()
{
::close(fifoFd);
delete m_process;
delete ui;
}
//播放
void MainWindow::on_btn_player_clicked()
{
//先停止当前音乐
on_btn_stop_clicked();
QString cmd = QString::fromLocal8Bit("mplayer -slave -quiet %1 &")
.arg(ui->listWidget->item(index)->text());
m_process->start(cmd.toLocal8Bit().data());
//get_time_length//返回值是播放文件的长度,以秒为单位 ANS_LENGTH=264.00
m_process->write("get_time_length\n");
connect(m_process,&QProcess::readyRead,this,&MainWindow::onRecvData);
}
//停止
void MainWindow::on_btn_stop_clicked()
{
if(m_process->state() == QProcess::Running){
m_process->kill();
}
m_process->waitForFinished();
}
//添加
void MainWindow::on_btn_add_clicked()
{
QStringList lists = QFileDialog::getOpenFileNames(this,"add music","","music file (*.mp3)");
for(int i=0; i<lists.size(); i++){
QListWidgetItem *item = new QListWidgetItem;
item->setIcon(QIcon(":/new/prefix1/pic/muic.png"));
item->setText(lists.at(i).toLocal8Bit());
ui->listWidget->addItem(item);
}
}
//下一首
void MainWindow::on_btn_next_clicked()
{
index = ++index % ui->listWidget->count();
on_btn_player_clicked();
}
//上一首
void MainWindow::on_btn_prev_clicked()
{
index = --index < 0 ? (ui->listWidget->count()-1) :index;
on_btn_player_clicked();
}
//双击播放
void MainWindow::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
index = ui->listWidget->currentRow();
on_btn_player_clicked();
}
//静音
void MainWindow::on_btn_mute_clicked()
{
m_process->write("mute\n");
}
//音量滑动条
void MainWindow::on_horizontalSlider_volume_sliderMoved(int position)
{
ui->label_volumeValue->setText(QString::fromLocal8Bit("当前音量:%1").arg(position));
}
void MainWindow::onRecvData()
{
QString data = m_process->readAll();
qDebug()<<data;
//ANS_LENGTH=264.00 获取文件时间长度
if(data.contains("ANS_LENGTH")){
//返回来的时间长度是浮点型,必须转成浮点型,如果转成int 会转换失败
bool ok;
double timeLength = data.remove("ANS_LENGTH=").remove("\n").toDouble(&ok);
if(ok){
QTime timeFormat(0,0,0);
timeFormat = timeFormat.addSecs(timeLength);
//显示时间长度
ui->label_timeLength->setText(timeFormat.toString());
//设置 时间长度滑动进度条的最大值
ui->horizontalSlider_seek->setMaximum(timeLength);
}else{
qDebug()<<"string to double error";
}
}
}
//时间长度 滑动条
void MainWindow::on_horizontalSlider_seek_sliderMoved(int position)
{
qDebug()<<"seek position:"<<position;
//修改文件进度--自行扩展
}
//快进
void MainWindow::on_btn_enterSeek_clicked()
{
m_process->write("seek +10\n");
}
//快退
void MainWindow::on_btn_backSeek_clicked()
{
m_process->write("seek -10\n");
}
void MainWindow::on_btn_pause_clicked()
{
m_process->write("pause\n");
}