{"id":16789894,"url":"https://github.com/nilaoda/mp4subtitleparser","last_synced_at":"2025-10-04T01:31:44.719Z","repository":{"id":41319449,"uuid":"403319609","full_name":"nilaoda/Mp4SubtitleParser","owner":"nilaoda","description":"从 mp4 中提取 wvtt/ttml 字幕. Extract embed wvtt/ttml subtitle in mp4.","archived":false,"fork":false,"pushed_at":"2022-11-29T02:42:08.000Z","size":589,"stargazers_count":41,"open_issues_count":1,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-13T13:11:19.231Z","etag":null,"topics":["ttml","vtt"],"latest_commit_sha":null,"homepage":"","language":"C#","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/nilaoda.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}},"created_at":"2021-09-05T13:45:19.000Z","updated_at":"2024-09-27T07:12:35.000Z","dependencies_parsed_at":"2023-01-22T18:45:19.032Z","dependency_job_id":null,"html_url":"https://github.com/nilaoda/Mp4SubtitleParser","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilaoda%2FMp4SubtitleParser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilaoda%2FMp4SubtitleParser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilaoda%2FMp4SubtitleParser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nilaoda%2FMp4SubtitleParser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nilaoda","download_url":"https://codeload.github.com/nilaoda/Mp4SubtitleParser/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235208979,"owners_count":18953003,"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":["ttml","vtt"],"created_at":"2024-10-13T08:28:29.785Z","updated_at":"2025-10-04T01:31:44.157Z","avatar_url":"https://github.com/nilaoda.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mp4SubtitleParser\n\nProgram to extract embed wvtt/ttml subtitle in mp4.\n\nTranslated from shaka-player project.\n\npython/js prj: https://github.com/xhlove/dash-subtitle-extractor\n\n# how to split single-file\n\n```\n\"C:\\Bento4-SDK-1-6-0-639.x86_64-microsoft-win32\\bin\\mp4split.exe\" single-file.mp4\n```\n\n# usage\n```\nMp4SubtitleParser \u003csegments dir\u003e \u003csegments search pattern\u003e [output name] [--segTimeMs=SEGMENT_DUR_IN_MS]\n```\n\n# wvtt example\n```\n│ Mp4SubtitleParser.exe\n└─samples-vtt\n        init.mp4\n        segment-1.0001.mp4\n        segment-1.0002.mp4\n        segment-1.0003.mp4\n        segment-1.0004.mp4\n        ...\n```\n\n```\nMp4SubtitleParser.exe samples-vtt *.mp4\n```\n\nyou got `output.vtt`\n\n# TTML example\n```\n│ Mp4SubtitleParser.exe\n└─samples-ttml\n        init.mp4\n        segment-1.0001.mp4\n        segment-1.0002.mp4\n        segment-1.0003.mp4\n        segment-1.0004.mp4\n        ...\n```\n\n```\nMp4SubtitleParser.exe samples-ttmls *.mp4\n```\n\nyou got `output.ttml` and `output.srt`\n\n\n# time offset for TTML\n\nin that case, every segment's basetime is `00:00:00.000`...\n\n[sample](https://github.com/nilaoda/Mp4SubtitleParser/blob/main/samples/samples-ttml(no%20init%2C%20need%20offset).zip)\n\n(put any ttml `init.mp4` to the folder, so program can recognize ttml header)\n\n```\nMp4SubtitleParser.exe \"samples-ttml(no init, need offset)\" *.mp4 --segTimeMs=60000\n```\n\nsegment-01 will add offset `+0s`  \nsegment-02 will add offset `+60s`  \nsegment-03 will add offset `+120s`  \n...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnilaoda%2Fmp4subtitleparser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnilaoda%2Fmp4subtitleparser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnilaoda%2Fmp4subtitleparser/lists"}