{"id":13767081,"url":"https://github.com/selsta/hlsdl","last_synced_at":"2025-05-16T18:09:54.235Z","repository":{"id":24274114,"uuid":"27668503","full_name":"selsta/hlsdl","owner":"selsta","description":"C program to download VoD HLS (.m3u8) files","archived":false,"fork":false,"pushed_at":"2024-04-09T04:59:13.000Z","size":337,"stargazers_count":656,"open_issues_count":44,"forks_count":161,"subscribers_count":44,"default_branch":"master","last_synced_at":"2025-04-12T17:00:00.932Z","etag":null,"topics":["hls","hls-stream","m3u8"],"latest_commit_sha":null,"homepage":"","language":"C","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/selsta.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":"2014-12-07T11:51:16.000Z","updated_at":"2025-03-28T21:46:16.000Z","dependencies_parsed_at":"2024-01-07T09:40:48.373Z","dependency_job_id":"6a76ef86-2367-420d-9c3e-9154e76ec1d1","html_url":"https://github.com/selsta/hlsdl","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/selsta%2Fhlsdl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selsta%2Fhlsdl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selsta%2Fhlsdl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selsta%2Fhlsdl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/selsta","download_url":"https://codeload.github.com/selsta/hlsdl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254582907,"owners_count":22095518,"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","hls-stream","m3u8"],"created_at":"2024-08-03T16:01:04.373Z","updated_at":"2025-05-16T18:09:54.218Z","avatar_url":"https://github.com/selsta.png","language":"C","funding_links":[],"categories":["HLS","HarmonyOS"],"sub_categories":["Talks Presentations Podcasts","Windows Manager"],"readme":"hlsdl\n=====\n\nThis program converts .m3u8 playlists (using fragmented MPEG-2 Transport Streams) to a .ts video. It supports decryption of both AES-128 and SAMPLE-AES encryption.\n\nRequirements\n------------\n\nThis program requires libcurl and libcrypto libraries.\n\nBuild\n-----\n\n![hlsdl build](https://github.com/selsta/hlsdl/workflows/hlsdl%20build/badge.svg)\n\nLinux:\n`make \u0026\u0026 make install \u0026\u0026 make clean`\n\nWindows:\nhttps://github.com/selsta/hlsdl/blob/master/msvc/BUID_WINDOWS.txt\n\nDocker: `docker build -t hlsdl:latest .`\n\n\nUsage and Options\n-----------------\n`./hlsdl [options] url`\n\n```\ndocker run -v ./data:/var/hlsdl/data --rm -it hlsdl:latest hlsdl [options] url\n```\n\n---------------------------\n```\n-b ... Automatically choose the best quality.\n\n-W ... Choose largest width lower or equal than this.\n\n-H ... Choose largest height lower or equal than this.\n\n-A ... Select audio language.\n\n-v ... Verbose more information.\n\n-o ... Choose name of output file (\"-\" alias for stdout).\n\n-u ... Set custom HTTP User-Agent header.\n\n-h ... Set custom HTTP header.\n\n-p ... Set proxy uri.\n\n-k ... Allow to replace part of AES key uri - old.\n\n-n ... Allow to replace part of AES key uri - new.\n\n-f ... Force overwriting the output file.\n\n-F ... Force ignore detection of DRM.\n\n-K ... Force AES key value (hexstring)\n\n-q ... Print less to the console.\n\n-d ... Print the openssl decryption command.\n\n-t ... Print the links to the .ts files.\n\n-s ... Set live start offset in seconds.\n\n-i ... Set live stream download duration in seconds.\n\n-e ... Set refresh delay in seconds.\n\n-r ... Set max retries at open.\n\n-w ... Set max download segment retries.\n\n-a ... Set additional url to the audio media playlist.\n\n-c ... Treat HTTP code 206 as 200 even if request was made without range header.\n\n-C ... the file name of file holding cookie data in the old Netscape / Mozilla cookie data format.\n```\n\nToDo\n-----\n* support for Fragmented MPEG-4 playlist\n* support for EXT-X-MAP in the MPEG-2 Transport Streams playlist\n\nIdeas\n-----\n\n- Multithreading\n\nLicense\n-------\n\n[MIT License](https://github.com/selsta/hlsdl/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselsta%2Fhlsdl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselsta%2Fhlsdl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselsta%2Fhlsdl/lists"}