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




通过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

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

利用VFW在Delphi中开发视频捕获程序

摘要:许多关于视频的软件(如视频会议.可视电话等)开发都应用于视频捕获技术.微软为软件开发人员提供了一个专门用于视频捕获的VFW SDK,从而为在Windows系统中实现视频捕获提供了标准的接口,并大大降低了程序的开发难度.由于VFW SDK只有VC和VB版,没有Delphi版,因此需要在Delphi中一一声明DLL中的各个函数和变量.文中详细介绍了如何利用VFW在Delphi中开发视频捕获程序的步骤,同时给出了程序实例. 1 引言 视频捕获与实时处理是目前图像处理系统中最关键的技术之一,能否准

win7旗舰版中播放视频导致CUP爆表该怎么办

win7旗舰版中播放视频很容易就导致CPU占用过高的问题是很多用户都感到特别闹心的,有时候甚至超过90%的CPU占用率,大家都知道CPU值越高对电脑的硬件伤害越大的,这对于似电脑如二老婆的用户们来说何其的心痛,而播放视频CPU占用过高又该如何是好?今天小编就给大家分析下雨林木风高win7旗舰版播放视频CPU占用过的解决措施,具体如下: 步骤一.点击"开始--所有程序--Windows Medie Player". 步骤二.在打开的Windows Medie Player播放器中,在菜单

win7使用360安全浏览器在网页中播放视频出现花屏怎么办

  win7使用360安全浏览器在网页中播放视频出现花屏怎么办?windows操作系统自带IE浏览器,但是一些win7 64位系统用户觉得IE浏览器使用不习惯,下载安装360安全卫士,在使用360安全卫士打开网页播放视频的时候出现花屏,视频根本没办法观看,怎么办呢?出现这样的情况只需要用360浏览器修复一下即可解决,下面来看看具体的解决方法. 具体步骤: 1.在浏览器的底部,我们可以看到"加速器"."下载"等字样,点击"加速器"左侧的"

ios-怎么从文件目录中播放视频

问题描述 怎么从文件目录中播放视频 应用中存储视频的名字是'video2.MOV',现在要播放出了问题. 因为无法从文件中获取. -(void)playVideo:(NSTimer *)theTimer { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIn

编码-关于HTML5中播放视频的问题

问题描述 关于HTML5中播放视频的问题 我在iOS录屏,然后吧视频文件导出来后,放在服务端,HTML5访问时发现结果不一样: 1.Android/Window:视频是反过来的 2.iOS:视频是正常的 在Window上用Quicktime是正常的,但是用其他播放器播放,视频也是倒过来的, 请问这个怎么解决,怎么让其在Android/window下访问时播放正常,好像是编码的格式? 这是我的写法: 解决方案 Your browser does not support the video tag.

asp net 视频-ASP.NET中怎么实现在自己网站中播放视频

问题描述 ASP.NET中怎么实现在自己网站中播放视频 要求既可以上传本地的视频,也可以支持播放视频网站上的视频,比如直接引用优酷的地址.最好支持多种格式的视频 解决方案 加载好播放器代码后,把src给成视频的url应该就可以了吧

使用Aliplayer在微信中播放视频的正确姿势

本文作者:沐钦 微信播放最大坑 h5页面分享到微信上播放视频,最大的坑就是在Android手机上,X5浏览器会劫持Video标签用播放器弹出全屏播放,处于最上层,覆盖DOM元素,而且播放完毕时,会出现广告视频,比如: 同层播放 X5浏览器为了解决覆盖DOM元素的问题,提出了一个同层播放的概念,通俗一点讲就是视频播放还是要弹出全屏的,但是视频可以不覆盖DOM元素,可以和视频在同一层,虽然这方案有点别扭,但总算解决了覆盖DOM元素的问题,特别是对于H5直播来说非常重要. 同层播放的实现 虽然X5提供

Silverlight实用窍门系列:36.Silverlight中播放视频和打印文档【附带源码实例】

在silverlight实际项目中时常会需要播放视频和打印文档,在本节中我们将制作一个最简单的播放视频和打印文档的实例. 一.播放WMV视频 首先我们创建一个Silverlight应用程序SLShowVideo,然后放一个示例Wmv视频在SLShowVideo.web项目的根目录下面. 然后我们在Xaml文档中放入一个MediaElement控件,并写入以下代码: <MediaElement Height="377" HorizontalAlignment="Left&

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

1背景 这几天一老友要求我做个小软件,在WinForm播放视频.印象中微软有个WM控件直接可以使用,晚上研究下 2实现方式 2.1微软草根 最简单的方式,是直接使用微软的WM控件,也是通过COM方式集成进来.操作步骤如下 l 工具箱引用 n 在工具箱中新建一Tab页面,命名为Windows Media Player(随意命名).创建成功后,再右键选中该面板,如下图所示 n 选中Com面板,找到如下图所示控件,引用即可 n 引用成功后,如下图所示.工具箱中已存在此控件,直接将此控件拖至页面中即可