mshukor
init
3eb682b
raw
history blame
1.07 kB
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
import av
def get_video_container(path_to_vid, multi_thread_decode=False, backend="pyav"):
"""
Given the path to the video, return the pyav video container.
Args:
path_to_vid (str): path to the video.
multi_thread_decode (bool): if True, perform multi-thread decoding.
backend (str): decoder backend, options include `pyav` and
`torchvision`, default is `pyav`.
Returns:
container (container): video container.
"""
if backend == "torchvision":
with open(path_to_vid, "rb") as fp:
container = fp.read()
return container
elif backend == "pyav":
#try:
container = av.open(path_to_vid)
if multi_thread_decode:
# Enable multiple threads for decoding.
container.streams.video[0].thread_type = "AUTO"
#except:
# container = None
return container
else:
raise NotImplementedError("Unknown backend {}".format(backend))