Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/google/mediapy
This Python library makes it easy to display images and videos in a notebook.
https://github.com/google/mediapy
image ironpython jupyter-notebook video viewer
Last synced: 23 days ago
JSON representation
This Python library makes it easy to display images and videos in a notebook.
- Host: GitHub
- URL: https://github.com/google/mediapy
- Owner: google
- License: apache-2.0
- Created: 2021-03-11T22:27:57.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-05-28T16:55:20.000Z (6 months ago)
- Last Synced: 2024-05-29T08:00:43.001Z (6 months ago)
- Topics: image, ironpython, jupyter-notebook, video, viewer
- Language: Jupyter Notebook
- Homepage: https://pypi.org/project/mediapy/
- Size: 927 KB
- Stars: 364
- Watchers: 11
- Forks: 19
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Read/write/show images and videos in an IPython/Jupyter notebook.
[![Unittests](https://github.com/google/mediapy/actions/workflows/pytest_and_autopublish.yml/badge.svg)](https://github.com/google/mediapy/actions/workflows/pytest_and_autopublish.yml)
[![PyPI version](https://badge.fury.io/py/mediapy.svg)](https://badge.fury.io/py/mediapy)[**[GitHub source]**](https://github.com/google/mediapy)
[**[API docs]**](https://google.github.io/mediapy/)
[**[Colab example]**](https://colab.research.google.com/github/google/mediapy/blob/main/mediapy_examples.ipynb)## Examples:
See the notebook
[`mediapy_examples.ipynb`](https://github.com/google/mediapy/blob/main/mediapy_examples.ipynb)
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google/mediapy/blob/main/mediapy_examples.ipynb)
[![Open in Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/google/mediapy/main?filepath=mediapy_examples.ipynb)### Images:
```python
!pip install -q mediapy
import mediapy as media
import numpy as npimage = media.read_image('https://github.com/hhoppe/data/raw/main/image.png')
print(image.shape, image.dtype) # It is a numpy array.
media.show_image(image)checkerboard = np.kron([[0, 1] * 16, [1, 0] * 16] * 16, np.ones((4, 4)))
media.show_image(checkerboard)media.show_image(media.color_ramp((128, 128)), height=48, title='ramp')
images = {
'original': image,
'brightened': media.to_float01(image) * 1.5,
}
media.show_images(images)media.write_image('/tmp/checkerboard.png', checkerboard)
```### Videos:
```python
url = 'https://github.com/hhoppe/data/raw/main/video.mp4'
video = media.read_video(url)
print(video.shape, video.dtype) # It is a numpy array.
print(video.metadata.fps) # The 'metadata' attribute includes framerate.
media.show_video(video) # Play the video using the retrieved framerate.media.show_images(video, height=80, columns=4) # Show frames side-by-side.
video = media.moving_circle((128, 128), num_images=10)
media.show_video(video, fps=10)media.write_video('/tmp/video.mp4', video, fps=60)
# Darken a video frame-by-frame:
filename_in = '/tmp/video.mp4'
filename_out = '/tmp/out.mp4'
with media.VideoReader(filename_in) as r:
print(f'shape={r.shape} fps={r.fps} bps={r.bps}')
darken_image = lambda image: media.to_float01(image) * 0.5
with media.VideoWriter(
filename_out, shape=r.shape, fps=r.fps, bps=r.bps) as w:
for image in r:
w.add_image(darken_image(image))
media.show_video(media.read_video(filename_out), fps=60)
```## Setup:
Video I/O relies on the external program `ffmpeg`, which must be present in
the system PATH. On Unix, it can be installed using:```shell
apt install ffmpeg
```or within a notebook using:
```python
!command -v ffmpeg >/dev/null || (apt update && apt install -y ffmpeg)
```