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