Planned maintenance has been done but it did not solve the problem. So work will continue on this and a new time for trying updates will be announced asap.

Axis camera RTSP with QMediaPlayer issue



  • Hi!
    I am new to Qt and would like to ask advice. I want to stream the video from an Axis A8105-E IP camera. The same RTSP stream URL works in VLC and with OpenCV. However, using the QMediaPlayer only a few frames of the video displays and then the video freezes, but audio is still coming through. An exception is thrown when debugging (in EVR!MFCreateVideoSampleAllocator). So I can access the camera, but I think there are some incompatible settings between the camera and codec used, causing the video to fail?

    Details:
    Windows 10 64-bit application
    Qt 5.13.0 using Kit Desktop MSVC2017 64 bit
    Codecs installed at the moment: K-lite codec pack Full (recommended installation)

    My mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QDebug>
    #include <QGridLayout>
    #include <QMediaPlayer>
    #include <QVideoWidget>
    
    MainWindow::MainWindow(QWidget *parent) :
    	QMainWindow(parent),
    	ui(new Ui::MainWindow)
    {
    	ui->setupUi(this);
    	setWindowTitle("RTSP test Axis camera");
    
    	QVideoWidget *_vw1 = new QVideoWidget;
    
    	QMediaPlayer *_player1 = new QMediaPlayer;
    	QGridLayout *layout = new QGridLayout;
    	layout->addWidget(_vw1);
    
    	QWidget *win = new QWidget();
    	win->setLayout(layout);
    	setCentralWidget(win);
    
    	_player1->setVideoOutput(_vw1);
    
    	_player1->setMedia(QUrl("rtsp://username:password@XXX.XXX.XXX.XXX/axis-media/media.amp?videocodec=h264&resolution=640x480"));    //XXX = ip address
    
    	_vw1->setGeometry(100,100,640,480);
    	_vw1->show();
    
    	_player1->play();
    
    }
    
    MainWindow::~MainWindow()
    {
    	delete ui;
    }
    

    Can you please provide any guidance/recommendations based on experience where Axis cameras have been integrated with Qt on Windows? I am happy to try a different codec if you can recommend any known to work.

    Thank you for your help!


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Since you have it already running with VLC, you might want to consider using the VLC-Qt project that integrates both together.



  • @sgaist said in Axis camera RTSP with QMediaPlayer issue:

    welcome to devnet,
    Since you have it already running with VLC, you might want to consider using the VLC-Qt project that integrates both togethe

    Hi, thanks for your response. I did try that, I started to follow these instructions http://derekmolloy.ie/custom-video-streaming-player-using-libvlc-and-qt/ but soon got derailed. I downloaded the latest version from https://github.com/vlc-qt/vlc-qt/releases and tried to follow these steps to build with MSVC2017 https://github.com/vlc-qt/vlc-qt/issues/239 (as it is one of my requirements to use 64-bit MSVC 2017), but at the nmake step I got fatal errors and did not know how to continue.

    I also wanted to try this https://download.videolan.org/pub/videolan/x264/binaries/win64/ as I think it is the codec used by VLC for my purposes, but I don't know how to install it, nothing happens when I click on the .exe file.

    I will greatly appreciate any further guidance.


  • Lifetime Qt Champion

    What exact error did you get ?



  • @sgaist said in Axis camera RTSP with QMediaPlayer issue:

    ou might want to consider using the VLC-Qt project that integrates both together.

    Hi, thank you for your response. The inital errors I got when posting the previous message has been resolved - the header files weren't present in the vlc download. But now I have different errors.

    When using nmake I got this error: module machine type x64 conflicts with target machine type x86. So I know the problem is that mismatch, but I haven't been able to solve it.

    Then I also tried to use ninja but got this error: FindDirstFileExA(C:/qt/vlc-3.0.8-win64/vlc-3.0.8): The filename, directory name, or volume label syntax is incorrect. I also haven't been able to solve that yet.

    Thanks!


  • Lifetime Qt Champion

    Looks like you are trying to link against something built for 64 bit while building your application is built in 32bits.


Log in to reply