{"id":29835256,"url":"https://github.com/livekit/webrtc-vmaf","last_synced_at":"2025-07-29T12:17:41.634Z","repository":{"id":182442826,"uuid":"661481500","full_name":"livekit/webrtc-vmaf","owner":"livekit","description":"VMAF benchmarking tool for WebRTC codecs","archived":false,"fork":false,"pushed_at":"2023-08-23T00:01:08.000Z","size":16,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":12,"default_branch":"main","last_synced_at":"2023-08-23T03:56:22.939Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://livekit.io/webrtc/bitrate-guide","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/livekit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-03T01:12:30.000Z","updated_at":"2023-08-23T03:56:22.940Z","dependencies_parsed_at":"2023-07-20T02:42:43.770Z","dependency_job_id":null,"html_url":"https://github.com/livekit/webrtc-vmaf","commit_stats":null,"previous_names":["livekit/webrtc-vmaf"],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/livekit/webrtc-vmaf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Fwebrtc-vmaf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Fwebrtc-vmaf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Fwebrtc-vmaf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Fwebrtc-vmaf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/livekit","download_url":"https://codeload.github.com/livekit/webrtc-vmaf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/livekit%2Fwebrtc-vmaf/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267685559,"owners_count":24127706,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-07-29T12:17:40.951Z","updated_at":"2025-07-29T12:17:41.625Z","avatar_url":"https://github.com/livekit.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WebRTC VMAF Analysis Tool\n\nThis tool is designed to perform [VMAF analysis](https://github.com/Netflix/vmaf) for WebRTC video codecs.\n\nWebRTC video, due to its real-time requirements, is often less efficient compared to the encoder's full potential. Part of the reason is due to the limited number of frames that can be kept in the encoder's frame buffer. As a result, when video is encoded with a low-latency profile, it tends to forgo some bitrate efficiency compared to the maximum capabilities of the codecs.\n\nThis presents a dilemma for WebRTC application developers: what bitrates should be used to ensure high-quality encoding?\n\n`webrtc-vmaf` is a python script that answers that question:\n\n- takes in a source video, and encodes it using a real-time profile, similar to settings used in WebRTC\n- computes VMAF score comparing the encoded version to the original input\n- performs resizing and framerate adjustments dynamically\n- supports all video codecs used in WebRTC: H.264, VP8, VP9, and AV1\n\n## Installation\n\nRequires Python 3 and FFMPEG to be installed\n\n```\ngit clone https://github.com/livekit/webrtc-vmaf.git\n```\n\n## Usage\n\n### Computing VMAF for a single input\n\n```\n% ./webrtc-vmaf.py --bitrate 1500 --width 1280 --height 720 --codec vp9 \u003cinput_video\u003e\ncomputing VMAF for vp9 at 1500\n  FourPeople_1280x720_60.webm: 92.25438 \tfps: 281\nVMAF: 92.25438 \tfps: 281\n```\n\n### Computing VMAF for multiple input files\n\nIf multiple files are given, it would also generate an average VMAF score for the different inputs.\n\n```\n% ./webrtc-vmaf.py --bitrate 1500 --width 1280 --height 720 --codec av1 \u003cinput_video1\u003e \u003cinput_video2\u003e \u003cinput_video3\u003e\n```\n\n### Comparing different bitrates\n\nYou can also pass in multiple bitrate flags for it to compute VMAF scores for them separately\n\n```\n% ./webrtc-vmaf.py --bitrate 1200 --bitrate 1300 --bitrate 1400 \\\n  --width 1280 --height 720 \\\n  --codec av1 \u003cinput_video\u003e\n```\n\n### Using example clips\n\n`download_files.sh` will download about 10GB of source clips from xiph.org. The clips are organized\ninto four categories:\n\n- video conferencing\n- sports\n- gaming\n- natural\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivekit%2Fwebrtc-vmaf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flivekit%2Fwebrtc-vmaf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flivekit%2Fwebrtc-vmaf/lists"}