1
通过process的方式播放视频
T22VideoPlayer.pro
HEADERS
+=
\
MyWidget.h
SOURCES
+=
\
MyWidget.cpp
QT
+=
gui widgets
MyWidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include <QProcess>
#include <QSlider>
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = 0);
QProcess _process;
QWidget _show;
QSlider* _slider;
signals:
public slots:
void slotOnSliderChanged(int);
};
#endif // MYWIDGET_H
MyWidget.cpp
#include "MyWidget.h"
#include <QApplication>
#include <QVBoxLayout>
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent)
{
QVBoxLayout* lay = new QVBoxLayout(this);
lay->addWidget(&_show);
//添加一个进度条,进度条的方向是水平方向的
lay->addWidget(_slider = new QSlider(Qt::Horizontal));
//滑动条的最小值是0
_slider->setMinimum(0);
//滑动条的最大值是100
_slider->setMaximum(100);
QString str("mplayer /home/toto/6.wmv -wid ");
str+= QString::number(_show.winId());
//通过process的这种方式已经过时了。
_process.start(str);
connect(_slider, SIGNAL(valueChanged(int)), this, SLOT(slotOnSliderChanged(int)));
}
void MyWidget::slotOnSliderChanged(int)
{
//通过命令的方式移动播放至指定位置
_process.write("ss 600\n");
}
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
MyWidget w;
w.show();
return app.exec();
}
上面的运行结果是可以播放指定的音乐!
上面的那种方式是过时的,通过下面的方式播放。
2
录音和播放程序案例
T23AudioRecord.pro
SOURCES
+=
\
main.cpp
QT
+=
multimedia
CONFIG
+=
C++11
录音端程序
main.cpp
#include <QCoreApplication>
#include <QAudioInput>
#include <QAudioFormat>
#include <QFile>
#include <QTimer>
#include <QAudioDeviceInfo>
#include <QDebug>
int main(int argc, char* argv[])
{
QCoreApplication app(argc, argv);
// record audio 设置文件存储的位置
QString audioFileName = "d:\\qt-record.raw";
QFile audioFile(audioFileName);
audioFile.open(QFile::ReadWrite);
QAudioFormat format;
format.setSampleRate(8000);
// 设置音道
format.setChannelCount(1);
// 设置八位
format.setSampleSize(8);
// 设置编解码
format.setCodec("codec/pcm");
// 指定数据模式是大端的还是小端的
format.setByteOrder(QAudioFormat::LittleEndian);
QAudioDeviceInfo device = QAudioDeviceInfo::defaultInputDevice();
if(!device.isFormatSupported(format))
{
format = device.nearestFormat(format);
qDebug() << format.sampleRate();
qDebug() << format.sampleSize();
qDebug() << format.sampleType();
qDebug() << format.codec();
qDebug() << format.byteOrder();
qDebug() << format.channelCount();
}
QAudioInput* audio = new QAudioInput(format);
//下面表示开始录音了
// audio->start(&audioFile);
QIODevice* audioData = audio->start();
audio->setNotifyInterval(200);
app.connect(audio, &QAudioInput::notify, [&](){
int bytesReady = audio->bytesReady();
QByteArray ba(bytesReady, 0);
ba = audioData->read(bytesReady);
audioFile.write(ba);
});
QTimer* timer = new QTimer;
//录制的声音文件的长度为15秒
timer->setInterval(15000);
timer->start();
//下面对audio进行操作,当时间超时之后停止录音
QObject::connect(timer, &QTimer::timeout, [&](){
audio->stop();
audio->deleteLater();
audioFile.close();
app.quit();
});
return app.exec();
}
运行的时候先开启器此端 在d盘上生成文件
T24AudioPlayer.pro
SOURCES += \
main.cpp
QT += multimedia
main.cpp
#include <QCoreApplication>
#include <QAudioOutput>
#include <QAudioFormat>
#include <QFile>
#include <QDebug>
int main(int argc,char *argv[])
{
QCoreApplication app(argc, argv);
QFile file("d:\\qt-record.raw");
if(!file.open(QFile::ReadOnly))
{
qDebug() << "open file error";
exit(0);
}
QAudioFormat format;
format.setSampleRate(8000);
format.setSampleSize(8);
format.setSampleType(QAudioFormat::SignedInt);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setChannelCount(1);
QAudioOutput* output = new QAudioOutput(format);
output->start(&file);
return app.exec();
}
运行此部分,发现可以播放音乐!
时间: 2024-10-25 20:30:54