From 3a4b91d9ed3583c20032cf74bdf7e589b8d833fa Mon Sep 17 00:00:00 2001 From: Andrey Zhavoronkov Date: Tue, 26 May 2020 15:45:12 +0300 Subject: [PATCH 1/2] used yuv420p format for compressed and original chunks --- cvat/apps/engine/media_extractors.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/cvat/apps/engine/media_extractors.py b/cvat/apps/engine/media_extractors.py index 18d28f208d80..fd5270fad8cc 100644 --- a/cvat/apps/engine/media_extractors.py +++ b/cvat/apps/engine/media_extractors.py @@ -304,10 +304,16 @@ def __init__(self, _): self._output_fps = 25 @staticmethod - def _create_av_container(path, w, h, rate, pix_format, options): + def _create_av_container(path, w, h, rate, options): + # x264 requires width and height must be divisible by 2 for yuv420p + if h % 2: + h += 1 + if w % 2: + w += 1 + container = av.open(path, 'w') video_stream = container.add_stream('libx264', rate=rate) - video_stream.pix_fmt = pix_format + video_stream.pix_fmt = "yuv420p" video_stream.width = w video_stream.height = h video_stream.options = options @@ -320,14 +326,12 @@ def save_as_chunk(self, images, chunk_path): input_w = images[0][0].width input_h = images[0][0].height - pix_format = images[0][0].format.name output_container, output_v_stream = self._create_av_container( path=chunk_path, w=input_w, h=input_h, rate=self._output_fps, - pix_format=pix_format, options={ "crf": str(self._image_quality), "preset": "ultrafast", @@ -373,18 +377,11 @@ def save_as_chunk(self, images, chunk_path): output_h = input_h // downscale_factor output_w = input_w // downscale_factor - # width and height must be divisible by 2 - if output_h % 2: - output_h += 1 - if output_w % 2: - output_w +=1 - output_container, output_v_stream = self._create_av_container( path=chunk_path, w=output_w, h=output_h, rate=self._output_fps, - pix_format='yuv420p', options={ 'profile': 'baseline', 'coder': '0', From a07b86bdc9fbc742a464f97a5e718cfbcf7135a0 Mon Sep 17 00:00:00 2001 From: Andrey Zhavoronkov Date: Tue, 26 May 2020 18:00:34 +0300 Subject: [PATCH 2/2] updated changelog --- CHANGELOG.md | 1 + cvat/apps/engine/media_extractors.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c2719e21b8a..7252638e69ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed an error when exporting a task with cuboids to any format except CVAT () - Synchronization with remote git repo () - A problem with mask to polygons conversion when polygons are too small () +- Unable to upload video with uneven size () ### Security - diff --git a/cvat/apps/engine/media_extractors.py b/cvat/apps/engine/media_extractors.py index fd5270fad8cc..3070dca70d07 100644 --- a/cvat/apps/engine/media_extractors.py +++ b/cvat/apps/engine/media_extractors.py @@ -1,4 +1,4 @@ -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2019-2020 Intel Corporation # # SPDX-License-Identifier: MIT