Я пытаюсь транслировать видео через tcp на основе демона gstreamer. Я создал конвейер, который передает видео через TCP-сокет, как показано ниже:
pipeline_create p videotestsrc is-live=true pattern="ball" ! x264enc ! queue ! mpegtsmux ! tcpserversink host=0.0.0.0 port=12345
Теперь я разрабатываю приложение для видеоплеера в Qt, которое будет получать указанный выше видеопоток и воспроизводить его. Код приведен ниже.
#include "dialog.h"
#include <QApplication>
#include<QMediaPlayer>
#include<QVideoWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//Dialog w;
//w.show();
QMediaPlayer *player=new QMediaPlayer;
QVideoWidget *vw=new QVideoWidget;
player->setVideoOutput(vw);
QUrl *url=new QUrl("http://127.0.0.1:12345");
QMediaContent *mc=new QMediaContent(*url);
player->setMedia(*mc);
vw->setGeometry(100,100,300,400);
vw->show();
player->play();
qDebug()<<player->state();
return a.exec();
}
Сначала, когда я получил код ошибки 0x80040266, я установил код K-lite c и фильтры LAV , а потом только первый когда мой видеоплеер смог транслировать и воспроизводить видео, как показано.
Но затем, когда я снова пытаюсь воспроизвести свой видеоплеер, он показывает ошибку ниже
DirectShowPlayerService::doRender: Unresolved error code 0x80040266 (IDispatch error #102)
Может ли кто-нибудь помочь мне с этим?