File size: 817 Bytes
dc465b0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import av
import time

def sample(N, K):
    array = list(range(N))
    length = len(array)
    if K >= length or K<2:
        return array

    k = length // K
    sampled_points = [array[i] for i in range(0, length, k)][:K-1]
    sampled_points.append(array[-1])
    return sampled_points

start = time.time()

with av.open('/Users/monius/Documents/YueZhang/Video/Sora/1.mp4') as container:
    frames = []
    src = container.streams.video[0]
    time_base = src.time_base
    framerate = src.average_rate
    N = src.frames
    K = 10

    for i in sample(N, K):
        n = round((i / framerate) / time_base)
        container.seek(n, backward=True, stream=src)
        frame = next(container.decode(video=0))
        im = frame.to_image()
        frames.append(im)

elapsed = time.time() - start

print(elapsed)