[OpenCv]Получить физ. время фрейма, зная точное время I-frame'а?
От: Sharov Россия  
Дата: 24.07.23 21:28
Оценка:
Здравствуйте.

Допустим я знаю точное физ. время первого кадра mp4 файла (I-frame который).
Могу ли я с помощью соотв. кода (отсюда):
def with_cv2(video: str) -> List[int]:
    """
    Link: https://pypi.org/project/opencv-python/
    My comments:
        I don't know why, but the last 4 or 5 timestamps are equal to 0 when they should not.
        Also, cv2 is slow. It took my computer 132 seconds to process the video.


    Parameters:
        video (str): Video path
    Returns:
        List of timestamps in ms
    """
    timestamps = []
    cap = cv2.VideoCapture(video)

    while cap.isOpened():
        frame_exists, curr_frame = cap.read()
        if frame_exists:
            timestamps.append(t0+ round(cap.get(cv2.CAP_PROP_POS_MSEC)))#добавил t0 для наглядности.
        else:
            break

    cap.release()

    return timestamps


получить точное физ. время (capture time) фрейма? Ну т.е. в коде выше я просто плюсую cap.get(cv2.CAP_PROP_POS_MSEC))
к известному физ. времени для первого кадра ( t0+ cap.get(cv2.CAP_PROP_POS_MSEC)) ). Или это не то?

Это как бы время расстояния между кадрами (CAP_PROP_POS_MSEC), верно? Но оно не говорит, как кадры получались
на камере или говорит? С одной стороны fps постоянный, так что вроде кадры получаются через одинаковые промежутки
времени, так что вроде зная время базового фрейма можно выч. физ. время последующих фреймов.
Вроде все бьется, но не могут ли быть какие-нибудь еще задержки, которые могли бы исказить реальное время фреймов?
Может быть, что сеть потеряла некоторые фреймы, что тогда? Будет ли код выше по-прежнему верным?

Заранее благодарю.
Кодом людям нужно помогать!
opencv gstreamer
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.