aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--components/video.py21
-rw-r--r--main.py4
-rw-r--r--video_thread.py20
3 files changed, 22 insertions, 23 deletions
diff --git a/components/video.py b/components/video.py
index b009baa..422b952 100644
--- a/components/video.py
+++ b/components/video.py
@@ -36,8 +36,6 @@ class Component(__base__.Component):
frame = Image.new("RGBA", (self.width, self.height), (0, 0, 0, 0))
if frame1:
im = Image.open(frame1)
- self.realSize = im.size
- im = self.resize(im)
frame.paste(im)
if not self.working:
self.staticFrame = frame
@@ -61,11 +59,9 @@ class Component(__base__.Component):
return self.staticFrame
# make a new frame
- width, height = self.realSize
- image = numpy.fromstring(byteFrame, dtype='uint8')
- image = image.reshape((width, height, 4))
- image = Image.frombytes('RGBA', (width, height), image, 'raw', 'RGBa')
- image = self.resize(image)
+ width = self.width
+ height = self.height
+ image = Image.frombytes('RGBA', (width, height), byteFrame)
self.staticFrame = image
return self.staticFrame
@@ -80,7 +76,7 @@ class Component(__base__.Component):
def pickVideo(self):
imgDir = self.settings.value("backgroundDir", os.path.expanduser("~"))
filename = QtGui.QFileDialog.getOpenFileName(self.page,
- "Choose Video", imgDir, "Video Files (*.mp4)")
+ "Choose Video", imgDir, "Video Files (*.mp4 *.mov)")
if filename:
self.settings.setValue("backgroundDir", os.path.dirname(filename))
self.page.lineEdit_video.setText(filename)
@@ -97,10 +93,11 @@ class Component(__base__.Component):
# get a preview frame
subprocess.call( \
- '%s -i "%s" -y %s "%s"' % ( \
+ '%s -i "%s" -y %s %s "%s"' % ( \
self.parent.core.FFMPEG_BIN,
self.videoPath,
'-ss 10 -vframes 1',
+ '-filter:v scale='+str(self.width)+':'+str(self.height),
os.path.join(self.parent.core.tempDir, filename)
),
shell=True
@@ -114,16 +111,18 @@ class Component(__base__.Component):
command = [
self.parent.core.FFMPEG_BIN,
+ '-thread_queue_size', '512',
'-i', self.videoPath,
'-f', 'image2pipe',
'-pix_fmt', 'rgba',
+ '-filter:v', 'scale='+str(self.width)+':'+str(self.height),
'-vcodec', 'rawvideo', '-',
]
# pipe in video frames from ffmpeg
in_pipe = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, bufsize=10**8)
- width, height = self.realSize
- self.chunkSize = 4*width*height
+ #width, height = self.realSize
+ self.chunkSize = 4*self.width*self.height
return in_pipe
diff --git a/main.py b/main.py
index 637ece8..36fc989 100644
--- a/main.py
+++ b/main.py
@@ -243,7 +243,7 @@ class Main(QtCore.QObject):
inputDir = self.settings.value("inputDir", expanduser("~"))
fileName = QtGui.QFileDialog.getOpenFileName(self.window,
- "Open Music File", inputDir, "Music Files (*.mp3 *.wav *.ogg *.flac)");
+ "Open Music File", inputDir, "Music Files (*.mp3 *.wav *.ogg *.fla *.aac)");
if not fileName == "":
self.settings.setValue("inputDir", os.path.dirname(fileName))
@@ -253,7 +253,7 @@ class Main(QtCore.QObject):
outputDir = self.settings.value("outputDir", expanduser("~"))
fileName = QtGui.QFileDialog.getSaveFileName(self.window,
- "Set Output Video File", outputDir, "Video Files (*.mkv *.mp4)");
+ "Set Output Video File", outputDir, "Video Files (*.mp4 *.mov *.mkv *.avi *.webm *.flv)");
if not fileName == "":
self.settings.setValue("outputDir", os.path.dirname(fileName))
diff --git a/video_thread.py b/video_thread.py
index 0542bc2..ac4162c 100644
--- a/video_thread.py
+++ b/video_thread.py
@@ -37,20 +37,19 @@ class Worker(QtCore.QObject):
def renderNode(self):
while not self.stopped:
i = self.compositeQueue.get()
-
- frame = Image.new(
- "RGBA",
- (self.width, self.height),
- (0, 0, 0, 0)
- )
+ frame = None
for compNo, comp in reversed(list(enumerate(self.components))):
if compNo in self.staticComponents and self.staticComponents[compNo] != None:
- frame = Image.alpha_composite(frame, self.staticComponents[compNo])
+ if frame is None:
+ frame = self.staticComponents[compNo]
+ else:
+ frame = Image.alpha_composite(frame, self.staticComponents[compNo])
else:
- frame = Image.alpha_composite(frame, comp.frameRender(compNo, i[0], i[1]))
-
- # frame.paste(compFrame, mask=compFrame)
+ if frame is None:
+ frame = comp.frameRender(compNo, i[0], i[1])
+ else:
+ frame = Image.alpha_composite(frame, comp.frameRender(compNo, i[0], i[1]))
self.renderQueue.put([i[0], frame])
self.compositeQueue.task_done()
@@ -98,6 +97,7 @@ class Worker(QtCore.QObject):
ffmpegCommand = [
self.core.FFMPEG_BIN,
+ '-thread_queue_size', '512',
'-y', # (optional) means overwrite the output file if it already exists.
'-f', 'rawvideo',
'-vcodec', 'rawvideo',