C++ Qt QMediaPlayer(Rtsp客户端)检查连接到Rtsp服务器是否需要凭据
我已经使用Gstreamer编写了一个RTSP服务器,它可能有也可能没有设置连接到它的凭据。 我还使用qtqmediaplayer和qtgstreamer绑定编写了一个RTSP客户端 现在,若RTSP服务器设置了凭据,那个么我想在我的RTSP客户端中显示一个输入用户名、密码窗口。如果RTSP服务器中未设置凭据,则我不希望在客户端中显示此窗口 在我的RTSP客户端中,如何检查RTSP服务器是否需要凭据C++ Qt QMediaPlayer(Rtsp客户端)检查连接到Rtsp服务器是否需要凭据,c++,qt,gstreamer,rtsp,rtsp-client,C++,Qt,Gstreamer,Rtsp,Rtsp Client,我已经使用Gstreamer编写了一个RTSP服务器,它可能有也可能没有设置连接到它的凭据。 我还使用qtqmediaplayer和qtgstreamer绑定编写了一个RTSP客户端 现在,若RTSP服务器设置了凭据,那个么我想在我的RTSP客户端中显示一个输入用户名、密码窗口。如果RTSP服务器中未设置凭据,则我不希望在客户端中显示此窗口 在我的RTSP客户端中,如何检查RTSP服务器是否需要凭据 #include "mainwindow.h" #include "
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QInputDialog>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("Super Nova Stream Viewer");
ui->filePathText->setText("");
player = new QMediaPlayer(this);
videoWidget = new QVideoWidget(this);
player->setVideoOutput(videoWidget);
ui->horizontalLayout->addWidget(videoWidget);
connect(player, &QMediaPlayer::durationChanged, ui->durationSlider, &QSlider::setMaximum);
connect(player, &QMediaPlayer::positionChanged, ui->durationSlider, &QSlider::setValue);
connect(ui->durationSlider, &QSlider::sliderMoved, player, &QMediaPlayer::setPosition);
connect(player, &QMediaPlayer::durationChanged, ui->durationProgressBar, &QProgressBar::setMaximum);
connect(player, &QMediaPlayer::positionChanged, ui->durationProgressBar, &QProgressBar::setValue);
}
MainWindow::~MainWindow()
{
delete ui;
}
***void MainWindow::setRtspServerPath(const QString& path)***
{
ui->filePathText->setText(path);
const QUrl url = QUrl(path);
const QNetworkRequest requestRtsp1(url);
player->setMedia(requestRtsp1);
}
void MainWindow::setMediaFilePath(const QString& path)
{
ui->filePathText->setText(path);
const QUrl url = QUrl::fromLocalFile(path);
player->setMedia(url);
}
void MainWindow::on_playButton_clicked()
{
player->play();
ui->volumeSlider->setSliderPosition(player->volume());
}
void MainWindow::on_pauseButton_clicked()
{
player->pause();
}
void MainWindow::on_stopButton_clicked()
{
player->stop();
ui->volumeSlider->setSliderPosition(0);
}
void MainWindow::on_muteUnmuteButton_clicked()
{
if (player->isMuted())
{
player->setMuted(false);
ui->muteUnmuteButton->setText("Mute");
}
else
{
player->setMuted(true);
ui->muteUnmuteButton->setText("UnMute");
}
}
void MainWindow::on_volumeSlider_valueChanged(int value)
{
player->setVolume(value);
}
void MainWindow::on_actionOpenNetworkStream_triggered()
{
QString serverPath = QInputDialog::getText(this, "Rtsp Server","Rtsp Server Address");
setRtspServerPath(serverPath);
}
void MainWindow::on_actionOpenFile_triggered()
{
QString file = QFileDialog::getOpenFileName(this, "Open Media File", "", "Video files (*.mp4)");
setMediaFilePath(file);
}
void MainWindow::on_forwardButton_clicked()
{
player->setPlaybackRate(2.0);
}
void MainWindow::on_backwardButton_clicked()
{
player->setPlaybackRate(-1.0);
}
我想修改“setRtspServerPath”方法以检查RTSP服务器是否需要凭据
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QInputDialog>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("Super Nova Stream Viewer");
ui->filePathText->setText("");
player = new QMediaPlayer(this);
videoWidget = new QVideoWidget(this);
player->setVideoOutput(videoWidget);
ui->horizontalLayout->addWidget(videoWidget);
connect(player, &QMediaPlayer::durationChanged, ui->durationSlider, &QSlider::setMaximum);
connect(player, &QMediaPlayer::positionChanged, ui->durationSlider, &QSlider::setValue);
connect(ui->durationSlider, &QSlider::sliderMoved, player, &QMediaPlayer::setPosition);
connect(player, &QMediaPlayer::durationChanged, ui->durationProgressBar, &QProgressBar::setMaximum);
connect(player, &QMediaPlayer::positionChanged, ui->durationProgressBar, &QProgressBar::setValue);
}
MainWindow::~MainWindow()
{
delete ui;
}
***void MainWindow::setRtspServerPath(const QString& path)***
{
ui->filePathText->setText(path);
const QUrl url = QUrl(path);
const QNetworkRequest requestRtsp1(url);
player->setMedia(requestRtsp1);
}
void MainWindow::setMediaFilePath(const QString& path)
{
ui->filePathText->setText(path);
const QUrl url = QUrl::fromLocalFile(path);
player->setMedia(url);
}
void MainWindow::on_playButton_clicked()
{
player->play();
ui->volumeSlider->setSliderPosition(player->volume());
}
void MainWindow::on_pauseButton_clicked()
{
player->pause();
}
void MainWindow::on_stopButton_clicked()
{
player->stop();
ui->volumeSlider->setSliderPosition(0);
}
void MainWindow::on_muteUnmuteButton_clicked()
{
if (player->isMuted())
{
player->setMuted(false);
ui->muteUnmuteButton->setText("Mute");
}
else
{
player->setMuted(true);
ui->muteUnmuteButton->setText("UnMute");
}
}
void MainWindow::on_volumeSlider_valueChanged(int value)
{
player->setVolume(value);
}
void MainWindow::on_actionOpenNetworkStream_triggered()
{
QString serverPath = QInputDialog::getText(this, "Rtsp Server","Rtsp Server Address");
setRtspServerPath(serverPath);
}
void MainWindow::on_actionOpenFile_triggered()
{
QString file = QFileDialog::getOpenFileName(this, "Open Media File", "", "Video files (*.mp4)");
setMediaFilePath(file);
}
void MainWindow::on_forwardButton_clicked()
{
player->setPlaybackRate(2.0);
}
void MainWindow::on_backwardButton_clicked()
{
player->setPlaybackRate(-1.0);
}
#包括“mainwindow.h”
#包括“ui_main window.h”
#包括
#包括
#包括
主窗口::主窗口(QWidget*父窗口)
:QMainWindow(父级)
,ui(新ui::Main窗口)
{
用户界面->设置用户界面(此);
setWindowTitle(“超新星流查看器”);
ui->filePathText->setText(“”);
player=新的QMediaPlayer(此);
videoWidget=新的QVideoWidget(本);
播放器->设置视频输出(videoWidget);
用户界面->水平布局->添加小部件(视频小部件);
连接(播放器,&QMediaPlayer::durationChanged,ui->durationSlider,&QSlider::setMaximum);
连接(播放器,&QMediaPlayer::positionChanged,ui->durationSlider,&QSlider::setValue);
连接(ui->durationSlider,&QSlider::sliderMoved,player,&QMediaPlayer::setPosition);
连接(播放器,&QMediaPlayer::durationChanged,ui->durationProgressBar,&QProgressBar::setMaximum);
连接(播放器,&QMediaPlayer::positionChanged,ui->durationProgressBar,&QProgressBar::setValue);
}
MainWindow::~MainWindow()
{
删除用户界面;
}
***void主窗口::setRtspServerPath(常量QString&path)***
{
ui->filePathText->setText(路径);
常量QUrl url=QUrl(路径);
const QnetworkRequestRTSP1(url);
播放器->设置媒体(请求RTSP1);
}
void主窗口::setMediaFilePath(常量QString&path)
{
ui->filePathText->setText(路径);
const QUrl url=QUrl::fromLocalFile(路径);
播放器->设置媒体(url);
}
void主窗口::在_playButton _clicked()上
{
player->play();
用户界面->音量滑块->设置滑块位置(播放器->音量();
}
void主窗口::在暂停按钮上单击()
{
播放器->暂停();
}
void main window::在单击停止按钮时()
{
播放器->停止();
用户界面->卷滑块->设置滑块位置(0);
}
void main window::在按钮上单击()
{
如果(player->ismute())
{
player->setmute(假);
用户界面->静音按钮->设置文字(“静音”);
}
其他的
{
player->setmute(真);
用户界面->静音按钮->设置文本(“取消静音”);
}
}
void主窗口::在卷上滑动值已更改(int值)
{
播放器->设置音量(值);
}
void main window::on_actionOpenNetworkStream_triggered()
{
QString serverPath=QInputDialog::getText(这是“Rtsp服务器”、“Rtsp服务器地址”);
setRtspServerPath(serverPath);
}
void main window::on_actionOpenFile_triggered()
{
QString file=QFileDialog::getOpenFileName(这是“打开媒体文件”、“视频文件(*.mp4)”);
setMediaFilePath(文件);
}
void主窗口::在_forwardButton_clicked()上
{
球员->设置回球率(2.0);
}
void主窗口::在_backwardButton _clicked()上
{
player->setPlaybackRate(-1.0);
}