A python template
Project description
video2numpy
Optimized library for large-scale extraction of frames and audio from video.
Install
pip install video2numpy
Or build from source:
python setup.py install
Usage
NAME
video2numpy - Read frames from videos and save as numpy arrays
SYNOPSIS
video2numpy SRC <flags>
DESCRIPTION
Input:
src:
str: path to mp4 file
str: youtube link
str: path to txt file with multiple mp4's or youtube links
list: list with multiple mp4's or youtube links
dest:
str: directory where to save frames to
None: dest = src + .npy
take_every_nth:
int: only take every nth frame
resize_size:
int: new pixel height and width of resized frame
POSITIONAL ARGUMENTS
SRC
FLAGS
--dest=DEST
Default: ''
--take_every_nth=TAKE_EVERY_NTH
Default: 1
--resize_size=RESIZE_SIZE
Default: 224
API
This module exposes a single function video2numpy
which takes the same arguments as the command line tool:
import glob
from video2numpy import video2numpy
VIDS = glob.glob("some/path/my_videos/*.mp4")
FRAME_DIR = "some/path/my_embeddings"
take_every_5 = 5
video2numpy(VIDS, FRAME_DIR, take_every_5)
You can alse directly use the reader and iterate over frame blocks yourself:
import glob
from video2numpy.frame_reader import FrameReader
from video2numpy.utils import split_block
VIDS = glob.glob("some/path/my_videos/*.mp4")
take_every_5 = 5
resize_size = 300
reader = FrameReader(VIDS, FRAME_DIR, take_every_5, resize_size)
for block, ind_dict in reader:
if you need to process the block in large batches (f.e. good for ML):
proc_block = ml_model(block)
else:
proc_block = block
# then you can separate the video frames into a dict easily with split_block from utils:
split_up_vids = split_block(proc_block, ind_dict)
for vid_name, proc_frames in split_up_vids.items():
# do something with proc_frame of shape (n_frames, 300, 300, 3)
...
For development
Either locally, or in gitpod (do export PIP_USER=false
there)
Setup a virtualenv:
python3 -m venv .env
source .env/bin/activate
pip install -e .
to run tests:
pip install -r requirements-test.txt
then
make lint
make test
You can use make black
to reformat the code
python -m pytest -x -s -v tests -k "dummy"
to run a specific test
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
video2numpy-1.1.0.tar.gz
(9.2 kB
view hashes)
Built Distribution
Close
Hashes for video2numpy-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48a2f8c5269af25ba50091a819f78c9297feb77b538e33daf3a6797982e99623 |
|
MD5 | b00afea96c1d28c606e3bb00b71ba7e9 |
|
BLAKE2b-256 | 60bc0c225c33f83128df1f78e70058bccf0fd0ad91b61c1c08dc897f6a334e39 |