在 PyAV 中指定线程数目可以通过设置 threads 属性来实现。该属性通常应用于 demuxer、decoder、filter 和 encoder。例如,下面的代码将在 demuxer 和 decoder 中使用 4 个线程:

import av

container = av.open('video.mp4')
container.streams.video[0].thread_type = 'AUTO'
container.streams.video[0].thread_count = 4

for packet in container.demux():
    for frame in packet.decode():
        # 处理每一帧

在这个例子中,我们使用 av.open() 打开视频文件,然后设置第一个视频流的 thread_type 为 AUTO。AUTO 意味着 PyAV 将根据需要自动创建和销毁线程。接下来,我们将 threads 属性设置为 4,以指定在 demuxer 和 decoder 中使用的线程数。最后,我们遍历 container.demux() 的输出,以获取视频帧。

如果您使用的是 filter 或 encoder,请将相应的线程属性设置为 filter.thread_type 和 filter.threads 或 encoder.thread_type 和 encoder.threads。


universe_king
3.4k 声望678 粉丝