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
- Run the code
- Change the slider
- Error occur when extracting last 2 frame
Traceback
No response
Behaviors
- The expected behaviors: able to extract every frame of the video
- 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
Reactions are currently unavailable
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
30.mp4the time code should be from 00:00 to 09:29
beeping every 1 sec/ 30 frame
Not really sure if this is a bug or if I'm doing something wrong
To Reproduce
Traceback
No response
Behaviors
Screenshots
No response
OS
Windows 10
Python version
3.9
numpy version
1.23.1
mpegCoder version
3.2.4
Additional context
No response