Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormeta-androcto <meta.androcto1@gmail.com>2017-04-15 07:25:27 +0300
committermeta-androcto <meta.androcto1@gmail.com>2017-04-15 07:25:27 +0300
commite9f96e1d93a50e8b1a0faa360af63738956737cb (patch)
tree40ae98cc0c342f7a5777dc9ba0263de9d57d263c /kinoraw_tools/datamosh.py
parent725dbe4d410d5afbd903b1d6464854fd25166913 (diff)
Initial commit kinoraw_tools by Carlos Padial T51109 T50357
Diffstat (limited to 'kinoraw_tools/datamosh.py')
-rw-r--r--kinoraw_tools/datamosh.py194
1 files changed, 194 insertions, 0 deletions
diff --git a/kinoraw_tools/datamosh.py b/kinoraw_tools/datamosh.py
new file mode 100644
index 00000000..0dc9d015
--- /dev/null
+++ b/kinoraw_tools/datamosh.py
@@ -0,0 +1,194 @@
+import bpy, os
+from bpy.props import IntProperty, StringProperty, BoolProperty
+import subprocess
+
+from . import functions
+
+
+proxy_qualities = [ ( "1", "25%", "" ), ( "2", "50%", "" ),
+ ( "3", "75%", "" ), ( "4", "100%", "" ),
+ ( "5", "none", "" )]
+
+
+# functions
+
+def createdatamosh(context, strip):
+ preferences = context.user_preferences
+ prefs = preferences.addons[__package__].preferences
+
+ fileinput = bpy.path.abspath(strip.filepath)
+ fileoutput = fileinput.rpartition(".")[0]+"_datamosh.avi"
+
+ if prefs.all_keyframes:
+ command = "datamosh '{}' -a -o '{}'".format(fileinput, fileoutput)
+ else:
+ command = "datamosh '{}' -o '{}'".format(fileinput, fileoutput)
+ print(command)
+ os.system(command)
+ return fileoutput
+
+def createavi(context, strip):
+ preferences = context.user_preferences
+ prefs = preferences.addons[__package__].preferences
+
+ fileinput = bpy.path.abspath(strip.filepath)
+ fileoutput = fileinput.rpartition(".")[0]+"_.avi"
+
+ command = "ffmpeg -i '{}' -vcodec copy '{}'".format(fileinput, fileoutput)
+
+ print(command)
+ os.system(command)
+ return fileoutput
+
+def createavimjpeg(context, strip):
+ preferences = context.user_preferences
+ prefs = preferences.addons[__package__].preferences
+
+ fileinput = bpy.path.abspath(strip.filepath)
+ fileoutput = fileinput.rpartition(".")[0]+"_mjpeg.avi"
+
+ command = "ffmpeg -i '{}' -vcodec mjpeg -q:v 1 '{}'".format(fileinput, fileoutput)
+
+ print(command)
+ os.system(command)
+ return fileoutput
+
+
+
+
+# classes
+
+class CreateAvi(bpy.types.Operator):
+ """ """
+ bl_idname = "sequencer.createavi"
+ bl_label = "create avi file"
+
+ @classmethod
+ def poll(self, context):
+ strip = functions.act_strip(context)
+ scn = context.scene
+ if scn and scn.sequence_editor and scn.sequence_editor.active_strip:
+ return strip.type in ('MOVIE')
+ else:
+ return False
+
+ size = IntProperty(
+ name='proxysize',
+ default=1)
+ bl_options = {'REGISTER', 'UNDO'}
+
+ def execute(self, context):
+
+ preferences = context.user_preferences
+ strips = functions.get_selected_strips(context)
+
+ for strip in strips:
+ #deselect all other strips
+ for i in strips: i.select = False
+ #select current strip
+ strip.select = True
+ if strip.type == "MOVIE":
+ if self.size == 1:
+ fileoutput = createavi(context, strip)
+ elif self.size == 2:
+ fileoutput = createavimjpeg(context, strip)
+ strip.filepath = fileoutput
+ #select all strips again
+ for strip in strips:
+ try:
+ strip.select=True
+ except ReferenceError:
+ pass
+ bpy.ops.sequencer.reload()
+ return {'FINISHED'}
+
+
+class CreateDatamosh(bpy.types.Operator):
+ """ """
+ bl_idname = "sequencer.createdatamosh"
+ bl_label = "create datamosh"
+
+ @classmethod
+ def poll(self, context):
+ strip = functions.act_strip(context)
+ scn = context.scene
+ if scn and scn.sequence_editor and scn.sequence_editor.active_strip:
+ return strip.type in ('MOVIE')
+ else:
+ return False
+
+ def execute(self, context):
+
+ preferences = context.user_preferences
+ prefs = preferences.addons[__package__].preferences
+ strips = functions.get_selected_strips(context)
+
+ for strip in strips:
+ #deselect all other strips
+ for i in strips: i.select = False
+ #select current strip
+ strip.select = True
+ if strip.type == "MOVIE":
+ fileoutput = createdatamosh(context, strip)
+ if prefs.load_glitch:
+ strip.filepath = fileoutput
+ #select all strips again
+ for strip in strips:
+ try:
+ strip.select=True
+ except ReferenceError:
+ pass
+ bpy.ops.sequencer.reload()
+ return {'FINISHED'}
+
+
+class CreateGlitchToolPanel(bpy.types.Panel):
+ """ """
+ bl_label = "Glitch Tools"
+ bl_idname = "OBJECT_PT_GlitchTool"
+ bl_space_type = 'SEQUENCE_EDITOR'
+ bl_region_type = 'UI'
+
+
+ @classmethod
+ def poll(self, context):
+ if context.space_data.view_type in {'SEQUENCER',
+ 'SEQUENCER_PREVIEW'}:
+ strip = functions.act_strip(context)
+ scn = context.scene
+ preferences = context.user_preferences
+ prefs = preferences.addons[__package__].preferences
+ if scn and scn.sequence_editor and scn.sequence_editor.active_strip:
+ if prefs.use_glitch_panel:
+ return strip.type in ('MOVIE')
+ else:
+ return False
+
+ def draw_header(self, context):
+ layout = self.layout
+ layout.label(text="", icon="GAME")
+
+ def draw(self, context):
+
+ preferences = context.user_preferences
+ prefs = preferences.addons[__package__].preferences
+
+ layout = self.layout
+
+ layout.operator("sequencer.createavi", text="create avi (same codec)")
+ layout.operator("sequencer.createavi", text="create avi (mjpeg)").size=2
+
+ strip = functions.act_strip(context)
+
+ layout.prop(prefs,"all_keyframes")
+ layout.prop(prefs,"load_glitch")
+
+ layout.operator("sequencer.createdatamosh")
+
+
+
+
+
+
+
+