Skip to main content

Module for saving and loading images and depth as H.264 video

Project description

videoio: save/load image sequence as H.264 video

A small Python module for saving and loading RGB and uint16 (depth) frames as H.264 encoded video

Prerequisites

  • ffmpeg>=2.1 with libx264 enabled
    • If you are using conda, you can install the correct version with conda remove ffmpeg and conda install ffmpeg x264 -c conda-forge
  • ffprobe (usually comes with ffmpeg)

Quickstart

Save/load RGB frames:
import numpy as np
from videoio import videosave, videoread

frames = np.random.random((20, 200, 400, 3))  # [framesNr, height, width, RGB]
# Save to video
videosave("out.mp4", frames)
# Load from video
frames = videoread("out.mp4")
Read frames sequentially:
from videoio import VideoReader

for frame in VideoReader("in.mp4"):
    do_something_with(frame)
Write frames sequentially:
from videoio import VideoWriter

writer = VideoWriter("out.mp4", resolution=(400, 200))  # [width, height]
for i in range(100):
    frame = get_frame()
    writer.write(frame)
writer.close()

or

with VideoWriter("out.mp4", resolution=(400, 200)) as writer:
    for i in range(100):
        frame = get_frame()
        writer.write(frame)
Lossless write/read of uint16 3D arrays (useful for saving depth frames stored in mm, for example Kinect data):
import numpy as np
from videoio import uint16save, uint16read

# Generate 20 random depth frames
depth_frames = (np.random.random((20, 200, 400)) * 65535).astype(np.uint16)
# Save
uint16save("out_depth.mp4", depth_frames)
# Load
depth_frames = uint16read("out_depth.mp4")
Save RGB frames in lossless mode with different compression preset and different FPS:
videosave("out.mp4", frames, lossless=True, preset="veryfast", fps=10.5)
Read RGB frames and scale them to target resolution simultaneously:
frames = videoread("in.mp4", output_resolution=(100, 250))
Read video/uint16-array starting from certain frame:

(Works if the input video was created by videoio, other cases are not guaranteed)

frames = videoread("in.mp4", start_frame=100)

for frame in VideoReader("in.mp4", start_frame=100):
    do_something_with(frame)

Installation

From pip:

pip install videoio

From source:

git clone https://github.com/vguzov/videoio.git
python setup.py install

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

videoio-0.3.0.tar.gz (12.2 kB view hashes)

Uploaded Source

Built Distribution

videoio-0.3.0-py3-none-any.whl (13.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page