{"id":13616075,"url":"https://github.com/monyone/biim","last_synced_at":"2025-08-20T06:33:20.836Z","repository":{"id":79152297,"uuid":"478614555","full_name":"monyone/biim","owner":"monyone","description":"LL-HLS implementation written in Python3","archived":false,"fork":false,"pushed_at":"2024-11-17T01:58:58.000Z","size":188,"stargazers_count":47,"open_issues_count":1,"forks_count":9,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-12-10T05:41:43.435Z","etag":null,"topics":["hls","ll-hls","llhls","low-latency","low-latency-hls","m3u8","mpegts"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/monyone.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-06T15:16:21.000Z","updated_at":"2024-11-22T23:06:19.000Z","dependencies_parsed_at":"2024-06-08T00:39:34.209Z","dependency_job_id":"808169b1-1420-40f9-97cb-db16842d5450","html_url":"https://github.com/monyone/biim","commit_stats":null,"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monyone%2Fbiim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monyone%2Fbiim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monyone%2Fbiim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/monyone%2Fbiim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/monyone","download_url":"https://codeload.github.com/monyone/biim/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230400616,"owners_count":18219831,"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":["hls","ll-hls","llhls","low-latency","low-latency-hls","m3u8","mpegts"],"created_at":"2024-08-01T20:01:23.263Z","updated_at":"2024-12-19T08:08:48.229Z","avatar_url":"https://github.com/monyone.png","language":"Python","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"# biim\n\nAn example for Apple Low Lantency HLS Packager and Origin\n\n## Feature\n  * MPEG-TS Demuxing and Apple LL-HLS Packaging in pure Python3 (using asyncio)\n  * Packaging MPEG-TS stream to HLS media segment (MPEG-TS or fmp4)\n    * `main.py`: Packaging MPEG-TS stream to MPEG-TS segment (for H.264/AVC, AAC, ID3)\n      * Support TIMED-ID3 Metadata PassThrough\n    * `fmp4.py`: Packaging MPEG-TS stream to fmp4 segment (for H.265/HEVC, AAC, ID3)\n      * Support TIMED-ID3 Metadata to EMSG-ID3 Conversion\n  * Support LL-HLS Feature (1s Latency with HTTP/2, 2s Latency with HTTP/1.1)\n    * Support Blocking Request\n    * Support EXT-X-PRELOAD-HINT with Chunked Transfer\n    * NOTE: HTTP/2 is currently not Supported. If use with HTTP/2, please proxing HTTP/2 to HTTP/1.1.\n  * In Memory (On the fly) LL-HLS Serving\n    * Not use disk space for LL-HLS Delivery\n\n## Dependency\n\n* aiohttp\n\n## Usege\n\nIngest MPEG-TS Stream to biim's STDIN!\n\n```bash\n# mpegts (for H.264)\nffmpeg xxx -f mpegts - | ./main.py --port 8080\n# fmp4 (for H.264/H.265)\nffmpeg xxx -f mpegts - | ./fmp4.py --port 8080\n\n# watch http://localhost:8080/playlist.m3u8\n```\n\n### Options\n\n* `-i`, `--input`,\n  * Specify input source.\n  * if not Specified, use STDIN.\n  * if Specified file, throttled for pseudo live serving.\n  * DEFAULT: STDIN\n* `-t`, `--target_duration`\n  * Specify minmum TARGETDURATION for LL-HLS\n  * DEFAULT: 1\n* `-p`, `--part_duration`\n  * Specify PART-TARGET for LL-HLS\n  * DEFAULT: 0.1\n* `-w`, `--window_size`\n  * Specify Live Window for LL-HLS\n  * if Not Specifed, window size is Infinify, for EVENT(DVR).\n  * DEFAULT: Infinity (None)\n* `--port`\n  * Specify Serving PORT for LL-HLS\n  * DEFAULT: 8080\n\n### Example (Generate Test Stream H.265(libx265)/AAC With Timestamp)\n\n```bash\nffmpeg -re \\\n  -f lavfi -i testsrc=700x180:r=30000/1001 \\\n  -f lavfi -i sine=frequency=1000 \\\n  -vf \"settb=AVTB,setpts='trunc(PTS/1K)*1K+st(1,trunc(RTCTIME/1K))-1K*trunc(ld(1)/1K)',drawtext=fontsize=60:fontcolor=black:text='%{localtime}.%{eif\\:1M*t-1K*trunc(t*1K)\\:d\\:3}'\" \\\n  -c:v libx265 -tune zerolatency -preset ultrafast -r 30 -g 15 -pix_fmt yuv420p \\\n  -c:a aac -ac 1 -ar 48000 \\\n  -f mpegts - | ./fmp4.py -t 1 -p 0.15 -w 10 --port 8080\n# watch http://localhost:8080/playlist.m3u8\n```\n\n## Special Thanks\n\n* [xtne6f](https://github.com/xtne6f): C++ ReImplementation ([tsmemseg](https://github.com/xtne6f/tsmemseg)) and Report ISOBMFF related misc bugs.\n* [tsukumi](https://github.com/tsukumijima): Very helpful advice and implementation to biim's Type Definition.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonyone%2Fbiim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmonyone%2Fbiim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonyone%2Fbiim/lists"}