Может получить временную метку кадра в видео с помощью pyav - python - PullRequest
0 голосов
/ 04 сентября 2018

Как я могу получить временную метку кадра в потоке видео или rtmp из pts и time_base или длительности? Большое спасибо!

import av
def init_input(file_name):
    global a
    container = av.open(file_name)
    a = container.duration
    return container.decode(video=0)
url = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov"
stream1 = init_input(url)
for frame1 in stream1:
    print(frame1.pts)
    print(frame1.time_base)

PS: frame.time неверно с фактическим временем

1 Ответ

0 голосов
/ 06 сентября 2018

На момент написания этой ошибки только что исправили на GitHub.

Если вам нужно это для работы с текущим выпущенным PyAV (то есть для PyPI), тогда вы можете использовать time_base на видео Stream:

import av

url = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov"

container = av.open(url, options={'rtsp_transport': 'tcp'})
stream = container.streams.video[0]

for frame in container.decode(stream):
    print(float(frame.pts * stream.time_base))
...