Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am new to Qt, I only know the basics: create interfaces and connect slots. In a few words, my knowledge is not deep at all.

I need to open a video file and capture all of its frames to get the R, G, B channels and, later on, process optical flow (this is already done) frame to frame to finally represent it on a window.

Is it possible to get the video frames with Qt? I have researched a lot but not found anything conclusive.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
783 views
Welcome To Ask or Share your Answers For Others

1 Answer

You can use QMediaPlayer to achieve this.

  1. Instantiate the QMediaPlayer.
  2. Subclass the QAbstractVideoSurface.
  3. Set your implementation as the output for the media player via QMediaPlayer::setVideoOutput.
  4. Feed the media player the needed file and eventually it will start calling QAbstractVideoSurface::present(const QVideoFrame & frame) on your implementation of QAbstractVideoSurface if the video was loaded successfully. Then you can access the channels and everything from the QVideoFrame and draw the frame on a widget.

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...