使用 Qt 播放实时视频流

Posted

技术标签:

【中文标题】使用 Qt 播放实时视频流【英文标题】:Play a Live video Stream using Qt 【发布时间】:2014-02-22 06:09:06 【问题描述】:

下面给出的是使用 Qt 播放视频文件的代码。我不想播放视频,而是想播放来自 IP 摄像机的实时视频流。另一种方法是在 Qt 中嵌入 VLC 播放器,并提供该项目的链接here。问题是我不知道如何在 Qt 中包含播放器。那么我该如何进行呢?

#include <QApplication>
#include <QtMultimediaWidgets/QVideoWidget>
#include <QtMultimedia/QMediaPlayer>
#include <QtMultimedia/QMediaPlaylist>
#include <QFile>
#include <QHBoxLayout>
#include "DemoPlayer.h"
int main(int argc, char *argv[])

    QApplication a(argc, argv);

    QWidget *widget=new QWidget;
    widget->resize(400,300);

    QMediaPlayer *player=new QMediaPlayer;
    QVideoWidget *vw= new QVideoWidget;
    QHBoxLayout *layout=new QHBoxLayout;

    layout->addWidget(vw);
    widget->setLayout(layout);
    player->setVideoOutput(vw);
    player->setMedia(QUrl::fromLocalFile("C:/Users/Administrator/Desktop/1minute.mp4"));
    player->play();
    widget->show();
    qDebug()<<player->availableMetaData()<<player->currentMedia().canonicalUrl();

    return a.exec();

【问题讨论】:

上面的代码工作得很好......请让你的问题更清楚一点 @Metoo 现在检查问题。 你试过LibVLC吗wiki.videolan.org/LibVLC_SampleCode_Qt @Metoo 我有,无法将其添加到应用程序,我是 Qt 新手,所以我不知道该怎么做。如果您知道如何添加它,请告诉我如何添加它,或者如果有任何教程告诉我,因为我找不到任何。 您是否在支持 X11 的系统上,即 Linux、Mac(在某种程度上)?顺便说一句,metoo 提供的链接本身已经是一个教程...... 【参考方案1】:

遵循此代码。您可以使用有效的窗口 id 将小部件嵌入到另一个小部件中。 How to show output video of other application in Qt? 你可以使用 qx11embedwidget 和 qx11embedwidgetcontainer QX11EmbedWidget and QX11EmbedContainer

【讨论】:

链接打不开。你确定它是一个有效的链接吗? 只检查qx11EmbedWidget和QX11EmbedContainer..你能打开堆栈溢出线程吗..? 我可以打开主题,但无法打开答案中提供的链接。这就是问题所在。 对我来说也是。但您可以开始搜索 QX11EmbedWidget。您正在寻找的所需小部件容器 QX11EmbedWidget 类提供了一个 XEmbed 客户端小部件。 XEmbed 是一种 X11 协议,支持将一个小部件从一个应用程序嵌入到另一个应用程序。 XEmbed 客户端小部件是嵌入到容器中的窗口。容器是嵌入(或吞噬)外部应用程序的图形位置。

以上是关于使用 Qt 播放实时视频流的主要内容,如果未能解决你的问题,请参考以下文章

使用 Qt MultiMedia 和 Widgets 播放网络流媒体视频

Qt推流程序自动生成网页远程查看实时视频流(视频文件/视频流/摄像头/桌面转成流媒体rtmp+hls+webrtc)

VoIP:如何在 Qt 多媒体中从摄像头捕获实时音频/视频流字节?

基于FFmpeg+rtsp读取摄像头实时图像

使用手机摄像头实现视频监控实时播放

Qt编写的项目作品12-简易视频播放器