日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

1.QT中播放视频,录音程序的编写

發(fā)布時(shí)間:2024/9/27 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.QT中播放视频,录音程序的编写 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


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); ??? //添加一個(gè)進(jìn)度條,進(jìn)度條的方向是水平方向的 ??? lay->addWidget(_slider = new QSlider(Qt::Horizontal)); ??? //滑動(dòng)條的最小值是0 ??? _slider->setMinimum(0); ??? //滑動(dòng)條的最大值是100 ??? _slider->setMaximum(100); ? ??? QString str("mplayer /home/toto/6.wmv -wid "); ??? str+= QString::number(_show.winId()); ??? //通過process的這種方式已經(jīng)過時(shí)了。 ??? _process.start(str); ? ??? connect(_slider, SIGNAL(valueChanged(int)), this, SLOT(slotOnSliderChanged(int))); } ? void MyWidget::slotOnSliderChanged(int) { ??? //通過命令的方式移動(dòng)播放至指定位置 ??? _process.write("ss 600\n"); } ? int main(int argc,char* argv[]) { ??? QApplication app(argc,argv); ??? MyWidget w; ??? w.show(); ??? return app.exec(); }

上面的運(yùn)行結(jié)果是可以播放指定的音樂!

上面的那種方式是過時(shí)的,通過下面的方式播放。

?

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 設(shè)置文件存儲(chǔ)的位置 ??? QString audioFileName = "d:\\qt-record.raw"; ??? QFile audioFile(audioFileName); ??? audioFile.open(QFile::ReadWrite); ? ??? QAudioFormat format; ? ??? format.setSampleRate(8000); ??? // 設(shè)置音道 ??? format.setChannelCount(1); ??? // 設(shè)置八位 ??? format.setSampleSize(8); ??? // 設(shè)置編解碼 ??? format.setCodec("codec/pcm"); ??? // 指定數(shù)據(jù)模式是大端的還是小端的 ??? 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; ??? //錄制的聲音文件的長(zhǎng)度為15 ??? timer->setInterval(15000); ??? timer->start(); ??? //下面對(duì)audio進(jìn)行操作,當(dāng)時(shí)間超時(shí)之后停止錄音 ??? QObject::connect(timer, &QTimer::timeout, [&](){ ??????? audio->stop(); ??????? audio->deleteLater(); ??????? audioFile.close(); ??????? app.quit(); ??? }); ? ??? return app.exec(); }
運(yùn)行的時(shí)候先開啟器此端 在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(); }

運(yùn)行此部分,發(fā)現(xiàn)可以播放音樂!

?

總結(jié)

以上是生活随笔為你收集整理的1.QT中播放视频,录音程序的编写的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。