diff options
Diffstat (limited to 'recipes-webui/octoprint/octoprint/0001-timelapse-add-setting-for-videocodec.patch')
-rw-r--r-- | recipes-webui/octoprint/octoprint/0001-timelapse-add-setting-for-videocodec.patch | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/recipes-webui/octoprint/octoprint/0001-timelapse-add-setting-for-videocodec.patch b/recipes-webui/octoprint/octoprint/0001-timelapse-add-setting-for-videocodec.patch deleted file mode 100644 index d5102d4..0000000 --- a/recipes-webui/octoprint/octoprint/0001-timelapse-add-setting-for-videocodec.patch +++ /dev/null @@ -1,191 +0,0 @@ -From 2fb4b4d9e4f95db8bcdad5c8a52006de8811c1e8 Mon Sep 17 00:00:00 2001 -From: Koen Kooi <koen@dominion.thruhere.net> -Date: Sat, 27 Jan 2018 12:09:28 +0100 -Subject: [PATCH 1/3] timelapse: add setting for videocodec - ---- - docs/api/settings.rst | 2 ++ - docs/configuration/config_yaml.rst | 3 +++ - src/octoprint/server/api/settings.py | 3 +++ - src/octoprint/settings.py | 1 + - src/octoprint/static/js/app/viewmodels/settings.js | 1 + - src/octoprint/templates/dialogs/settings/webcam.jinja2 | 1 + - .../snippets/settings/webcam/ffmpegVideoCodec.jinja2 | 6 ++++++ - src/octoprint/timelapse.py | 15 ++++++++++----- - 8 files changed, 27 insertions(+), 5 deletions(-) - create mode 100644 src/octoprint/templates/snippets/settings/webcam/ffmpegVideoCodec.jinja2 - -diff --git a/docs/api/settings.rst b/docs/api/settings.rst -index b26b2d2..7be1b1e 100644 ---- a/docs/api/settings.rst -+++ b/docs/api/settings.rst -@@ -254,6 +254,8 @@ mapped from the same fields in ``config.yaml`` unless otherwise noted: - - - * - ``webcam.ffmpegThreads`` - - -+ * - ``webcam.ffmpegVideoCodec`` -+ - - * - ``webcam.watermark`` - - - * - ``webcam.flipH`` -diff --git a/docs/configuration/config_yaml.rst b/docs/configuration/config_yaml.rst -index 7205ee1..6ccf9b9 100644 ---- a/docs/configuration/config_yaml.rst -+++ b/docs/configuration/config_yaml.rst -@@ -1181,6 +1181,9 @@ Use the following settings to configure webcam support: - # Should be left at 1 for RPi1. - ffmpegThreads: 1 - -+ # Videocodec to be used for encoding. Defaults to mpeg2video. -+ ffmpegVideoCodec: mpeg2video -+ - # The bitrate to use for rendering the timelapse video. This gets directly passed to ffmpeg. - bitrate: 5000k - -diff --git a/src/octoprint/server/api/settings.py b/src/octoprint/server/api/settings.py -index 9ccb461..13ab076 100644 ---- a/src/octoprint/server/api/settings.py -+++ b/src/octoprint/server/api/settings.py -@@ -106,6 +106,7 @@ def getSettings(): - "ffmpegPath": s.get(["webcam", "ffmpeg"]), - "bitrate": s.get(["webcam", "bitrate"]), - "ffmpegThreads": s.get(["webcam", "ffmpegThreads"]), -+ "ffmpegVideoCodec": s.get(["webcam", "ffmpegVideoCodec"]), - "watermark": s.getBoolean(["webcam", "watermark"]), - "flipH": s.getBoolean(["webcam", "flipH"]), - "flipV": s.getBoolean(["webcam", "flipV"]), -@@ -341,6 +342,8 @@ def _saveSettings(data): - if "ffmpegPath" in data["webcam"]: s.set(["webcam", "ffmpeg"], data["webcam"]["ffmpegPath"]) - if "bitrate" in data["webcam"]: s.set(["webcam", "bitrate"], data["webcam"]["bitrate"]) - if "ffmpegThreads" in data["webcam"]: s.setInt(["webcam", "ffmpegThreads"], data["webcam"]["ffmpegThreads"]) -+ # Add a whitelist for vcodecs like aspect ration has? -+ if "ffmpegVideoCodec" in data["webcam"]: s.set(["webcam", "ffmpegVideoCodec"], data["webcam"]["ffmpegVideoCodec"]) - if "watermark" in data["webcam"]: s.setBoolean(["webcam", "watermark"], data["webcam"]["watermark"]) - if "flipH" in data["webcam"]: s.setBoolean(["webcam", "flipH"], data["webcam"]["flipH"]) - if "flipV" in data["webcam"]: s.setBoolean(["webcam", "flipV"], data["webcam"]["flipV"]) -diff --git a/src/octoprint/settings.py b/src/octoprint/settings.py -index e360077..72823ec 100644 ---- a/src/octoprint/settings.py -+++ b/src/octoprint/settings.py -@@ -205,6 +205,7 @@ default_settings = { - "snapshotSslValidation": True, - "ffmpeg": None, - "ffmpegThreads": 1, -+ "ffmpegVideoCodec": "mpeg2video", - "bitrate": "5000k", - "watermark": True, - "flipH": False, -diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js -index c2ee03f..bb95a88 100644 ---- a/src/octoprint/static/js/app/viewmodels/settings.js -+++ b/src/octoprint/static/js/app/viewmodels/settings.js -@@ -125,6 +125,7 @@ $(function() { - self.webcam_ffmpegPath = ko.observable(undefined); - self.webcam_bitrate = ko.observable(undefined); - self.webcam_ffmpegThreads = ko.observable(undefined); -+ self.webcam_ffmpegVideoCodec = ko.observable(undefined); - self.webcam_watermark = ko.observable(undefined); - self.webcam_flipH = ko.observable(undefined); - self.webcam_flipV = ko.observable(undefined); -diff --git a/src/octoprint/templates/dialogs/settings/webcam.jinja2 b/src/octoprint/templates/dialogs/settings/webcam.jinja2 -index 7a1330e..f9b72b0 100644 ---- a/src/octoprint/templates/dialogs/settings/webcam.jinja2 -+++ b/src/octoprint/templates/dialogs/settings/webcam.jinja2 -@@ -26,6 +26,7 @@ - {% include "snippets/settings/webcam/ffmpegThreads.jinja2" %} - {% include "snippets/settings/webcam/webcamSnapshotTimeout.jinja2" %} - {% include "snippets/settings/webcam/webcamSnapshotSslValidation.jinja2" %} -+ {% include "snippets/settings/webcam/ffmpegVideoCodec.jinja2" %} - </div> - </div> - </form> -diff --git a/src/octoprint/templates/snippets/settings/webcam/ffmpegVideoCodec.jinja2 b/src/octoprint/templates/snippets/settings/webcam/ffmpegVideoCodec.jinja2 -new file mode 100644 -index 0000000..920a534 ---- /dev/null -+++ b/src/octoprint/templates/snippets/settings/webcam/ffmpegVideoCodec.jinja2 -@@ -0,0 +1,6 @@ -+<div class="control-group" title="{{ _('Videocodec uses for encoding') }}"> -+ <label class="control-label" for="settings-webcam_ffmpegVideoCodec">{{ _('Videocodec') }}</label> -+ <div class="controls"> -+ <input class="input-mini" data-bind="value: webcam_ffmpegVIdeoCodec" id="settings-webcamFfmpegVideoCodec" type="text"> -+ </div> -+</div> -diff --git a/src/octoprint/timelapse.py b/src/octoprint/timelapse.py -index d18fb2d..0e01972 100644 ---- a/src/octoprint/timelapse.py -+++ b/src/octoprint/timelapse.py -@@ -158,6 +158,7 @@ def render_unrendered_timelapse(name, gcode=None, postfix=None, fps=25): - capture_dir = settings().getBaseFolder("timelapse_tmp") - output_dir = settings().getBaseFolder("timelapse") - threads = settings().get(["webcam", "ffmpegThreads"]) -+ videocodec = settings().get(["webcam", "ffmpegVideoCodec"]) - - job = TimelapseRenderJob(capture_dir, output_dir, name, - postfix=postfix, -@@ -165,6 +166,7 @@ def render_unrendered_timelapse(name, gcode=None, postfix=None, fps=25): - output_format=_output_format, - fps=fps, - threads=threads, -+ videocodec=videocodec, - on_start=_create_render_start_handler(name, gcode=gcode), - on_success=_create_render_success_handler(name, gcode=gcode), - on_fail=_create_render_fail_handler(name, gcode=gcode), -@@ -740,7 +742,7 @@ class TimelapseRenderJob(object): - - def __init__(self, capture_dir, output_dir, prefix, postfix=None, capture_glob="{prefix}-*.jpg", - capture_format="{prefix}-%d.jpg", output_format="{prefix}{postfix}.mpg", fps=25, threads=1, -- on_start=None, on_success=None, on_fail=None, on_always=None): -+ videocodec="mpeg2video", on_start=None, on_success=None, on_fail=None, on_always=None): - self._capture_dir = capture_dir - self._output_dir = output_dir - self._prefix = prefix -@@ -750,6 +752,7 @@ class TimelapseRenderJob(object): - self._output_format = output_format - self._fps = fps - self._threads = threads -+ self._videocodec = videocodec - self._on_start = on_start - self._on_success = on_success - self._on_fail = on_fail -@@ -805,7 +808,8 @@ class TimelapseRenderJob(object): - - # prepare ffmpeg command - command_str = self._create_ffmpeg_command_string(ffmpeg, self._fps, bitrate, self._threads, input, output, -- hflip=hflip, vflip=vflip, rotate=rotate, watermark=watermark) -+ self._videocodec, hflip=hflip, vflip=vflip, rotate=rotate, -+ watermark=watermark) - self._logger.debug("Executing command: {}".format(command_str)) - - with self.render_job_lock: -@@ -827,7 +831,7 @@ class TimelapseRenderJob(object): - self._notify_callback("always", output) - - @classmethod -- def _create_ffmpeg_command_string(cls, ffmpeg, fps, bitrate, threads, input, output, hflip=False, vflip=False, -+ def _create_ffmpeg_command_string(cls, ffmpeg, fps, bitrate, threads, input, output, videocodec, hflip=False, vflip=False, - rotate=False, watermark=None, pixfmt="yuv420p"): - """ - Create ffmpeg command string based on input parameters. -@@ -837,7 +841,8 @@ class TimelapseRenderJob(object): - fps (int): Frames per second for output - bitrate (str): Bitrate of output - threads (int): Number of threads to use for rendering -- input (str): Absolute path to input files including file mask -+ videocodec (str): Videocodec to be used for encoding -+ input (str): Absolute path to input files including file mask - output (str): Absolute path to output file - hflip (bool): Perform horizontal flip on input material. - vflip (bool): Perform vertical flip on input material. -@@ -854,7 +859,7 @@ class TimelapseRenderJob(object): - logger = logging.getLogger(__name__) - - command = [ -- ffmpeg, '-framerate', str(fps), '-loglevel', 'error', '-i', '"{}"'.format(input), '-vcodec', 'mpeg2video', -+ ffmpeg, '-framerate', str(fps), '-loglevel', 'error', '-i', '"{}"'.format(input), '-vcodec', videocodec, - '-threads', str(threads), '-r', "25", '-y', '-b', str(bitrate), - '-f', 'vob'] - --- -2.0.1 - |