通过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);
 
    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));
    //
    _slider->setMinimum(0);
    //
    _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;
    //秒
    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. 在Winform中播放视频等【DotNet,C#】

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

  2. unity中播放视频

    unity中播放视频步骤如下: 1.将要播放的视频拖入projec.(注意:unity一般支持的视频格式有mov, .mpg, .mpeg, .mp4,.avi, .asf格式  ) 2.在场景中添加 ...

  3. Windows Media Player播放视频导致程序闪退

    在有的电脑上发现,使用Windows Media Player组件播放视频导致程序闪退. 发现是显卡问题,独立显卡换成集成显卡 解决: 打开显卡控制面板->管理3D设置->集成图形-> ...

  4. WinForm中播放视频示例(含源码)

    1背景 这几天一老友要求我做个小软件,在WinForm播放视频.印象中微软有个WM控件直接可以使用,晚上研究下 2实现方式 2.1微软草根 最简单的方式,是直接使用微软的WM控件,也是通过COM方式集 ...

  5. 基于ALSA的WAV播放和录音程序

    http://blog.csdn.net/azloong/article/details/6140824 这段时间在探索ALSA架构,从ALSA Core到ALSA Lib,再到Android Aud ...

  6. 手机浏览器,微信中播放amr录音

    由于微信公众号开发中,临时素材只有三天的有效期,但是客户要求所有录音永久保存,永久素材数量又有限制,故只能把录音保存到服务器上.但是存到服务器上有一个问题,手机微信中无法直接播放amr录音.无意中发现 ...

  7. Unity3D中播放视频的方法

    播放视频其实和贴图非常相像,因为播放视频用到的 MovieTexture 属于贴图 Texture 的子类.Unity3D 支持的视频格式有很多,但是还是建议使用 ogv 格式的视频,使用其他格式依然 ...

  8. 用flvplayer.swf在网页中播放视频(网页中flash视频播放的实现)

    原:http://blog.csdn.net/ricciozhang/article/details/46868201 由于公司项目的需求,需要在展示一些信息的时候能够播放视频,拿到这个要求,我就从最 ...

  9. Opencv从文件中播放视频

    1.VideoCapture()括号中写视频文件的名字,在播放每一帧的时候,使用cv2.waitKey()设置适当的持续时间,太低会播放的很快,太高会很慢,通常情况下25毫秒就行了. 2.获取相机/视 ...

随机推荐

  1. 【Codeforces Round 418】An impassioned circulation of affection DP

                                                            C. An impassioned circulation of affection   ...

  2. python 2week

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 1 names =  ...

  3. C语言程序设计第三次作业——选择结构(一)

    (一)改错题 错误信息: 错误原因:y=1/x后没加分号 改正方法:在其后加上分号 错误信息: 错误原因:if语句后接了:,使else语句找不到对应的if 改正方法:删掉if后的分号 错误信息: 错误 ...

  4. Zend引擎探索 之 PHP中前置递增不返回左值

    首先来讲,一般我们对"左值"的理解就是可以出现在赋值运算符的左侧的标识符,也就是可以被赋值.这样讲也许并不十分确切,在不同的语言中对左值的定义也不尽相同.在这里我们讨论前置递增(和 ...

  5. 如何用git命令生成Patch和打Patch

    在程序员的日常开发与合作过程中,对于code的生成patch和打patch(应用patch)成为经常需要做的事情.什么是patch?简单来讲,patch中存储的是你对代码的修改,生成patch就是记录 ...

  6. My Stuck in C++

    My Stuck in C++ Zhong-Liang Xiang Oct. 1st, 2017 这个专题记录了对于我而言, c++迷一样的东西.

  7. ubuntu14.04 64位 安装H3C iNode客户端

    环境: OS: ubuntu14.04LTS 64位 iNode:  iNode2.40-R0162 for linux(iNode只有32位的,而且是很久以前的版本) 安装方法: 第一种: 主要参考 ...

  8. 网络流24题第一题(luogu2796飞行员配对方案)

    飞行员配对方案 二分图裸题,可以拿最大流怼. 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 ...

  9. jQuery – AJAX get() 和 post() 方法

    jQuery get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据. HTTP 请求:GET vs. POST 两种在客户端和服务器端进行请求-响应的常用方 ...

  10. Winform DevExpress控件库(三) 使用NavBarControl控件定制导航栏

    NavBarControl控件:主要作用是制作包含多个选项组并且每个组里包含多个子选项的导航栏: 位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下 ...