def test_write(conversion): """ Testing WriteGear Compression-Mode(FFmpeg) Writer capabilties in different colorspace with CamGearAPI. """ # Open stream stream = CamGear( source=return_testvideo_path(), colorspace=conversion, logging=True ).start() writer = WriteGear( output_filename="Output_tw.mp4", custom_ffmpeg=return_static_ffmpeg() ) # Define writer while True: frame = stream.read() # check if frame is None if frame is None: # if True break the infinite loop break if conversion == "COLOR_BGR2RGBA": writer.write(frame, rgb_mode=True) elif conversion == "COLOR_BGR2INVALID": # test invalid color_space value stream.color_space = "wrong_colorspace" conversion = "COLOR_BGR2INVALID2" writer.write(frame) elif conversion == "COLOR_BGR2INVALID2": # test wrong color_space value stream.color_space = 1546755 conversion = "" writer.write(frame) else: writer.write(frame) stream.stop() writer.close() basepath, _ = os.path.split(return_static_ffmpeg()) ffprobe_path = os.path.join( basepath, "ffprobe.exe" if os.name == "nt" else "ffprobe" ) result = check_output( [ ffprobe_path, "-v", "error", "-count_frames", "-i", os.path.abspath("Output_tw.mp4"), ] ) if result: if not isinstance(result, string_types): result = result.decode() logger.debug("Result: {}".format(result)) for i in ["Error", "Invalid", "error", "invalid"]: assert not (i in result) os.remove(os.path.abspath("Output_tw.mp4"))
def test_write(conversion): """ Testing WriteGear Compression-Mode(FFmpeg) Writer capabilties in different colorspace with CamGearAPI. """ try: # Open stream options = {"THREAD_TIMEOUT": 300} stream = CamGear(source=return_testvideo_path(), colorspace=conversion, logging=True, **options).start() writer = WriteGear( output_filename="Output_tw.mp4", custom_ffmpeg=return_static_ffmpeg()) # Define writer while True: frame = stream.read() # check if frame is None if frame is None: # if True break the infinite loop break if conversion == "COLOR_BGR2RGBA": writer.write(frame, rgb_mode=True) elif conversion == "COLOR_BGR2INVALID": # test invalid color_space value stream.color_space = conversion conversion = "COLOR_BGR2INVALID2" writer.write(frame) elif conversion == "COLOR_BGR2INVALID2": # test wrong color_space value stream.color_space = 1546755546 writer.write(frame) conversion = "" else: writer.write(frame) stream.stop() writer.close() basepath, _ = os.path.split(return_static_ffmpeg()) ffprobe_path = os.path.join( basepath, "ffprobe.exe" if os.name == "nt" else "ffprobe") assert os.path.isfile(ffprobe_path), "FFprobe not Found!" result = check_output([ ffprobe_path, "-v", "error", "-count_frames", "-i", os.path.abspath("Output_tw.mp4"), ]) if result: if not isinstance(result, string_types): result = result.decode() assert not any(x in result for x in ["Error", "Invalid", "error", "invalid" ]), "Test failed!" except Exception as e: if not isinstance(e, (AssertionError, queue.Empty)): pytest.fail(str(e)) else: logger.exception(str(e)) finally: remove_file_safe("Output_tw.mp4")