{"id":17788879,"url":"https://github.com/moebiussurfing/ofxsurfingtextsubtitle","last_synced_at":"2025-10-10T15:48:21.056Z","repository":{"id":61655658,"uuid":"551761818","full_name":"moebiussurfing/ofxSurfingTextSubtitle","owner":"moebiussurfing","description":"Draws subtitles from an .SRT (or plain text) into a formatted styled paragraph with fading opacity and more.","archived":false,"fork":false,"pushed_at":"2025-06-10T17:24:10.000Z","size":6949,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-25T15:00:59.652Z","etag":null,"topics":["openframeworks","openframeworks-addon","whisper","whisper-cpp"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moebiussurfing.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-10-15T03:26:05.000Z","updated_at":"2025-06-10T17:24:13.000Z","dependencies_parsed_at":"2025-09-25T15:10:36.554Z","dependency_job_id":null,"html_url":"https://github.com/moebiussurfing/ofxSurfingTextSubtitle","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/moebiussurfing/ofxSurfingTextSubtitle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingTextSubtitle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingTextSubtitle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingTextSubtitle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingTextSubtitle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moebiussurfing","download_url":"https://codeload.github.com/moebiussurfing/ofxSurfingTextSubtitle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingTextSubtitle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279004568,"owners_count":26083736,"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-10-10T02:00:06.843Z","response_time":62,"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":["openframeworks","openframeworks-addon","whisper","whisper-cpp"],"created_at":"2024-10-27T10:24:28.288Z","updated_at":"2025-10-10T15:48:21.039Z","avatar_url":"https://github.com/moebiussurfing.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"## OVERVIEW\n\nReady to use customizable `.SRT` text subtitle (and plain text) player for `openFrameworks`. \n\n![Screenshot](Examples/example-Simple/Capture.PNG)\n\n## FEATURES\n\n- Full `.SRT` file browser for exploring the dialogs.\n- `Text Mode` for importing `.txt`. files. Split file in blocks then used as slides.\n- Fast `FontStash` render.\n- Custom `Paragraph Styles`.\n- Scalable and draggable `rectangle container`.\n- All `settings are persistent`.\n- Animated `Fade In/Out` for transparency.\n- `Transport time player` with four modes: \n\t- **STANDALONE**  \n\t  - Dialogs following the original `SRT` times and durations.\n\t- **FORCED** \n\t  - Customizable dialogs duration. Ignoring `SRT` times. Ideal for `Text` mode.\n\t- **EXTERNAL** \n\t  - Time is controlled by a video player or linked to one external control.  \n\t- **MANUAL** \n\t  - To work without loading any `SRT` file. Just pass the text slides manually.\n- `Presets Engine` for all the settings. \n\t\n## SCREENCASTS\n\n[VIDEO](https://youtu.be/kcObeooL3Pc)\n\n\u003cdetails\u003e\n  \u003csummary\u003eEXAMPLES / SCREENSHOTS\u003c/summary\u003e\n\n#### - example-Subs_ImGui \n\u003c!-- ![Screenshot](Examples/example-Subs_ImGui/Capture.PNG) --\u003e\n\n#### - example-Subs_ofxGui / ofxGui \n![Screenshot](Examples_ofxGui/example-Subs_ofxGui/Capture.PNG)\n\n#### - example-Subs_ofxGui2 / ofxGui (Video Player) \n![Screenshot](Examples_ofxGui/example-Subs_ofxGui2/Capture.PNG)\n\n#### - example-SubtitleWhisper / Whisper (Real-time audio to text) [ ADVANCED / WIP ]  \n![Screenshot](Examples_Advanced/example-SubtitleWhisper/Capture.PNG)  \nRequires this [FORK](https://github.com/moebiussurfing/ofxWhisper) of [ofxWhisper](https://github.com/roymacdonald/ofxWhisper) from [@roymacdonald](https://github.com/roymacdonald).  \n\n#### - example-SubtitleChatGPT / [ ADVANCED / WIP ]  \n![Screenshot](Examples_Advanced/example-SubtitleChatGPT/Capture.PNG)  \n\n\n[VIDEO](https://youtu.be/G8iH-0UakN4)\n\n\n\u003c/details\u003e\n\n## USAGE\n\n#### ofApp.h\n```.cpp\n#include \"ofxSurfingTextSubtitle.h\"\n\nofxSurfingTextSubtitle subs;\n```\n\n#### ofApp.cpp\n```.cpp\nvoid ofApp::setup() \n{\n\t//subs.setup(\"Alphaville.srt\"); // Optional\n}\nvoid ofApp::draw()\n {\n\tsubs.draw();\n\n\tsubs.drawGui();\n}\n```\n\n## DEPENDENCIES\n- [ofxFontStash](https://github.com/armadillu/ofxFontStash)\n- [ofxSurfingBox](https://github.com/moebiussurfing/ofxSurfingBox)\n- [ofxSurfingHelpers](https://github.com/moebiussurfing/ofxSurfingHelpers)\n- [ofxSufingImGui](https://github.com/moebiussurfing/ofxSurfingImGui)\n\n### OPTIONAL\n- **ofxGui** / Optional (oF core)\n- [ofxWhisper](https://github.com/moebiussurfing/ofxWhisper) / FORK (Only for the example)\n- [ofxChatGPT](https://github.com/moebiussurfing/ofxChatGPT) / FORK (Only for the example)\n\n### TODO\n- List and load different render fonts files on runtime.  \n- macOS testing.\n\n## TESTED SYSTEM\n* **Windows 10** / **VS 2022** / **OF ~0.11**\n\n## THANKS\n* SRT parser: file `srtparser.h`. Taken from https://github.com/Jonathhhan/ofEmscriptenExamples. Thanks to [@Jonathhhan](https://github.com/Jonathhhan). Originally by [@saurabhshri](https://github.com/saurabhshri/simple-yet-powerful-srt-subtitle-parser-cpp).  \n* [ofxPlaybackGui](https://github.com/roymacdonald/ofxPlaybackGui) from [@roymacdonald](https://github.com/roymacdonald) bundled into `/libs`. Optional to use only when using **ofxGui** as GUI. (Can be removed when using **ofxSurfingImGui**.)\n* [ofxWhisper](https://github.com/roymacdonald/ofxWhisper) from [@roymacdonald](https://github.com/roymacdonald). Powered by [whisper.cpp](https://github.com/ggerganov/whisper.cpp) from [@ggerganov](https://github.com/ggerganov).  \n* [ofxChatGPT](https://github.com/tettou771/ofxChatGPT) from [@tettou771](https://github.com/tettou771).   \n\n## LICENSE\n**MIT LICENSE**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoebiussurfing%2Fofxsurfingtextsubtitle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoebiussurfing%2Fofxsurfingtextsubtitle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoebiussurfing%2Fofxsurfingtextsubtitle/lists"}