当前位置: 代码网 > it编程>编程语言>C/C++ > Qt音视频功能实现方法详解

Qt音视频功能实现方法详解

2024年09月06日 C/C++ 我要评论
qt 音视频在 qt 中,音频主要是通过qsound类来实现。但是需要注意的是qsound类只支持播放wav格式的音频文件。也就是说如果想要添加音频效果,那么首先需要将非wav格式的音频文件转换为wa

qt 音视频

在 qt 中,音频主要是通过 qsound 类来实现。但是需要注意的是 qsound 类只支持播放 wav 格式的音频文件。也就是说如果想要添加音频效果,那么首先需要将非 wav 格式的音频文件转换为 wav 格式。

通过帮助手册查看 qsound 类如下:

注意:使用 qsound 类时,需要添加模块:multimedia

1. qt 音频

核心 api :

				play() 开始或继续播放当前源

示例代码:

1、首先在 .pro 文件中加入模块:

2、界面如下:

3、引入声音文件:

4、widget.cpp 文件如下:

			#include <qsound>
			
			widget::widget(qwidget *parent)
			    : qwidget(parent)
			    , ui(new ui::widget)
			{
			    ui->setupui(this);
			
			    // 实例化对象
			    qsound* sound = new qsound(":/sound.wav", this);
			
			    connect(ui->pushbutton, &qpushbutton::clicked, [=](){
			        sound->play();  // 播放
			    });
			}

2. qt 视频

在 qt 中,视频播放的功能主要是通过 qmediaplayer 类和 qvideowidget 类来实现。在使用这两个类时要添加对应的模块 multimedia 和 multimediawidgets.

核心 api:

            setmedia() 设置当前媒体源。
            setvideooutput() 将qvideowidget视频输出附加到媒体播放器。如果媒体播放器已经附加了视频输出,将更换⼀个新的。

示例代码:

1、首先在 .pro 文件中添加模块:

2、widget.h 程序如下:

			#include <qwidget>
			#include <qhboxlayout>  // 水平布局
			#include <qvboxlayout>  // 垂直布局
			#include <qvideowidget> // 显示视频
			#include <qmediaplayer> // 播放声音
			#include <qpushbutton>  // 按钮
			#include <qstyle>       // 设置图标
			#include <qfiledialog>  // 选择文件/文件夹
			
			qt_begin_namespace
			namespace ui { class widget; }
			qt_end_namespace
			
			class widget : public qwidget
			{
			    q_object
			
			public:
			    widget(qwidget *parent = nullptr);
			    ~widget();
			    
			public slots:
			    void closevideo();
			
			private:
			    qmediaplayer* mediaplayer;
			    qvideowidget* videowidget;
			    qvboxlayout* vbox;
			    
			    // 创建两个按钮:选择视频按钮和开播放按钮
			    qpushbutton* choosebtn, *playbtn;
			
			private:
			    ui::widget *ui;
			};

3、widget.cpp 程序如下:

			#include <qmediaplayer>
			#include <qslider>
			
			widget::widget(qwidget *parent)
			    : qwidget(parent)
			{
			    // 对象实例化
			    mediaplayer = new qmediaplayer(this);
			    videowidget = new qvideowidget(this);
			
			    // 设置播放画面的窗口
			    videowidget->setminimumsize(600, 600);
			
			    // 实例化窗口布局 --- 垂直布局
			    this->vbox = new qvboxlayout(this);
			    this->setlayout(this->vbox);
			
			    // 实例化选择视频按钮
			    choosebtn = new qpushbutton("选择视频", this);
			
			    // 实例化播放按钮
			    playbtn = new qpushbutton(this);
			
			    // 设置图标代替文件
			    playbtn->seticon(this->style()->standardicon(qstyle::sp_mediaplay));
			
			    // 实例化一个水平布局,将以上控件放入水平布局中
			    qhboxlayout* hbox = new qhboxlayout;
			
			    // 添加控件
			    hbox->addwidget(choosebtn);
			    hbox->addwidget(playbtn);
			
			    // 将播放窗口和水平布局都添加到垂直布局中
			    vbox->addwidget(videowidget);
			
			    // 布局中添加布局
			    vbox->addlayout(hbox);
			
			    // 将选择视频对应的按钮和槽函数进行关联
			    connect(choosebtn, &qpushbutton::clicked, this, &widget::choosevideo);
			}
			
			void widget::choosevideo()
			{
			    // 选择视频,返回一个播放视频的名字
			    qstring name = qfiledialog::getsavefilename(this, "选择视频", ".", "wmv(*.wmv)");
			
			    // 设置媒体声音
			    mediaplayer->setmedia(qurl(name));
			
			    // 输出视频画面
			    mediaplayer->setvideooutput(videowidget);
			
			    // 播放
			    mediaplayer->play();
			}

总结 

到此这篇关于qt音视频功能实现的文章就介绍到这了,更多相关qt音视频内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com