【问题标题】:How to capture video from camera via ethernet socket如何通过以太网插座从相机捕获视频
【发布时间】:2012-08-10 01:05:49
【问题描述】:

我需要从插入我的 PC 以太网插座的实时摄像头捕捉视频。我首先使用 Phonon 从系统中的文件中捕获视频。它工作正常。然后,我创建了一个套接字来读取视频。在这里,我不知道如何获取缓冲数据并将其设置为我的声子视频的源!如果有人可以帮助我,我将不胜感激。

这是阅读视频的代码:

void PlayVideo::rollOn()
   {
   media = new Phonon::MediaObject(movieLabel);
   media->setCurrentSource(Phonon::MediaSource(QString("/home/saman/4.7/phonon_test/sample.mp4")));
   videoPlayer = new Phonon::VideoPlayer(Phonon::VideoCategory, movieLabel);
   videoPlayer->setFixedSize(QSize(400, 300));
   videoPlayer->show();
   connect(videoPlayer, SIGNAL(finished()), videoPlayer, SLOT(deleteLater()));
   videoPlayer->play(media->currentSource());
   }

这就是我在代码中添加套接字的方式:

  void PlayVideo::rollOn()
   {
   udpSocketin = new QUdpSocket(this);
   udpSocketin->bind(localPort);
   connect(udpSocketin, SIGNAL(readyRead()),this, SLOT(readDatagrams()));
   QDataStream out(&datagramout, QIODevice::WriteOnly);
   out.setVersion (QDataStream::Qt_4_7);
   timer2 = new QTimer(this);
   connect(timer2, SIGNAL(timeout()), this, SLOT(playbuff()));
   media = new Phonon::MediaObject(movieLabel);
   media->setCurrentSource(Phonon::MediaSource(QString("/home/saman/4.7/phonon_test/sample.mp4")));

   //media->setCurrentSource (Phonon::MediaSource());
   videoPlayer = new Phonon::VideoPlayer(Phonon::VideoCategory, movieLabel);     
   videoPlayer->setFixedSize(QSize(400, 300));     
   videoPlayer->show();     
   connect(videoPlayer, SIGNAL(finished()), videoPlayer, SLOT(deleteLater()));     
   videoPlayer->play(media->currentSource());
   }    
   void PlayVideo::readDatagrams()
   {
   if(udpSocketin->hasPendingDatagrams ())
   {
   datagramin.resize (udpSocketin->pendingDatagramSize ());
   qint64 receiveBytes = udpSocketin->readDatagram (datagramin.data (), datagramin.size ));
   if(receivedBytes <= 0)
   {
   qDebug("receivedBytes <= 0");
   }    

} }

【问题讨论】:

  • 以后,您可以高亮显示您的代码并按 ctrl-k 以获取 stackOverFlow 来制作代码块(假设您在此处为每行设置了 4 个空格)。

标签: c++ qt


【解决方案1】:

您可以将数据放入QBuffer,它是QIODevice 的子类。然后,有一个接受QIODevice 的媒体源构造函数。

【讨论】:

  • 我不太确定如何解释您的问题,您的套接字是 QSocket 吗? QSocket 也实现了 QIODevice,所以你可以直接将它传递给一个 Phonon::MediaSource...
猜你喜欢
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
相关资源
最近更新 更多