首页 > 代码库 > 1.QT中播放视频,录音程序的编写
1.QT中播放视频,录音程序的编写
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(); } |
运行此部分,发现可以播放音乐! |
1.QT中播放视频,录音程序的编写
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。