Skip to content

Querying metadata

You can use python-ffmpeg to query the metadata of an input file using ffprobe.

import json

from ffmpeg import FFmpeg


def main():
    ffprobe = FFmpeg(executable="ffprobe").input(
        "input.mp4",
        print_format="json", # ffprobe will output the results in JSON format
        show_streams=None,
    )

    media = json.loads(ffprobe.execute())

    print(f"# Video")
    print(f"- Codec: {media['streams'][0]['codec_name']}")
    print(f"- Resolution: {media['streams'][0]['width']} X {media['streams'][0]['height']}")
    print(f"- Duration: {media['streams'][0]['duration']}")
    print("")

    print(f"# Audio")
    print(f"- Codec: {media['streams'][1]['codec_name']}")
    print(f"- Sample Rate: {media['streams'][1]['sample_rate']}")
    print(f"- Duration: {media['streams'][1]['duration']}")


if __name__ == "__main__":
    main()
import asyncio
import json

from ffmpeg.asyncio import FFmpeg


async def main():
    ffprobe = FFmpeg(executable="ffprobe").input(
        "input.mp4",
        print_format="json", # ffprobe will output the results in JSON format
        show_streams=None,
    )

    media = json.loads(await ffprobe.execute())

    print(f"# Video")
    print(f"- Codec: {media['streams'][0]['codec_name']}")
    print(f"- Resolution: {media['streams'][0]['width']} X {media['streams'][0]['height']}")
    print(f"- Duration: {media['streams'][0]['duration']}")
    print("")

    print(f"# Audio")
    print(f"- Codec: {media['streams'][1]['codec_name']}")
    print(f"- Sample Rate: {media['streams'][1]['sample_rate']}")
    print(f"- Duration: {media['streams'][1]['duration']}")


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