{"id":45473928,"url":"https://github.com/PyAV-org/PyAV","last_synced_at":"2026-03-07T16:00:59.433Z","repository":{"id":5645905,"uuid":"6854611","full_name":"PyAV-Org/PyAV","owner":"PyAV-Org","description":"﻿﻿Pythonic bindings for FFmpeg's libraries.","archived":false,"fork":false,"pushed_at":"2026-02-27T06:47:16.000Z","size":17590,"stargazers_count":3127,"open_issues_count":30,"forks_count":427,"subscribers_count":58,"default_branch":"main","last_synced_at":"2026-02-27T12:34:34.441Z","etag":null,"topics":["ffmpeg","pyav","python"],"latest_commit_sha":null,"homepage":"https://pyav.basswood-io.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PyAV-Org.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.py","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2012-11-25T19:17:06.000Z","updated_at":"2026-02-27T11:25:21.000Z","dependencies_parsed_at":"2023-10-21T12:45:59.035Z","dependency_job_id":"73a689e1-04a2-47a2-bb1b-0536ca01d75d","html_url":"https://github.com/PyAV-Org/PyAV","commit_stats":{"total_commits":1476,"total_committers":95,"mean_commits":"15.536842105263158","dds":0.5196476964769647,"last_synced_commit":"d8819800d14255199915315fb4ce0f01ee8b94eb"},"previous_names":["mikeboers/pyav"],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/PyAV-Org/PyAV","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyAV-Org%2FPyAV","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyAV-Org%2FPyAV/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyAV-Org%2FPyAV/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyAV-Org%2FPyAV/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyAV-Org","download_url":"https://codeload.github.com/PyAV-Org/PyAV/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyAV-Org%2FPyAV/sbom","scorecard":{"id":115186,"data":{"date":"2025-08-11","repo":{"name":"github.com/PyAV-Org/PyAV","commit":"22d6a7ac30d10eba804cb59672d8bb8dd1623998"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.2,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/smoke.yml:1","Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/smoke.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/smoke.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/smoke.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/smoke.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/smoke.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/smoke.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/smoke.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/smoke.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/smoke.yml:116: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/smoke.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:87: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/PyAV-Org/PyAV/tests.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:16","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:73","Info:   0 out of  13 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/tests.yml:82"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T01:01:37.299Z","repository_id":5645905,"created_at":"2025-08-16T01:01:37.300Z","updated_at":"2025-08-16T01:01:37.300Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30221193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T14:02:48.375Z","status":"ssl_error","status_checked_at":"2026-03-07T14:02:43.192Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ffmpeg","pyav","python"],"created_at":"2026-02-22T14:00:33.528Z","updated_at":"2026-03-07T16:00:59.428Z","avatar_url":"https://github.com/PyAV-Org.png","language":"Python","funding_links":[],"categories":["Playback \u0026 Services"],"sub_categories":["Text-to-Speech"],"readme":"PyAV\n====\n\nPyAV is a Pythonic binding for the [FFmpeg][ffmpeg] libraries. We aim to provide all of the power and control of the underlying library, but manage the gritty details as much as possible.\n\n---\n\n[![GitHub Test Status][github-tests-badge]][github-tests] [![Documentation][docs-badge]][docs] [![Python Package Index][pypi-badge]][pypi] [![Conda Forge][conda-badge]][conda]\n\nPyAV is for direct and precise access to your media via containers, streams, packets, codecs, and frames. It exposes a few transformations of that data, and helps you get your data to/from other packages (e.g. Numpy and Pillow).\n\nThis power does come with some responsibility as working with media is horrendously complicated and PyAV can't abstract it away or make all the best decisions for you. If the `ffmpeg` command does the job without you bending over backwards, PyAV is likely going to be more of a hindrance than a help.\n\nBut where you can't work without it, PyAV is a critical tool.\n\n\nInstallation\n------------\n\nBinary wheels are provided on [PyPI][pypi] for Linux, MacOS and Windows linked against the latest stable version of ffmpeg. You can install these wheels by running:\n\n```bash\npip install av\n```\n\nAnother way of installing PyAV is via [conda-forge][conda-forge]:\n\n```bash\nconda install av -c conda-forge\n```\n\nSee the [Conda install][conda-install] docs to get started with (mini)Conda.\n\n\nAlternative installation methods\n--------------------------------\n\nDue to the complexity of the dependencies, PyAV is not always the easiest Python package to install from source. If you want to use your existing ffmpeg (must be the correct major version), the source version of PyAV is on [PyPI][pypi]:\n\n\u003e [!WARNING]\n\u003e You must be in a posix env, and have the correct version of ffmpeg installed on your system.\n\n```bash\npip install av --no-binary av\n```\n\n\nInstalling From Source\n----------------------\n\nHere's how to build PyAV from source. You must use [MSYS2](https://www.msys2.org/) when using Windows.\n\n```bash\ngit clone https://github.com/PyAV-Org/PyAV.git\ncd PyAV\nsource scripts/activate.sh\n\n# Build ffmpeg from source. You can skip this step\n# if ffmpeg is already installed.\n./scripts/build-deps\n\n# Build PyAV\nmake\n\n# Testing\nmake test\n\n# Install globally\ndeactivate\npip install .\n```\n\n---\n\nHave fun, [read the docs][docs], [come chat with us][discuss], and good luck!\n\n\n\n[conda-badge]: https://img.shields.io/conda/vn/conda-forge/av.svg?colorB=CCB39A\n[conda]: https://anaconda.org/conda-forge/av\n[docs-badge]: https://img.shields.io/badge/docs-on%20pyav.basswood--io.com-blue.svg\n[docs]: https://pyav.basswood-io.com\n[pypi-badge]: https://img.shields.io/pypi/v/av.svg?colorB=CCB39A\n[pypi]: https://pypi.org/project/av\n[discuss]: https://github.com/PyAV-Org/PyAV/discussions\n\n[github-tests-badge]: https://github.com/PyAV-Org/PyAV/workflows/tests/badge.svg\n[github-tests]: https://github.com/PyAV-Org/PyAV/actions?workflow=tests\n[github]: https://github.com/PyAV-Org/PyAV\n\n[ffmpeg]: https://ffmpeg.org/\n[conda-forge]: https://conda-forge.github.io/\n[conda-install]: https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPyAV-org%2FPyAV","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPyAV-org%2FPyAV","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPyAV-org%2FPyAV/lists"}