{"id":19272083,"url":"https://github.com/ogstudio/tutorial-tool","last_synced_at":"2025-02-23T20:25:53.356Z","repository":{"id":92278529,"uuid":"91541296","full_name":"OGStudio/tutorial-tool","owner":"OGStudio","description":"Simple video editing tool to automate creation of tutorials","archived":false,"fork":false,"pushed_at":"2018-12-26T09:01:22.000Z","size":9,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-05T13:40:10.471Z","etag":null,"topics":["editing","tutorial","video"],"latest_commit_sha":null,"homepage":null,"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/OGStudio.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":"2017-05-17T06:28:16.000Z","updated_at":"2022-09-10T06:50:24.000Z","dependencies_parsed_at":"2023-06-08T06:30:31.446Z","dependency_job_id":null,"html_url":"https://github.com/OGStudio/tutorial-tool","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/OGStudio%2Ftutorial-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OGStudio%2Ftutorial-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OGStudio%2Ftutorial-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OGStudio%2Ftutorial-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OGStudio","download_url":"https://codeload.github.com/OGStudio/tutorial-tool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240373951,"owners_count":19791313,"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":["editing","tutorial","video"],"created_at":"2024-11-09T20:35:21.844Z","updated_at":"2025-02-23T20:25:53.319Z","avatar_url":"https://github.com/OGStudio.png","language":"Python","readme":"\n# tutorial-tool\n\n`tutorial-tool` is a simple video editing tool to automate creation of\ntutorials by combining text and video\n\nHere's a preview of a result:\n\n![Preview][preview]\n\n# Table of contents\n\n* [Dependencies](#deps)\n* [Installation](#install)\n* [Example](#example)\n* [Tips and tricks](#tips)\n\n\u003ca name=\"deps\"/\u003e\n\n# Dependencies\n\n* [Python][python]\n    * `tutorial-tool` is a small Python application\n* [Image magick][imagemagick]\n    * Is used to produce still images that describe tutorial steps. Still images are generated from a step's text and background image\n* [MLT][mlt]\n    * Is used to combine still images and video parts into single video\n\n\u003ca name=\"install\"/\u003e\n\n# Installation\n\n**macOS**\n\n1. Install [Homebrew][brew]\n    * `/usr/bin/ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\"`\n1. Install Image magick\n   * `brew install imagemagick`\n1. Install MLT\n   * `brew install mlt`\n1. Install tutorial-tool\n   * Download it from GitHub and move to desired location\n\n\n**TODO Windows**\n\n1. Install MSYS2?\n1. Install Image magick\n1. Install MLT\n\n**TODO Linux**\n\n1. Install Image magick\n1. Install MLT\n\n\u003ca name=\"example\"/\u003e\n\n# Example\n\n**Note**: you may use `mplayer` to get timestamps in seconds of original video\n\nHere's the usual workflow of making a new tutorial video:\n\n1. Create one or several videos of something you want to combine into a tutorial\n    * You can do it with software like [OBS Studio](https://obsproject.com).\n1. Convert the video with MLT to 25 FPS\n    * `melt -verbose -profile atsc_720p_25 source_video.mp4 -consumer avformat:destination_video.mp4 vcodec=libx264`\n1. Create background image with 1280x720 resolution\n    * You can do it with software like [GIMP](http://gimp.org).\n1. Prepare the script to build final video\n1. Bake the video\n    * `/path/to/tutorial-tool /path/to/script | sh`\n    * **Note**: `tutorial-tool` only prints Bash commands for you to execute, so you have to redirect `tutorial-tool` output to the shell\n1. Get the resulting video in your temporary directory\n\nHere's an example script:\n\n```\nbackground bg.png\ntext 5 Let's install Blender\nvideo 0:6 install_blender.mp4\ntext 5 Installing it with apt\nvideo 6:26 install_blender.mp4\ntext 5 We're still installing it\nvideo 26:56 install_blender.mp4\ntext 5 Congratulations! We just finished installng Blender\n```\n\nThis script contains all supported language constructs:\n\n* `background [image]`\n    * Specifies background **image** to use for text\n* `text [seconds] [text]`\n    * Specifies **text** to render for desired number of **seconds**\n* `video [seconds_start]:[seconds_end] [video_file]`\n    * Specifies **video_file** part that starts at **seconds_start** and ends at **seconds_end**\n\nHere is the resulting [video at YouTube][result].\n\n\u003ca name=\"tips\"/\u003e\n\n# Tips and tricks\n\n* Save video frames, one for each second\n    * `mkdir frames`\n    * `ffmpeg -i video.mp4 -vf scale=640:-1:flags=lanczos,fps=1 frames/f%03d.png`\n* Convert video frames to GIF\n    * `convert -loop 0 frames/f*.png output.gif`\n* Crop video\n    * `ffmpeg -i in.mp4 -vf crop=1024:768:0:0 -c:v libx264 -crf 0 -c:a copy out.mp4`\n\n[preview]: https://github.com/OGStudio/tutorial-tool-readme/blob/master/example/video.gif\n[python]: http://python.org\n[imagemagick]: http://imagemagick.org\n[mlt]: http://mltframework.org\n[brew]: https://brew.sh\n[sample]: example/install_blender.mp4\n[result]: https://youtu.be/ScwXSJpIXpQ\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fogstudio%2Ftutorial-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fogstudio%2Ftutorial-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fogstudio%2Ftutorial-tool/lists"}