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中播放视频,录音程序的编写相关推荐

  1. Qt中嵌入视频并循环播放方法

    Qt中插入视频的方法很多,有QVideoPlayer方法,也有用Phonon的,本篇博客就是描述如何在一个QMainwindow界面中,划出一个区域,播放视频,并可以控制视频的切换.停止.暂停.循环, ...

  2. 在Winform中播放视频等【DotNet,C#】

    在项目中遇到过这样的问题,就是如何在Winform中播放视频.当时考察了几种方式,第一种是直接使用Windows Media Player组件,这种最简单:第二种是利用DirectX直接在窗体或者控件 ...

  3. 在QT中CXDVA视频组件的例子

    在QT中CXDVA视频组件的例子 在windows 平台下,cxdva视频组件可以在Qt.MFC等等框架中嵌入视频播放画面.cxdva视频组件使用起来很简单,只用简单的的调用三四个函数就可以实现播放视 ...

  4. winform中播放视频?ffplay比MediaPlayer和暴风都好用

    如何在winform程序中播放音频和视频?其实方法有不少,我们要做的就是找到一个最好的.最简单的是用系统自带的WindowsMediaPlayer组件(值得欣慰的是,Win10系统仍然可以找到,找不到 ...

  5. ue4蓝图节点手册中文_在UE4中播放视频

    简介: 在日常使用UE4做项目时,会遇到在UE4里播放视频文件的需求,在UE4中可以使用媒体框架(Media Framework)来实现这一功能.这里介绍两种简单的方法来使用这一功能,分别是在场景里播 ...

  6. vue3中播放视频和m3u8后缀的视频解决办法

    vue3中播放视频和m3u8后缀的视频解决办法 ****必须使用 vue@3.2.2及以上版本 使用 这个插件 vue3-video-play 官方地址 地址链接跳转 官方文档 文档地址 npm 安装 ...

  7. RecyclerView中播放视频

    在很多播放视频的APP中都有在列表中播放视频的效果,当点击播放的时候,在列表中播放,当视频列表滑动出屏幕的时候,就在屏幕的右下角播放.大致效果如下图: 主要思路 在和RecyclerView的同级布局 ...

  8. ckplayer支持html5播放吗,移动端(H5)环境中播放视频需要了解的内容-ckplayer使用方法...

    移动端(H5)环境中播放视频需要了解的内容 虽然HTML5(下面简称:H5)的技术已整体趋于成熟,但在视频播放方面,如果跟pc端的flashplayer对比的话,功能就显的非常简单了.如果你决定要让你 ...

  9. android listview中播放视频,支持全屏

    最近在做项目的时候有需求要在 listView 中播放视频,并且支持横竖屏无缝切换,在网上搜索了一下,关于这种 demo真的很少, 有的也只是实现简单的功能,无法满足项目中的需求,想着修改一下凑合用, ...

最新文章

  1. 安川g7接线端子图_西门子SIWAREX称重模块安装接线注意事项!
  2. 5G是很快,但也别忘了网络安全问题!
  3. [渝粤教育] 天津城建大学 混凝土结构设计原理A 参考 资料
  4. Web测试中容易被忽略的Charset问题
  5. 在 Mac 上创建和移除替身
  6. Python库:jieba库中文分词
  7. 修改Linux系统默认编辑器
  8. NHibernate中Example类使用注意事项
  9. C# object 转 Intptr, Intptr 转 object
  10. SIP协议之术语定义
  11. 建筑智能化集成系统及架构简介
  12. DX11:先定一个小目标,比如:把DX11龙书上的知识点系统的总结下来
  13. PTA7-4 考试周
  14. 三菱运动控制电子凸轮应用 三菱Q173系列的电子凸轮使用,包括凸轮参数设置
  15. 端口渗透——21端口FTP
  16. mysql本机ip一般是多少_localhost简介、localhost与 127.0.0.1 及 本机IP 的区别
  17. zabbix_agentd_window端运行报错cannot connect to Service Manager: [0x00000005]
  18. 【等保小知识】安全等保是什么意思?是ccrc吗?
  19. http协议及apache配置
  20. mysql安全性案例分析_MySQL实例crash的案例分析

热门文章

  1. Java8 ArrayBlockingQueue 源码阅读
  2. wxWidgets:wxAUI 概述
  3. boost::process::posix相关的测试程序
  4. boost::mp11::mp_eval_or相关用法的测试程序
  5. boost::prior用法的测试程序
  6. GDCM:gdcm::CompositeNetworkFunctions的测试程序
  7. ITK:Mersenne Twister随机数生成器
  8. VTK:Rendering之MotionBlur
  9. VTK:图片之ResizeImageDemo
  10. VTK:图片之ImageDivergence