Skip to main content

A python binding for FFmpeg which provides sync and async APIs

Project description

python-ffmpeg

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

Uploaded Source

Built Distribution

python_ffmpeg-2.0.5-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for python-ffmpeg-2.0.5.tar.gz
Algorithm Hash digest
SHA256 98094e3366a38588c451bc3bfa96bd368a1618b9110c94e22a330343e39b0bf5
MD5 05b336dee586e6d998bde89f7bc416f3
BLAKE2b-256 5911c2733a3b923ac48ee0ab7a0e2898d044d2cd5ac3aef393ebfaefba0a4ebb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for python_ffmpeg-2.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8f046497dbbb208a46e08e7e00772dac55b0bc82e187873d5d411d77f031bd42
MD5 bae5be7117e061d9c5e4e8d58af0ba3e
BLAKE2b-256 2c6ddcaa95b52f11b1411a0556de5152d1d0a858bbc093f7f5f3920bc9d437a7

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