Media encoding made simple
Project description
Mediaify
Media encoding made simple!
Encode media without the hassle of wrangling ffmpeg and pillow, instead declare your output declaratively!
import mediaify
with open('./image.png', 'rb') as f:
data = f.read()
image = mediaify.encode_image(data, mediaify.WEBPImageFormat(quality=90))
image.save("./image.webp")
Multimedia Support
Supports transcoding of several different media types.
- Audio
- Image
- Animation
- Video
with open("./audio.mp4", "rb") as f:
data = f.read()
mediaify.encode_audio(data)
>>> AudioFile(audio/mpeg, 2.5MB)
with open("./image.png", "rb") as f:
data = f.read()
mediaify.encode_image(data)
>>> ImageFile(1200x1600, image/png, 35.4KB)
with open("./animation.gif", "rb") as f:
data = f.read()
mediaify.encode_animation(data)
>>> AnimationFile(1280x800, 1.1s 11 frames, 10.0fps, image/gif, 132.8KB)
with open("./examples/input/video.mp4", "rb") as f:
data = f.read()
mediaify.encode_video(data)
>>> VideoFile(1280x720, 60.458s, 24.0fps, audio, video/mp4, 8.5MB)
Customisable
Encode videos with multiple resolutions, formats, codecs as well as thumbnails and previews easily.
import mediaify
thumbnail = mediaify.ThumbnailEncoding(
encoding=mediaify.WEBPImageFormat(
resize=mediaify.TargetResolutionResize(width=640, height=360),
quality=80,
),
)
preview = mediaify.VideoPreviewAnimationEncoding(
encoding=mediaify.WEBPAnimationFormat(
resize=mediaify.TargetResolutionResize(width=640, height=360),
quality=50,
lossless=False,
),
framerate=5,
frames=60,
)
video_360p = mediaify.WEBMFormat(
resize=mediaify.TargetResolutionResize(width=640, height=360),
video_codec=mediaify.AV1Codec(crf=50, preset=7),
audio_codec=mediaify.OpusCodec(bitrate=128_000),
)
video_720p = mediaify.WEBMFormat(
resize=mediaify.TargetResolutionResize(width=1280, height=720),
video_codec=mediaify.AV1Codec(crf=45, preset=6),
audio_codec=mediaify.OpusCodec(bitrate=128_000),
)
fallback = mediaify.MP4Format(
resize=mediaify.TargetResolutionResize(width=1280, height=720),
video_codec=mediaify.H264Codec(crf=21, preset="medium"),
audio_codec=mediaify.OpusCodec(bitrate=128_000),
)
configs = [thumbnail, preview, video_360p, video_720p, fallback]
with open('./examples/input/video.mp4', 'rb') as f:
data = f.read()
mediaify.batch_encode_video(data, configs)
>>> [
ImageFile(640x360, image/webp, 10.1KB),
AnimationFile(640x360, 12.0s 60 frames, 5.0fps, image/webp, 1.8MB),
VideoFile(640x360, 60.45s, 24.0fps, audio, video/webm, 2.2MB),
VideoFile(1280x720, 60.45s, 24.0fps, audio, video/webm, 4.2MB),
VideoFile(1280x720, 60.45s, 24.0fps, audio, video/mp4, 14.2MB),
]
Installation
https://pypi.org/project/mediaify/
python -m pip install mediaify
Dependencies
ffmpeg
Ensure ffmpeg is installed and on $PATH, try running ffmpeg to check
- Debain/Ubuntu:
sudo apt-get install ffmpeg - Other: https://ffmpeg.org/download.html
libmagic
- Windows: N/A, installed automatically
- Debian/Ubuntu:
sudo apt-get install libmagic1 - Homebrew:
brew install libmagic - macports:
port install file
Roadmap
If you want any of these features to be developed, just flag an issue and I'll work on it.
- New Encoders
- Video
- WEBM
- MP4
- DASH Video
- Video to Animation
- Video to Audio
- Audio Support
- Video
- Better Resizing
- Blackbars
- Cropping
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mediaify-3.1.0.tar.gz.
File metadata
- Download URL: mediaify-3.1.0.tar.gz
- Upload date:
- Size: 43.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a03a65896886c27b61bce6492777a804df4843b62a0ab7495f98a8b165a805db
|
|
| MD5 |
00c37cb9d416f6aa8f41433e56cdf225
|
|
| BLAKE2b-256 |
97d2a3162a99b25bcb361f8cba102b123c51c90b27d7d2a71f52421f07cb64e1
|
File details
Details for the file mediaify-3.1.0-py3-none-any.whl.
File metadata
- Download URL: mediaify-3.1.0-py3-none-any.whl
- Upload date:
- Size: 25.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.32.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d1489056e05ecf2d5912dd5f655a63867ce9f2c84108da85a94be88428b94cf
|
|
| MD5 |
46f8027e9b1b1fe5b19c2523895ead48
|
|
| BLAKE2b-256 |
d63be2375b8da8e5648611489c01f7e2e4d8a0c2b476601ff0792575b6bc13b4
|