Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Can't extract last 2 frame #7

Open
Labels
bugSomething isn't working.
@timothyhalim

Description

Get started

Description

Hi @cainmagi

When I try to extract last 2 frames of a video it return None

Here is the code used :

from PySide2.QtWidgets import QWidget, QLabel, QVBoxLayout, QApplication, QSlider
from PySide2.QtGui import QImage, QPixmap
from PySide2.QtCore import Qt
import mpegCoder
mpegCoder.setGlobal(dumpLevel=0)
class Player(QWidget):
 def __init__(self, parent=None):
 super(Player, self).__init__(parent)
 self._layout = QVBoxLayout(self)
 self.image = QLabel()
 self.slider = QSlider(Qt.Horizontal)
 self.slider.valueChanged.connect(self.extract_frame)
 self._layout.addWidget(self.image)
 self._layout.addWidget(self.slider)
 self.frames = []
 self.open_file()
 
 def close(self):
 self.decoder.clear()
 return super(Player, self).close()
 
 def open_file(self):
 self.decoder = mpegCoder.MpegDecoder()
 self.decoder.setParameter(nthread=4)
 opened = self.decoder.FFmpegSetup(r"30.mp4")
 
 if opened:
 duration = self.decoder.getParameter("duration")
 fps = self.decoder.getParameter("avgFrameRate")
 frameCount = duration*fps
 print("Video frame count is", frameCount)
 self.slider.setRange(0, frameCount-1) # -1 since start from 0
 
 self.extract_frame(0)
 
 def extract_frame(self, frame):
 print(frame)
 p = self.decoder.ExtractFrame(frame, 1)
 
 data = p[0].data
 height = p[0].shape[0]
 width = p[0].shape[1]
 channel = p[0].shape[2]
 pixmap = QPixmap.fromImage(QImage(data, width, height, channel*width, QImage.Format_RGB888))
 self.image.setPixmap(pixmap)
 
 
if __name__ == "__main__":
 import sys
 app = QApplication(sys.argv)
 p = Player()
 p.show()
 app.exec_()

You can change the frame by changing the slider

Here is the video used, 10sec/300frame video @30fps
the time code should be from 00:00 to 09:29
beeping every 1 sec/ 30 frame

30.mp4

Not really sure if this is a bug or if I'm doing something wrong

To Reproduce

  1. Run the code
  2. Change the slider
  3. Error occur when extracting last 2 frame

Traceback

No response

Behaviors

  1. The expected behaviors: able to extract every frame of the video
  2. The actual behaviors: unable to extract last 2 frame of the video

Screenshots

No response

OS

Windows 10

Python version

3.9

numpy version

1.23.1

mpegCoder version

3.2.4

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working.

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /