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.9.tar.gz (14.1 MB view details)

Uploaded Source

Built Distribution

python_ffmpeg-2.0.9-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: python-ffmpeg-2.0.9.tar.gz
  • Upload date:
  • Size: 14.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for python-ffmpeg-2.0.9.tar.gz
Algorithm Hash digest
SHA256 b06f2e85c5485d170c0e741b55072a5230de27a8e6b984399a4217a55c8cf043
MD5 f04da1581ee04374bb7a1d7f8ca2ca9a
BLAKE2b-256 b823593fc3f0da43013f02b43bb49db2c36d698823f28be0392b6e7cd0cf0a42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for python_ffmpeg-2.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 0cd440da47caf378e512b5de97e578fb3f763f11576d97f8053ab0107b24d49e
MD5 3f7f05fc495dd0377a488f1a71bfd886
BLAKE2b-256 27a813a73ea9a3ae49c27323e3e9e5a6d1bd73345187a5722203c030fff3f8b0

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 Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page