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

Uploaded Source

Built Distribution

python_ffmpeg-2.0.7-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: python-ffmpeg-2.0.7.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.7.tar.gz
Algorithm Hash digest
SHA256 11cd0122ae395c5f70ebe4f1dcecd2f1a032586cbfc12e9f4f99e6a486e2450e
MD5 60d8b1ce4ccb2ab49816dbec8805a1f4
BLAKE2b-256 ce9210ae99761a762cb096ef608b4e862962c8d3a6803aa28ff9330447fa1720

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for python_ffmpeg-2.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 96634694c57ec34afd09557863d4300b26bcbf093b8b4ddab9d972b9d98035fd
MD5 7c49ba08c462064dca83d85b018d5814
BLAKE2b-256 9acb31639bf3bdef2e584676954d999335faa2915ba60ac209f358eeefc142a6

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