33 from PyQt5.QtCore import QObject, QThread, pyqtSlot, pyqtSignal, QCoreApplication
36 from classes.app
import get_app
37 from classes.logger
import log
38 from classes
import settings
43 import simplejson
as json
52 self.parent.movePlayhead(current_frame)
55 if self.worker.player.Mode() == openshot.PLAYBACK_PLAY
and current_frame >= self.worker.timeline_length
and self.worker.timeline_length != -1:
57 self.parent.actionPlay.trigger()
58 self.worker.timeline_length = -1
62 log.info(
'onModeChanged')
64 @pyqtSlot(object, object)
65 def Init(self, parent, timeline, video_widget):
75 self.worker.Init(parent, timeline, video_widget)
80 self.background.started.connect(self.worker.Start)
81 self.worker.finished.connect(self.background.quit)
84 self.parent.previewFrameSignal.connect(self.worker.previewFrame)
85 self.parent.refreshFrameSignal.connect(self.worker.refreshFrame)
86 self.parent.LoadFileSignal.connect(self.worker.LoadFile)
87 self.parent.PlaySignal.connect(self.worker.Play)
88 self.parent.PauseSignal.connect(self.worker.Pause)
89 self.parent.SeekSignal.connect(self.worker.Seek)
90 self.parent.SpeedSignal.connect(self.worker.Speed)
91 self.parent.StopSignal.connect(self.worker.Stop)
95 self.background.start()
102 position_changed = pyqtSignal(int)
103 mode_changed = pyqtSignal(object)
104 finished = pyqtSignal()
106 @pyqtSlot(object, object)
107 def Init(self, parent, timeline, videoPreview):
130 log.info(
"QThread Start Method Invoked")
153 QCoreApplication.processEvents()
162 QCoreApplication.processEvents()
165 log.info(
'exiting thread')
169 log.info(
"initPlayer")
173 self.player.SetQWidget(sip.unwrapinstance(self.
videoPreview))
175 self.videoPreview.connectSignals(self.
renderer)
185 log.info(
"previewFrame: %s" % number)
190 log.info(
"self.player.Position(): %s" % self.player.Position())
195 log.info(
"refreshFrame")
198 self.parent.LoadFileSignal.emit(
'')
201 self.
Seek(self.player.Position())
203 log.info(
"self.player.Position(): %s" % self.player.Position())
213 log.info(
"LoadFile %s" % path)
225 log.info(
"Set timeline reader again in player: %s" % self.
timeline)
236 ext = os.path.splitext(path)
243 fps = project.get([
"fps"])
244 width = project.get([
"width"])
245 height = project.get([
"height"])
246 sample_rate = project.get([
"sample_rate"])
247 channels = project.get([
"channels"])
248 channel_layout = project.get([
"channel_layout"])
251 self.
clip_reader = openshot.Timeline(width, height, openshot.Fraction(fps[
"num"], fps[
"den"]), sample_rate, channels, channel_layout)
252 self.clip_reader.info.channel_layout = channel_layout
253 self.clip_reader.info.has_audio =
True
254 self.clip_reader.info.has_video =
True
255 self.clip_reader.info.video_length = 999999
256 self.clip_reader.info.duration = 999999
257 self.clip_reader.info.sample_rate = sample_rate
258 self.clip_reader.info.channels = channels
262 new_clip = openshot.Clip(path)
263 self.clip_reader.AddClip(new_clip)
265 log.error(
'Failed to load media file into video player: %s' % path)
272 self.previous_clips.append(new_clip)
273 self.previous_clip_readers.append(self.
clip_reader)
276 self.clip_reader.Open()
282 previous_clip = self.previous_clips.pop(0)
283 previous_clip.Close()
284 previous_reader = self.previous_clip_readers.pop(0)
285 previous_reader.Close()
288 self.
Seek(seek_position)
292 def Play(self, timeline_length):
298 if self.parent.initialized:
306 if self.parent.initialized:
314 if self.parent.initialized:
322 if self.parent.initialized:
323 self.player.Seek(number)
330 if self.parent.initialized:
331 self.player.Speed(new_speed)
def refreshFrame
Refresh a certain frame.
def Stop
Stop the video player and terminate the playback threads.
def get_app
Returns the current QApplication instance of OpenShot.
def Pause
Pause the video player.
def Start
This method starts the video player.
QT Player Worker Object (to preview video on a separate thread)
def Play
Start playing the video player.
def previewFrame
Preview a certain frame.
def kill
Kill this thread.
Class which communicates with the PlayerWorker Class (running on a separate thread) ...
def Seek
Seek to a specific frame.
def Speed
Set the speed of the video player.
def LoadFile
Load a media file into the video player.
def get_settings
Get the current QApplication's settings instance.