Skip to main content

A python binding for FFmpeg which provides sync and async APIs

Project description

python-ffmpeg

Build status

A python binding for FFmpeg which provides sync and async APIs

Help

See documentation for more details.

Install

To install python-ffmpeg, simply use pip:

$ pip install python-ffmpeg

Examples

You can find more examples in the documentation.

Transcoding

Synchronous API

from ffmpeg import FFmpeg


def main():
    ffmpeg = (
        FFmpeg()
        .option("y")
        .input("input.mp4")
        .output(
            "output.mp4",
            {"codec:v": "libx264"},
            vf="scale=1280:-1",
            preset="veryslow",
            crf=24,
        )
    )

    ffmpeg.execute()


if __name__ == "__main__":
    main()

Asynchronous API

import asyncio

from ffmpeg.asyncio import FFmpeg


async def main():
    ffmpeg = (
        FFmpeg()
        .option("y")
        .input("input.mp4")
        .output(
            "output.mp4",
            {"codec:v": "libx264"},
            vf="scale=1280:-1",
            preset="veryslow",
            crf=24,
        )
    )

    await ffmpeg.execute()


if __name__ == "__main__":
    asyncio.run(main())

Recording

Synchronous API

from ffmpeg import FFmpeg, Progress


def main():
    ffmpeg = (
        FFmpeg()
        .option("y")
        .input(
            "rtsp://username:password@127.0.0.1/cam",
            rtsp_transport="tcp",
            rtsp_flags="prefer_tcp",
        )
        .output("output.mp4", vcodec="copy")
    )

    @ffmpeg.on("progress")
    def time_to_terminate(progress: Progress):
        if progress.frame > 200:
            ffmpeg.terminate()

    ffmpeg.execute()


if __name__ == "__main__":
    main()

Asynchronous API

import asyncio

from ffmpeg import Progress
from ffmpeg.asyncio import FFmpeg


async def main():
    ffmpeg = (
        FFmpeg()
        .option("y")
        .input(
            "rtsp://username:password@127.0.0.1/cam",
            rtsp_transport="tcp",
            rtsp_flags="prefer_tcp",
        )
        .output("output.mp4", vcodec="copy")
    )

    @ffmpeg.on("progress")
    def time_to_terminate(progress: Progress):
        if progress.frame > 200:
            ffmpeg.terminate()

    await ffmpeg.execute()


if __name__ == "__main__":
    asyncio.run(main())

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

python-ffmpeg-2.0.11.tar.gz (14.1 MB view details)

Uploaded Source

Built Distribution

python_ffmpeg-2.0.11-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file python-ffmpeg-2.0.11.tar.gz.

File metadata

  • Download URL: python-ffmpeg-2.0.11.tar.gz
  • Upload date:
  • Size: 14.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for python-ffmpeg-2.0.11.tar.gz
Algorithm Hash digest
SHA256 a0e80d6ad52d6f8a773dc6fa6dcec34a99f2b4a0fa197152445f12aec310c575
MD5 746bf5001c8e81ddd48dfab667d03245
BLAKE2b-256 fca247ec732b89b37fa5036490bcd418551f409f70572fdf37e06164b3159f8c

See more details on using hashes here.

File details

Details for the file python_ffmpeg-2.0.11-py3-none-any.whl.

File metadata

File hashes

Hashes for python_ffmpeg-2.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 865517763297bdd09674746a494dd4a78a8f9bba9396fe4673cf99dfd55864df
MD5 caba9090d2339d59f0738108445220c9
BLAKE2b-256 f1e411ef029cd2006683486353e4c5772fe306d610959e59d7fac93e662cad21

See more details on using hashes here.

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