Audio/Video toolkit

pip install avtk==0.1.0


AVTK - Python Audio/Video Toolkit

AVTK provides functionality for inspecting and manipulating audio and video contents in an easy to use manner.

Current version supports working with local files using the FFmpeg command line tools (ffmpeg and ffprobe). Future versions will support various online video providers by wrapping their respective low-level SDKs.

AVTK aims to make it easy to most of the things you might want to do with audio and video, while allowing you to use the underlying tools and libraries for edge cases where you need full low-level functionality.

WARNING: AVTK is still in beta phase - bugs, missing documentation and frequent API changes are likely. Please report bugs, suggest use cases and feature ideas, and any other feedback you might have, to GitHub issues.



Install from Python Package Index:

pip install avtk

Make sure you have the ffmpeg and ffprobe tools available on the system. For detailed installation instructions please see the :doc:`install` page in the documentation.


Converting a video:

>>> from avtk.backends.ffmpeg.shortcuts import convert_to_webm

>>> convert_to_webm('test-media/video/sintel.mkv', '/tmp/output.webm')

Creating a thumbnail:

>>> from datetime import timedelta
>>> from avtk.backends.ffmpeg.shortcuts import get_thumbnail

>>> png_data = get_thumbnail('test-media/video/sintel.mkv', timedelta(seconds=2))

Inspecting a media file:

>>> from avtk.backends.ffmpeg.shortcuts import inspect

>>> info = inspect('test-media/video/sintel.mkv')
>>> info.format.duration
datetime.timedelta(seconds=5, microseconds=24000)
>>> info.format.bit_rate
>>> info.has_video
>>> info.video_streams[0].codec
<Codec(name=h264, type=video)>
>>> info.has_audio
>>> info.audio_streams[0].codec
<Codec(name=ac3, type=audio)>
>>> info.has_subtitles

For more examples, see the :mod:`avtk.backends.ffmpeg.shortcuts` documentation.

Bugs and feature requests

To report a bug or suggest a feature, please use the GitHub issue tracker.

When reporting a bug, please include a detailed description, any logging output and exception tracebacks, and media files (direcly or links to) which caused the problem.

When suggesting a feature, please explain both the feature (how it would work and what it would do) and rationale (why it is needed, especially if the same can be combined with the existing API).

If contributing code, either bugfixes or feature implementation, please include tests for the new or fixed functionality, and update documentation accordingly.