10a7ce71fSopenharmony_ci#!/usr/bin/env python3 20a7ce71fSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd. 30a7ce71fSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 40a7ce71fSopenharmony_ci# you may not use this file except in compliance with the License. 50a7ce71fSopenharmony_ci# You may obtain a copy of the License at 60a7ce71fSopenharmony_ci# 70a7ce71fSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 80a7ce71fSopenharmony_ci# 90a7ce71fSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 100a7ce71fSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 110a7ce71fSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120a7ce71fSopenharmony_ci# See the License for the specific language governing permissions and 130a7ce71fSopenharmony_ci# limitations under the License. 140a7ce71fSopenharmony_ci 150a7ce71fSopenharmony_ciimport sys 160a7ce71fSopenharmony_ciimport cv2 as cv 170a7ce71fSopenharmony_cifrom oled.img2code import convert_frame_to_bytes 180a7ce71fSopenharmony_ci 190a7ce71fSopenharmony_ciDEFAULT_PORT = 5678 200a7ce71fSopenharmony_ci 210a7ce71fSopenharmony_cidef convert_video_to_bin(videoFile, binFile): 220a7ce71fSopenharmony_ci cap = cv.VideoCapture(videoFile) 230a7ce71fSopenharmony_ci frameCount = cap.get(cv.CAP_PROP_FRAME_COUNT) 240a7ce71fSopenharmony_ci print('frame count:', frameCount) 250a7ce71fSopenharmony_ci print('frame width:', cap.get(cv.CAP_PROP_FRAME_WIDTH)) 260a7ce71fSopenharmony_ci print('frame height:', cap.get(cv.CAP_PROP_FRAME_HEIGHT)) 270a7ce71fSopenharmony_ci lastPercent = 0 280a7ce71fSopenharmony_ci with open(binFile, 'wb+') as f: 290a7ce71fSopenharmony_ci while True: 300a7ce71fSopenharmony_ci retval, frame = cap.read() 310a7ce71fSopenharmony_ci if not retval: 320a7ce71fSopenharmony_ci print('video done!') 330a7ce71fSopenharmony_ci break 340a7ce71fSopenharmony_ci bitmap = convert_frame_to_bytes(frame) 350a7ce71fSopenharmony_ci f.write(bitmap) 360a7ce71fSopenharmony_ci pos = cap.get(cv.CAP_PROP_POS_FRAMES) 370a7ce71fSopenharmony_ci percent = pos / frameCount * 100 380a7ce71fSopenharmony_ci if percent - lastPercent >= 1: 390a7ce71fSopenharmony_ci lastPercent = percent 400a7ce71fSopenharmony_ci sys.stdout.write('=') 410a7ce71fSopenharmony_ci sys.stdout.flush() 420a7ce71fSopenharmony_ci print('convert all frames done!') 430a7ce71fSopenharmony_ci cap.release() 440a7ce71fSopenharmony_ci 450a7ce71fSopenharmony_cidef main(): 460a7ce71fSopenharmony_ci if len(sys.argv) < 3: 470a7ce71fSopenharmony_ci print("Usage: {} videoFile binFile\n\t".format(sys.argv[0])) 480a7ce71fSopenharmony_ci exit(-1) 490a7ce71fSopenharmony_ci 500a7ce71fSopenharmony_ci try: 510a7ce71fSopenharmony_ci videoFile = sys.argv[1] 520a7ce71fSopenharmony_ci binFile = sys.argv[2] 530a7ce71fSopenharmony_ci convert_video_to_bin(videoFile, binFile) 540a7ce71fSopenharmony_ci except Exception as e: 550a7ce71fSopenharmony_ci print('exception raised:', e) 560a7ce71fSopenharmony_ci 570a7ce71fSopenharmony_ciif __name__ == "__main__": 580a7ce71fSopenharmony_ci main() 59