{"id":19745235,"url":"https://github.com/crypticsignal/bitrate-plotter","last_synced_at":"2025-04-30T07:34:06.584Z","repository":{"id":112645216,"uuid":"338646470","full_name":"CrypticSignal/bitrate-plotter","owner":"CrypticSignal","description":"Plots a graph showing the bitrate every second or the bitrate of every GOP, for an audio or video file.","archived":false,"fork":false,"pushed_at":"2024-11-04T22:46:18.000Z","size":296,"stargazers_count":23,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-04T23:29:11.587Z","etag":null,"topics":["audio","bitrate","ffprobe","gop","graph","matplotlib","plot","plotter","python","vbr","video"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CrypticSignal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-13T18:56:21.000Z","updated_at":"2024-11-04T22:46:22.000Z","dependencies_parsed_at":"2024-01-06T12:06:25.454Z","dependency_job_id":"5d4af480-8335-461d-89cb-1d116829101f","html_url":"https://github.com/CrypticSignal/bitrate-plotter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrypticSignal%2Fbitrate-plotter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrypticSignal%2Fbitrate-plotter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrypticSignal%2Fbitrate-plotter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrypticSignal%2Fbitrate-plotter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CrypticSignal","download_url":"https://codeload.github.com/CrypticSignal/bitrate-plotter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224202877,"owners_count":17272807,"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","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":["audio","bitrate","ffprobe","gop","graph","matplotlib","plot","plotter","python","vbr","video"],"created_at":"2024-11-12T02:05:58.430Z","updated_at":"2024-11-12T02:05:58.804Z","avatar_url":"https://github.com/CrypticSignal.png","language":"Python","readme":"# Bitrate Plotter\nA command line program that outputs one of the following:\n\n**[1]** A graph showing the bitrate every second. The graph can be \"filled\" or \"unfilled\".\n\nUnfilled graph example:\n\n![Unfilled graph example](\u003chttps://github.com/CrypticSignal/bitrate-variation-plotter/blob/main/Example%20Graphs/Bitrate%20every%20second%20(unfilled).png\u003e)\n\nFilled graph example:\n\n![Filled graph example](\u003chttps://github.com/CrypticSignal/bitrate-variation-plotter/blob/main/Example%20Graphs/Bitrate%20every%20second%20(filled).png\u003e)\n\n\n**[2]** Information about every Group of Pictures (GOP). You must use the `-gop` argument if this is what you are looking for. Only applicable if analysing a video file. Here's an example of the output:\n```\nDetected the following info about BigBuckBunny.mp4:\n----------------------------------------------------\nDuration: 596.474195s\nNumber of Frames: 14315\nFramerate: 24.0 FPS\n----------------------------------------------------\nGOP Statistics:\n\nGOP count: 266\nAverage number of packets per GOP: 53.8\nGOP duration range: 0.500s to 2.500s\nAverage GOP duration: 2.242s\nGOP size range: 0.54 to 9.09 Megabits\nGOP bitrate range: 0.51 to 4.07 Mbps\nAverage GOP bitrate: 2.00 Mbps\n\n✓ Average PTS interval matches expected frame rate\n✓ PTS intervals are consistent\n[Info] GOP durations are inconsistent:\nMin GOP Duration: 0.5000006666665892\nMax GOP Duration: 2.5000006666667027\n```\n\n# Requirements\n- Python 3.7+\n- FFprobe executable in your PATH.\n- `pip install -r requirements.txt`\n\n# Usage\nYou can find the output of `python main.py -h` below:\n```\nusage: main.py [-h] -f FILE_PATH [-dts] [-gop] [-g {filled,unfilled}] [-s STREAM_SPECIFIER]\n\noptions:\n  -h, --help            show this help message and exit\n  -f, --file-path FILE_PATH\n                        Enter the path of the file that you want to analyse.\n                        If the path contains a space, it must be surrounded in double quotes.\n                        Example: -f \"C:/Users/H/Desktop/my file.mp4\"\n  -dts                  Use DTS instead of PTS when calculating bitrates.\n                        Only applicable if analysing a video file.\n  -gop                  Output information about every Group Of Pictures (GOP).\n                        Only applicable if analysing a video file.\n  -g, --graph-type {filled,unfilled}\n                        Specify the type of graph that should be created. The default graph type is \"unfilled\".\n                        To see the difference between a filled and unfilled graph, check out the example graph files.\n  -s, --stream-specifier STREAM_SPECIFIER\n                        Use FFmpeg stream specifier syntax to specify the audio/video stream that you want to analyse.\n                        The defaults for audio and video files are a:0 and V:0, respectively.\n                        Note that stream index starts at 0.\n                        As an example, to target the 2nd audio stream: --stream-specifier a:1\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrypticsignal%2Fbitrate-plotter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrypticsignal%2Fbitrate-plotter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrypticsignal%2Fbitrate-plotter/lists"}